Lot of stuff

master
bzt 2019-12-04 11:37:44 +01:00
parent 4c674d02d9
commit ba505c16c6
38 changed files with 6541 additions and 1151 deletions

View File

@ -27,14 +27,13 @@ You can convert MTS files and generate preview images for them from a script wit
Interactive Mode
----------------
Actually the editor has two independent components. One is running outside of the game. In case of a GUI, a picture can tell more
than thousand words. Read the editor's [User Manual](https://gitlab.com/bztsrc/mtsedit/blob/master/docs/usage.md) for more details.
Actually the editor consist of two independent components. One is running outside of the game, and since it's a GUI application,
I think a picture can tell more than thousand words. Read the editor's [User Manual](https://gitlab.com/bztsrc/mtsedit/blob/master/docs/usage.md)
for more details.
<img src="https://gitlab.com/bztsrc/mtsedit/raw/master/docs/mtsedit.png">
The User Interface is translatable. It should detect your computer's language automatically, but if not, set the `LANG`
environment variable. Supported languages: "en" English, "hu" Magyar, "es" Español, "fr" Français, "de" Deutch, "pl" Polski,
"ru" русский. Note that block names are user provided, there's no translation for those.
The User Interface is translatable. Supported languages: English, Magyar, Español, Français, Deutch, Polski and русский.
The other component is a Minetest mod, under the [mt-mod](https://gitlab.com/bztsrc/mtsedit/tree/master/mt-mod) directory. This
small Lua script runs inside the game, and can import your edited MTS files into the game's world. It can also save MTS files

BIN
data/Grass_Dry_00.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

File diff suppressed because it is too large Load Diff

659
data/blocks_de.txt Normal file
View File

@ -0,0 +1,659 @@
Acacia_Bark=Akazienrinde
Acacia_Bark_Slab=Akazienrindenplatte
Acacia_Bark_Stair=Akazienrindentreppe
Acacia_Button=Akazien-Knopf
Acacia_Fence=Akazien-Zaun
Acacia_Fence_Gate=Akazienzaun Tor
Acacia_Leaves=Akazienblätter
Acacia=Akazie
Acacia_Plank=Acacia Plank
Acacia_Pressure_Plate=Akazien-Druckplatte
Acacia_Sapling_Flower_Pot=Akazien-Bäumchen-Blumentopf
Acacia_Sapling=Akazien-Bäumchen
Acacia_Slab=Akazienplatte
Acacia_Stair=Akazien-Treppe
Acacia_Trapdoor=Akazien-Falltür
Activator_Rail=Aktivierungsschiene
Allium_Flower_Pot=Allium Blumentopf
Allium=Lauch
Andesite=Andesit
Andesite_Slab=Andesitplatte
Andesite_Stair=Andesit Treppe
Andesite_Wall=Andesite Wand
Anvil=Amboss
Azure_Bluet_Flower_Pot=Azure Bluet Blumentopf
Azure_Bluet=Azure Bluet
Barrier=Barriere
Bed_Red=Bett rot
Bedrock=Grundgestein
Bell=Glocke
Birch_Bark=Birkenrinde
Birch_Bark_Slab=Birkenrindenplatte
Birch_Bark_Stair=Birkenrindentreppe
Birch_Button=Birken-Knopf
Birch_Door=Birkentür
Birch_Fence=Birkenzaun
Birch_Fence_Gate=Birkenzaun Tor
Birch_Leaves=Birkenblätter
Birch=Birke
Birch_Plank=Birkenbrett
Birch_Pressure_Plate=Birkendruckplatte
Birch_Sapling_Flower_Pot=Birkenschössling Blumentopf
Birch_Sapling=Birkenschössling
Birch_Slab=Birkenplatte
Birch_Stair=Birkentreppe
Birch_Trapdoor=Birken-Falltür
Black_Bed=Schwarzes Bett
Black_Carpet=Schwarzer Teppich
Black_Concrete=Schwarzer Beton
Black_Concrete_Powder=Schwarzbetonpulver
Black_Concrete_Slab=Schwarze Betonplatte
Black_Concrete_Stair=Schwarze Betontreppe
Black_Glazed_Terracotta=Schwarz glasierte Terrakotta
Black_Shulker_Box=Schwarze Shulker Box
Black_Stained_Glass=Schwarzes Buntglas
Black_Stained_Glass_Pane=Schwarze Buntglasscheibe
Black_Terracotta=Schwarzer Terrakotta
Black_Wool=Schwarze Wolle
Blue_Bed=Blaues Bett
Blue_Carpet=Blauer Teppich
Blue_Concrete=Blauer Beton
Blue_Concrete_Powder=Blaues konkretes Pulver
Blue_Concrete_Slab=Blaue Betonplatte
Blue_Concrete_Stair=Blaue Betontreppe
Blue_Glazed_Terracotta=Blau glasierte Terrakotta
Blue_Orchid_Flower_Pot=Blumentopf der blauen Orchidee
Blue_Orchid=Blaue orchidee
Blue_Shulker_Box=Blaue Shulker Box
Blue_Stained_Glass=Blaues Buntglas
Blue_Stained_Glass_Pane=Blaue Buntglasscheibe
Blue_Terracotta=Blaue Terrakotta
Blue_Wool=Blaue Wolle
Bone_Block=Knochenblock
Bookshelf=Bücherregal
Brewing_Stand=Brau Stand
Brick_Block=Ziegelsteinblock
Brick_Slab=Ziegelplatte
Brick_Stair=Ziegelsteintreppe
Brick_Wall=Ziegelwand
Brown_Bed=Braunes Bett
Brown_Carpet=Brauner Teppich
Brown_Concrete=Brauner Beton
Brown_Concrete_Powder=Braunes Betonpulver
Brown_Concrete_Slab=Braune Betonplatte
Brown_Concrete_Stair=Braune Betontreppe
Brown_Glazed_Terracotta=Braun glasierte Terrakotta
Brown_Mushroom=Brauner Pilz
Brown_Mushroom_Flower_Pot=Brauner Pilz Blumentopf
Brown_Shulker_Box=Brown Shulker Box
Brown_Stained_Glass=Braunes Buntglas
Brown_Stained_Glass_Pane=Brown-Buntglasscheibe
Brown_Terracotta=Braune Terrakotta
Brown_Wool=Braune Wolle
Burning_Furnace=Brennofen
Cactus=Kaktus
Cactus_Flower_Pot=Kaktus-Blumentopf
Cake=Kuchen
Cauldron=Kessel
Chest=Brust
Chiseled_Quartz_Block=Gemeißelter Quarzblock
Chiseled_Red_Sandstone=Gemeißelter roter Sandstein
Chorus_Flower=Chor Blume
Chorus_Plant_Stem=Chorus Pflanzenstamm
Clay=Lehm
Coal_Block=Kohleblock
Coal_Ore=Kohlenerz
Coarse_Dirt=Grobschmutz
Cobblestone=Kopfsteinpflaster
Cobblestone_Slab=Kopfsteinpflaster
Cobblestone_Stair=Kopfsteintreppe
Cobblestone_Wall=Kopfsteinpflaster
Cobweb=Spinnennetz
Command_Block=Kommandoblock
Cracked_Stone_Brick_Slab=Gebrochene Steinziegelsteinplatte
Cracked_Stone_Brick_Stair=Gebrochene Steinziegelsteintreppe
Crafting_Table=Basteltisch
Creeper_Head=Creeper Head
Cut_Red_Sandstone=Schneiden Sie roten Sandstein
Cyan_Bed=Cyan Bett
Cyan_Carpet=Cyan Teppich
Cyan_Concrete=Cyan Beton
Cyan_Concrete_Powder=Cyan-blaues Betonpulver
Cyan_Concrete_Slab=Cyan Betonplatte
Cyan_Concrete_Stair=Cyan-blaue Betontreppe
Cyan_Glazed_Terracotta=Cyan glasierte Terrakotta
Cyan_Shulker_Box=Cyan Shulker Box
Cyan_Stained_Glass=Cyan Glasmalerei
Cyan_Stained_Glass_Pane=Cyan-blaue Buntglasscheibe
Cyan_Terracotta=Cyan Terrakotta
Cyan_Wool=Cyan Wolle
Dandelion=Löwenzahn
Dandelion_Flower_Pot=Löwenzahn Blumentopf
Dark_Oak=Dunkle Eiche
Dark_Oak_Bark=Dunkle Eichenrinde
Dark_Oak_Bark_Slab=Dunkle Eichenrindenplatte
Dark_Oak_Bark_Stair=Dunkle Eichenrindentreppe
Dark_Oak_Button=Dunkle Eiche Button
Dark_Oak_Fence=Dunkle Eiche Zaun
Dark_Oak_Fence_Gate=Dunkle Eiche Zaun Tor
Dark_Oak_Leaves=Dunkle Eichenblätter
Dark_Oak_Plank=Dark Oak Plank
Dark_Oak_Pressure_Plate=Druckplatte aus dunkler Eiche
Dark_Oak_Sapling_Flower_Pot=Dunkle Eiche Bäumchen Blumentopf
Dark_Oak_Sapling=Schössling aus dunkler Eiche
Dark_Oak_Slab=Dunkle Eichenplatte
Dark_Oak_Stair=Dunkle Eichentreppe
Dark_Oak_Trapdoor=Dunkle Eiche Falltür
Dark_Prismarine_Slab=Dunkle Prisma-Platte
Dark_Prismarine_Stair=Dunkle Prismatreppe
Daylight_Sensor=Tageslicht-Sensor
Dead_Bush=Toter Busch
Dead_Bush_Flower_Pot=Toter Busch Blumentopf
Dead_Chorus_Flower=Tote Chorblume
Detector_Rail=Detektorschiene
Diamond_Block=Diamant-Block
Diamond_Ore=Diamant-Erz
Diorite=Diorit
Diorite_Slab=Diorit-Platte
Diorite_Stair=Dioritentreppe
Diorite_Wall=Diorit Wand
Dirt=Schmutz
Disabled_Hopper=Behinderter Hopper
Disabled_Side_Hopper=Behindertenseitenbehälter
Dispenser=Spender
Double_Acacia_Bark_Slab=Doppelakazienrindenplatte
Double_Acacia_Slab=Doppelakazienplatte
Double_Andesite_Slab=Doppelte Andesitplatte
Double_Birch_Bark_Slab=Doppelte Birkenrindenplatte
Double_Birch_Slab=Doppelte Birkenplatte
Double_Black_Concrete_Slab=Doppelte schwarze Betonplatte
Double_Blue_Concrete_Slab=Doppelte blaue Betonplatte
Double_Brick_Slab=Doppelte Backsteinplatte
Double_Brown_Concrete_Slab=Doppelte braune Betonplatte
Double_Cobblestone_Slab=Doppelte Kopfsteinpflasterplatte
Double_Cracked_Stone_Brick_Slab=Doppelte gebrochene Steinziegelstein-Platte
Double_Cyan_Concrete_Slab=Doppelte cyan-blaue Betonplatte
Double_Dark_Oak_Bark_Slab=Doppelte dunkle Eichenrindenplatte
Double_Dark_Oak_Slab=Doppelte dunkle Eiche Platte
Double_Dark_Prismarine_Slab=Doppelte dunkle Prisma-Platte
Double_Diorite_Slab=Doppelte Dioritplatte
Double_End_Stone_Brick_Slab=Double End Stone Brick Platte
Double_Gold_Block_Slab=Doppelte Goldblockplatte
Double_Granite_Slab=Doppelte Granitplatte
Double_Green_Concrete_Slab=Doppelte grüne Betonplatte
Double_Grey_Concrete_Slab=Doppelte graue Betonplatte
Double_Iron_Block_Slab=Doppelte Eisenblockplatte
Double_Jungle_Bark_Slab=Doppelte Dschungelrindenplatte
Double_Jungle_Slab=Doppelte Dschungelplatte
Double_Lapis_Lazuli_Slab=Doppelte Lapislazuli-Platte
Double_Light_Blue_Concrete_Slab=Doppelte hellblaue Betonplatte
Double_Light_Grey_Concrete_Slab=Doppelte hellgraue Betonplatte
Double_Lime_Concrete_Slab=Doppelte Kalk-Betonplatte
Double_Magenta_Concrete_Slab=Doppelte magentarote Betonplatte
Double_Mossy_Stone_Brick_Slab=Doppelte moosige Steinziegelsteinplatte
Double_Mossy_Stone_Slab=Doppelte moosige Steinplatte
Double_Nether_Brick_Slab=Doppelte Nether-Ziegelplatte
Double_Oak_Bark_Slab=Doppelte Eichenrindenplatte
Double_Oak_Slab=Doppelte Eichenplatte
Double_Orange_Concrete_Slab=Doppelte orange Betonplatte
Double_Pink_Concrete_Slab=Doppelte rosa Betonplatte
Double_Polished_Andesite_Slab=Doppelpolierte Andesitplatte
Double_Polished_Diorite_Slab=Doppelt polierte Dioritplatte
Double_Polished_Granite_Slab=Doppelpolierte Granitplatte
Double_Polished_Stone_Slab=Doppelte polierte Steinplatte
Double_Prismarine_Brick_Slab=Doppelte Prisma-Ziegelplatte
Double_Prismarine_Slab=Doppelte Prisma-Platte
Double_Purple_Concrete_Slab=Doppelte lila Betonplatte
Double_Purpur_Slab=Doppelte Purpur-Platte
Double_Quartz_Slab=Doppelte Quarzplatte
Double_Red_Concrete_Slab=Doppelte rote Betonplatte
Double_Red_Nether_Brick_Slab=Doppelte rote Nether-Ziegelsteinplatte
Double_Red_Sandstone_Slab=Doppelte rote Sandsteinplatte
Double_Sandstone_Slab=Doppelte Sandsteinplatte
Double_Smooth_Quartz_Slab=Doppelte glatte Quarzplatte
Double_Smooth_Red_Sandstone_Slab=Doppelte glatte rote Sandsteinplatte
Double_Smooth_Sandstone_Slab=Doppelte glatte Sandsteinplatte
Double_Spruce_Bark_Slab=Doppelte Fichtenrindenplatte
Double_Spruce_Slab=Doppelte Fichtenplatte
Double_Stone_Brick_Slab=Doppelte Steinplatte
Double_Stone_Slab=Doppelte Steinplatte
Double_Tallgrass=Doppeltes hohes Gras
Double_White_Concrete_Slab=Doppelte weiße Betonplatte
Double_Yellow_Concrete_Slab=Doppelte gelbe Betonplatte
Dragon_Egg=Drachenei
Dropper=Tropfer
Emerald_Block=Smaragdblock
Emerald_Ore=Smaragderz
Enchanting_Table=Bezaubernde Tabelle
Ender_Chest=Ender Kiste
End_Portal=Portal beenden
End_Portal_Frame=End Portal Frame
End_Portal_Frame_with_Eye_of_Ender=End Portal Frame mit Eye of Ender
End_Rod=Endstange
End_Stone=End Stone
End_Stone_Brick=Ende Stein Ziegel
End_Stone_Brick_Slab=Ende Stein Ziegelplatte
End_Stone_Brick_Stair=Ende Stein Ziegel Treppe
End_Stone_Brick_Wall=Ende Steinmauer
Eternal_Fire=Ewiges Feuer
Faceless_Pumpkin=Gesichtsloser Kürbis
Farmland=Ackerland
Fence=Zaun
Fern_Flower_Pot=Farn Blumentopf
Fern=Farn
Fire=Feuer
Flower_Pot=Blumentopf
Flowing_Lava=Fließende Lava
Flowing_Nether_Lava=Fließende Lava
Flowing_River_Water=Fließendes Flusswasser
Flowing_Water=Fließendes Wasser
Frosted_Ice=Gefrostetes Eis
Furnace=Ofen
Glass=Glas
Glass_Pane=Glasscheibe
Glowstone=Leuchtstein
Gold_Block=Goldblock
Gold_Block_Slab=Goldblock-Platte
Gold_Block_Stair=Goldblock Treppe
Gold_Ore=Golderz
Granite=Granit
Granite_Slab=Granitplatte
Granite_Stair=Granittreppe
Granite_Wall=Granitwand
Grass=Gras
Grass_Block=Grass Block
Grass_Dry=Gras trocken
Grass_Path=Grasweg
Gravel=Kies
Green_Bed=Grünes Bett
Green_Carpet=Grüner Teppich
Green_Concrete=Grüner Beton
Green_Concrete_Powder=Grünbetonpulver
Green_Concrete_Slab=Grüne Betonplatte
Green_Concrete_Stair=Grüne Betontreppe
Green_Glazed_Terracotta=Grün glasierte Terrakotta
Green_Shulker_Box=Grüne Shulker Box
Green_Stained_Glass=Grünes Buntglas
Green_Stained_Glass_Pane=Grüne Buntglasscheibe
Green_Terracotta=Grüne Terrakotta
Green_Wool=Grüne Wolle
Grey_Bed=Graues Bett
Grey_Carpet=Grauer Teppich
Grey_Concrete=Grauer Beton
Grey_Concrete_Powder=Graues Betonpulver
Grey_Concrete_Slab=Graue Betonplatte
Grey_Concrete_Stair=Graue Betontreppe
Grey_Glazed_Terracotta=Grau glasierte Terrakotta
Grey_Shulker_Box=Graue Shulker Box
Grey_Stained_Glass=Graues Buntglas
Grey_Stained_Glass_Pane=Graue Buntglasscheibe
Grey_Terracotta=Grauer Terrakotta
Grey_Wool=Graue Wolle
Hay_Bale=Hay Bale
Hopper=Trichter
Huge_Brown_Mushroom_All-Faces_Stem=Riesige braune Pilz All-Faces Stem
Huge_Brown_Mushroom_Block=Enormer brauner Pilz-Block
Huge_Brown_Mushroom_Stem=Riesiger brauner Pilzstamm
Huge_Red_Mushroom_All-Faces_Stem=Riesige rote Pilz All-Faces Stem
Huge_Red_Mushroom_Block=Sehr großer roter Pilz-Block
Huge_Red_Mushroom_Stem=Riesiger roter Pilzstamm
Human_Head=Menschlicher Kopf
Hydrated_Farmland=Hydriertes Ackerland
Ice=Eis
Ice_Slab=Eisplatte
Ice_Stair=Eistreppe
Infested_Chiseled_Stone_Brick=Befallener gemeißelter Steinziegelstein
Infested_Cobblestone=Befallener Kopfsteinpflasterstein
Infested_Cracked_Stone_Brick=Befallener gebrochener Steinziegelstein
Infested_Mossy_Stone_Brick=Befallener moosiger Steinziegelstein
Infested_Stone=Befallener Stein
Infested_Stone_Brick=Befallener Steinziegelstein
Inverted_Daylight_Sensor=Invertierter Tageslichtsensor
Iron_Bar=Eisenstange
Iron_Block=Eisenblock
Iron_Block_Slab=Eisenblockplatte
Iron_Block_Stair=Eiserne Blocktreppe
Iron_Door=Eiserne Tür
Iron_Ore=Eisenerz
Iron_Trapdoor=Eiserne Falltür
Item_Frame=Artikel Rahmen
Jack_o_Lantern=Jack o Laterne
Jungle_Bark=Dschungel-Barke
Jungle_Bark_Slab=Dschungelrindenplatte
Jungle_Bark_Stair=Dschungel-Borkentreppe
Jungle_Button=Dschungel-Knopf
Jungle_Fence=Dschungel-Zaun
Jungle_Fence_Gate=Dschungelzauntor
Jungle_Leaves=Dschungel-Blätter
Jungle=Urwald
Jungle_Plank=Dschungel-Planke
Jungle_Pressure_Plate=Dschungel-Druckplatte
Jungle_Sapling_Flower_Pot=Dschungel Bäumchen Blumentopf
Jungle_Sapling=Dschungel-Bäumchen
Jungle_Slab=Dschungel-Platte
Jungle_Stair=Dschungeltreppe
Jungle_Trapdoor=Dschungel-Falltür
Ladder=Leiter
Lapis_Lazuli_Block=Lapislazuli-Block
Lapis_Lazuli_Ore=Lapislazuli Erz
Lapis_Lazuli_Slab=Lapislazuli-Platte
Lapis_Lazuli_Stair=Lapislazuli-Treppe
Large_Fern=Großer Farn
Lava_Source=Lavaquelle
Leaves=Blätter
Lever=Hebel
Light_Blue_Bed=Hellblaues Bett
Light_Blue_Carpet=Hellblauer Teppich
Light_Blue_Concrete=Hellblauer Beton
Light_Blue_Concrete_Powder=Hellblaues Betonpulver
Light_Blue_Concrete_Slab=Hellblaue Betonplatte
Light_Blue_Concrete_Stair=Hellblaue Betontreppe
Light_Blue_Glazed_Terracotta=Hellblau glasierte Terrakotta
Light_Blue_Shulker_Box=Leichte blaue Shulker Box
Light_Blue_Stained_Glass=Hellblaues Buntglas
Light_Blue_Stained_Glass_Pane=Hellblaue Buntglasscheibe
Light_Blue_Terracotta=Hellblaue Terrakotta
Light_Blue_Wool=Hellblaue Wolle
Light_Grey_Bed=Hellgraues Bett
Light_Grey_Carpet=Hellgrauer Teppich
Light_Grey_Concrete=Hellgrauer Beton
Light_Grey_Concrete_Powder=Hellgraues Betonpulver
Light_Grey_Concrete_Slab=Hellgraue Betonplatte
Light_Grey_Concrete_Stair=Hellgraue Betontreppe
Light_Grey_Glazed_Terracotta=Hellgrau glasierte Terrakotta
Light_Grey_Shulker_Box=Hellgraue Shulker Box
Light_Grey_Stained_Glass=Hellgraues Buntglas
Light_Grey_Stained_Glass_Pane=Hellgraue Buntglasscheibe
Light_Grey_Terracotta=Hellgrauer Terrakotta
Light_Grey_Wool=Hellgraue Wolle
Lilac=Lila
Lime_Bed=Kalk-Bett
Lime_Carpet=Kalk Teppich
Lime_Concrete=Kalk Beton
Lime_Concrete_Powder=Kalk-Betonpulver
Lime_Concrete_Slab=Kalk-Betonplatte
Lime_Concrete_Stair=Kalkbetontreppe
Lime_Glazed_Terracotta=Kalk glasierte Terrakotta
Lime_Shulker_Box=Kalk Shulker Box
Lime_Stained_Glass=Kalk Glasmalerei
Lime_Stained_Glass_Pane=Kalk-Buntglasscheibe
Lime_Terracotta=Kalk-Terrakotta
Lime_Wool=Kalk Wolle
Lit_Redstone_Ore=Lit Redstone Erz
Magenta_Bed=Magenta Bett
Magenta_Carpet=Magenta Teppich
Magenta_Concrete=Magenta Beton
Magenta_Concrete_Powder=Magenta Betonpulver
Magenta_Concrete_Slab=Magenta Betonplatte
Magenta_Concrete_Stair=Magenta Betontreppe
Magenta_Glazed_Terracotta=Magenta glasierte Terrakotta
Magenta_Shulker_Box=Magenta Shulker Box
Magenta_Stained_Glass=Magenta Glasmalerei
Magenta_Stained_Glass_Pane=Magentarote Buntglasscheibe
Magenta_Terracotta=Magenta Terrakotta
Magenta_Wool=Magenta Wolle
Magma_Block=Magma Block
Mature_Beetroot_Plant=Reife Rote-Bete-Pflanze
Mature_Carrot_Plant=Reife Karottenpflanze
Mature_Cocoa_Pod=Reife Kakaofrucht
Mature_Melon_Stem=Reifer Melonenstamm
Mature_Nether_Wart=Reife Netherwarze
Mature_Potato_Plant=Reife Kartoffelpflanze
Mature_Pumpkin_Stem=Reifer Kürbisstamm
Mature_Wheat_Plant=Reife Weizenpflanze
Medium_Cocoa_Pod=Mittlere Kakaofrucht
Melon=Melone
Mob_Spawner=Mob Spawner
Mossy_Cobblestone=Moosiger Kopfsteinpflasterstein
Mossy_Cobblestone_Wall=Moosige Kopfsteinpflasterwand
Mossy_Stone_Brick=Moosiger Steinziegelstein
Mossy_Stone_Brick_Slab=Moosige Steinziegelplatte
Mossy_Stone_Brick_Stair=Moosige Steinziegelsteintreppe
Mossy_Stone_Brick_Wall=Moosige Steinbacksteinmauer
Mossy_Stone_Slab=Moosige Steinplatte
Mossy_Stone_Stair=Moosige Steintreppe
Mycelium=Myzel
Nether_Brick_Block=Nether-Ziegelsteinblock
Nether_Brick_Fence=Nether-Ziegelzaun
Nether_Brick_Fence_Gate=Nether Ziegel Zaun Tor
Nether_Brick_Slab=Nether Brick Slab
Nether_Brick_Stair=Netherziegelsteintreppe
Nether_Brick_Wall=Nether Backsteinmauer
Nether_Lava_Source=Ätherische Lavaquelle
Nether_Portal=Netherportal
Nether_Quartz_Ore=Netherquarzerz
Nether_Wart_Block=Netherwarzenblock
Note_Block=Notizblock
Oak=Eiche
Oak_Bark=Eichenrinde
Oak_Bark_Slab=Eichenrindenplatte
Oak_Bark_Stair=Eichenrindentreppe
Oak_Button=Eiche Button
Oak_Door=Eichentür
Oak_Fence_Gate=Eiche Zaun Tor
Oak_Ladder=Eichenleiter
Oak_Plank=Eiche Planke
Oak_Pressure_Plate=Eiche Druckplatte
Oak_Sapling=Eiche Schössling
Oak_Sapling_Flower_Pot=Eiche Bäumchen Blumentopf
Oak_Slab=Eichenplatte
Oak_Stair=Eichentreppe
Oak_Wall_Sign=Eiche Wandschild
Observer=Beobachter
Obsidian_Glass_Pane=Obsidian-Glasscheibe
Obsidian_Glass_Slab=Obsidian-Glasplatte
Obsidian_Glass_Stair=Obsidian Glastreppe
Obsidian_Slab=Obsidianplatte
Obsidian_Stair=Obsidian-Treppe
Orange_Bed=Orange Bett
Orange_Carpet=Orange Teppich
Orange_Concrete=Orange Beton
Orange_Concrete_Powder=Orange Betonpulver
Orange_Concrete_Slab=Orange Betonplatte
Orange_Concrete_Stair=Orange Betontreppe
Orange_Glazed_Terracotta=Orange glasierte Terrakotta
Orange_Shulker_Box=Orange Shulker Box
Orange_Stained_Glass=Orange Buntglas
Orange_Stained_Glass_Pane=Orange Buntglasscheibe
Orange_Terracotta=Orange Terrakotta
Orange_Tulip_Flower_Pot=Orange Tulpe Blumentopf
Orange_Tulip=Orange Tulpe
Orange_Wool=Orange Wolle
Oxeye_Daisy_Flower_Pot=Ochsenauge Daisy Blumentopf
Oxeye_Daisy=Ochsenauge Gänseblümchen
Packed_Ice=Packeis
Peony=Pfingstrose
Pillar_Quartz_Block=Säulenquarzblock
Pink_Bed=Rosa Bett
Pink_Carpet=Rosa Teppich
Pink_Concrete=Rosa Beton
Pink_Concrete_Powder=Rosa Betonpulver
Pink_Concrete_Slab=Rosa Betonplatte
Pink_Concrete_Stair=Rosa Betontreppe
Pink_Glazed_Terracotta=Rosa glasierte Terrakotta
Pink_Shulker_Box=Pink Shulker Box
Pink_Stained_Glass=Rosa Glasmalerei
Pink_Stained_Glass_Pane=Rosa Buntglasscheibe
Pink_Terracotta=Rosa Terrakotta
Pink_Tulip_Flower_Pot=Rosa Tulpenblumentopf
Pink_Tulip=Rosafarbene Tulpe
Pink_Wool=Rosa Wolle
Piston=Kolben
Polished_Andesite=Polierter Andesit
Polished_Andesite_Slab=Polierte Andesitplatte
Polished_Andesite_Stair=Polierte Andesittreppe
Polished_Diorite=Polierter Diorit
Polished_Diorite_Slab=Polierte Dioritplatte
Polished_Diorite_Stair=Polierte Dioritentreppe
Polished_Granite=Polierter Granit
Polished_Granite_Slab=Polierte Granitplatte
Polished_Granite_Stair=Polierte Granittreppe
Polished_Stone=Polierter Stein
Poppy=Mohn
Poppy_Flower_Pot=Mohn Blumentopf
Powered_Rail=Angetriebene Schiene
Powered_Redstone_Spot=Angetriebener Redstone Spot
Powered_Redstone_Trail=Powered Redstone Trail
Prismarine_Brick=Prismarine Brick
Prismarine_Brick_Slab=Prismarine Brick Slab
Prismarine_Brick_Stair=Prismarine Backsteintreppe
Prismarine_Dark=Prismarine Dark
Prismarine_Slab=Prismarine-Platte
Prismarine_Stair=Prismatische Treppe
Prismarine_Wall=Prismarine Wand
Pumpkin=Kürbis
Purple_Bed=Lila Bett
Purple_Carpet=Lila Teppich
Purple_Concrete=Lila Beton
Purple_Concrete_Powder=Lila Betonpulver
Purple_Concrete_Slab=Lila Betonplatte
Purple_Concrete_Stair=Lila Betontreppe
Purple_Glazed_Terracotta=Lila glasierte Terrakotta
Purple_Shulker_Box=Lila Shulker Box
Purple_Stained_Glass=Lila Glasmalerei
Purple_Stained_Glass_Pane=Lila Buntglasscheibe
Purple_Terracotta=Lila Terrakotta
Purple_Wool=Lila Wolle
Purpur_Block=Purpur Block
Purpur_Pillar=Purpur-Säule
Purpur_Slab=Purpur-Platte
Purpur_Stair=Purpur-Treppe
Quartz_Block=Quarzblock
Quartz_Slab=Quarzplatte
Quartz_Stair=Quarztreppe
Rail=Schiene
Realm_Barrier=Reichsbarriere
Red_Bed=Rotes Bett
Red_Carpet=Roter Teppich
Red_Concrete=Roter Beton
Red_Concrete_Powder=Rotes Betonpulver
Red_Concrete_Slab=Rote Betonplatte
Red_Concrete_Stair=Rote Betontreppe
Red_Glazed_Terracotta=Rot glasierte Terrakotta
Red_Mushroom=Roter Pilz
Red_Mushroom_Flower_Pot=Roter Pilz Blumentopf
Red_Nether_Brick_Block=Red Nether Brick Block
Red_Nether_Brick_Fence_Gate=Red Nether Brick Fence Gate
Red_Nether_Brick_Fence=Red Nether Brick Zaun
Red_Nether_Brick_Slab=Rote Nether-Ziegelplatte
Red_Nether_Brick_Stair=Rote Netherziegelsteintreppe
Red_Nether_Brick_Wall=Rote Nether-Backsteinmauer
Red_Sand=Roter Sand
Red_Sandstone=Roter Sandstein
Red_Sandstone_Slab=Rote Sandsteinplatte
Red_Sandstone_Stair=Rote Sandsteintreppe
Red_Sandstone_Wall=Rote Sandsteinmauer
Red_Shulker_Box=Red Shulker Box
Red_Stained_Glass=Rotes Buntglas
Red_Stained_Glass_Pane=Rote Buntglasscheibe
Redstone=roter Stein
Redstone_Block=Redstone Block
Redstone_Comparator_(Off)=Redstone-Komparator (Aus)
Redstone_Comparator_(On)=Redstone-Komparator (Ein)
Redstone_Lamp=Redstone-Lampe
Redstone_Ore=Redstone-Erz
Redstone_Repeater=Redstone Repeater
Redstone_Repeater_(Powered)=Redstone Repeater (powered)
Redstone_Torch=Redstone-Fackel
Redstone_Torch_(off)=Redstone-Fackel (aus)
Redstone_Trail=Redstone Trail
Red_Terracotta=Rote Terrakotta
Red_Tulip_Flower_Pot=Rote Tulpe Blumentopf
Red_Tulip=Rote Tulpe
Red_Wool=Rote Wolle
Riverwaterlogged_Sponge=Flusswasserschwamm
River_Water_Source=Flusswasserquelle
Rose_Bush=Rosenstrauch
Sandstone=Sandstein
Sandstone_Carved=Sandstein geschnitzt
Sandstone_Slab=Sandsteinplatte
Sandstone_Smooth=Sandstein glatt
Sandstone_Stair=Sandsteintreppe
Sandstone_Wall=Sandsteinmauer
Sea_Lantern=Seelaterne
Side_Hopper=Seitlicher Trichter
Skeleton_Skull=Skeleton Schädel
Slime_Block=Schleimblock
Smooth_Quartz=Glatter Quarz
Smooth_Quartz_Slab=Glatte Quarzplatte
Smooth_Quartz_Stair=Glatte Quarztreppe
Smooth_Red_Sandstone=Glatter roter Sandstein
Smooth_Red_Sandstone_Slab=Glatte rote Sandsteinplatte
Smooth_Red_Sandstone_Stair=Glatte rote Sandsteintreppe
Smooth_Sandstone=Glatter Sandstein
Smooth_Sandstone_Slab=Glatte Sandsteinplatte
Smooth_Sandstone_Stair=Glatte Sandsteintreppe
Snow_Block=Schneeblock
Snow_Layer=Schneeschicht
Soul_Sand=Seelensand
Sponge=Schwamm
Spruce_Bark=Fichtenrinde
Spruce_Bark_Slab=Fichtenrindenplatte
Spruce_Bark_Stair=Fichtenrindentreppe
Spruce_Button=Fichte Button
Spruce_Fence=Fichte Zaun
Spruce_Fence_Gate=Fichte Zaun Tor
Spruce_Leaves=Fichtenblätter
Spruce_Log=Fichte Log
Spruce=Fichte
Spruce_Pressure_Plate=Fichte Druckplatte
Spruce_Sapling_Flower_Pot=Fichte Bäumchen Blumentopf
Spruce_Sapling=Fichte Bäumchen
Spruce_Slab=Fichtenplatte
Spruce_Stair=Fichtentreppe
Spruce_Stair=Fichtentreppe
Spruce_Trapdoor=Fichte Falltür
Sticky_Piston=Klebriger Kolben
Stone=Stein
Stone_Brick=Steinziegel
Stone_Brick_Carved=Stein Ziegel geschnitzt
Stone_Brick_Cracked=Stein Ziegel geknackt
Stone_Brick_Slab=Stein Backsteinplatte
Stone_Brick_Stair=Stein Ziegel Treppe
Stone_Brick_Stair=Stein Ziegel Treppe
Stone_Brick_Wall=Stein Backsteinmauer
Stone_Button=Steinknopf
Stone_Pressure_Plate=Steindruckplatte
Stone_Slab=Steinplatte
Stone_Stair=Steintreppe
Sugar_Canes=Zuckerrohr
Sunflower=Sonnenblume
Tall_Grass=Hohes Gras
Terracotta=Terrakotta
Torch=Fackel
Trapdoor=Falltür
Trapped_Chest=Gefangene Truhe
Vines=Reben
Void=Leere
Waterlily=Seerose
Waterlogged_Sponge=Wasserdurchtränkter Schwamm
Water_Source=Wasserquelle
White_Bed=Weißes Bett
White_Carpet=Weißer Teppich
White_Concrete=Weißer Beton
White_Concrete_Powder=Weißes Betonpulver
White_Concrete_Slab=Weiße Betonplatte
White_Concrete_Stair=Weiße Betontreppe
White_Glass_Pane=Weiße Glasscheibe
White_Glazed_Terracotta=Weiß glasierte Terrakotta
White_Shulker_Box=Weiße Shulker Box
White_Stained_Glass=Weißes Buntglas
White_Stained_Glass_Pane=Weiße Buntglasscheibe
White_Terracotta=Weißer Terrakotta
White_Tulip_Flower_Pot=Weiße Tulpe Blumentopf
White_Tulip=Weiße Tulpe
Wither_Skeleton_Skull=Wither Skeleton Skull
Wool=Wolle
Yellow_Bed=Gelbes Bett
Yellow_Carpet=Gelber Teppich
Yellow_Concrete=Gelber Beton
Yellow_Concrete_Powder=Gelbes konkretes Pulver
Yellow_Concrete_Slab=Gelbe Betonplatte
Yellow_Concrete_Stair=Gelbe Betontreppe
Yellow_Glazed_Terracotta=Gelb glasierte Terrakotta
Yellow_Shulker_Box=Gelbe Shulker Box
Yellow_Stained_Glass=Gelbes Buntglas
Yellow_Stained_Glass_Pane=Gelbe Buntglasscheibe
Yellow_Terracotta=Gelbe Terrakotta
Yellow_Wool=Gelbe Wolle
Zombie_Head=Zombie-Kopf

659
data/blocks_es.txt Normal file
View File

@ -0,0 +1,659 @@
Acacia_Bark=Corteza de acacia
Acacia_Bark_Slab=Losa de corteza de acacia
Acacia_Bark_Stair=Escalera de corteza de acacia
Acacia_Button=Botón de acacia
Acacia_Fence=Valla de acacia
Acacia_Fence_Gate=Puerta de valla de acacia
Acacia_Leaves=Hojas de acacia
Acacia_Plank=Tablón de acacia
Acacia_Pressure_Plate=Plato de presión de acacia
Acacia_Sapling_Flower_Pot=Maceta de arbolito de acacia
Acacia_Sapling=Árbol de acacia
Acacia_Slab=Losa de acacia
Acacia_Stair=Escalera de acacia
Acacia_Trapdoor=Trampilla de acacia
Activator_Rail=Carril activador
Allium_Flower_Pot=Allium Flower Pot
Andesite=Andesita
Andesite_Slab=Losa de andesita
Andesite_Stair=Escalera de andesita
Andesite_Wall=Muro de andesita
Anvil=Yunque
Azure_Bluet_Flower_Pot=Maceta azul azur
Azure_Bluet=Bluet azur
Barrier=Barrera
Bed_Red=Cama roja
Bedrock=Base
Bell=Campana
Birch_Bark=Corteza de abedul
Birch_Bark_Slab=Losa de corteza de abedul
Birch_Bark_Stair=Escalera de corteza de abedul
Birch_Button=Botón de abedul
Birch_Door=Puerta de abedul
Birch_Fence=Valla de abedul
Birch_Fence_Gate=Puerta de valla de abedul
Birch_Leaves=Hojas de abedul
Birch=Abedul
Birch_Plank=Tablón de abedul
Birch_Pressure_Plate=Placa de presión de abedul
Birch_Sapling_Flower_Pot=Maceta de arbolito de abedul
Birch_Sapling=Retoño de abedul
Birch_Slab=Losa de abedul
Birch_Stair=Escalera de abedul
Birch_Trapdoor=Trampilla de abedul
Black_Bed=Cama negra
Black_Carpet=Alfombra negra
Black_Concrete=Hormigón negro
Black_Concrete_Powder=Polvo de hormigón negro
Black_Concrete_Slab=Losa de hormigón negro
Black_Concrete_Stair=Escalera de hormigón negro
Black_Glazed_Terracotta=Terracota Glaseada Negra
Black_Shulker_Box=Caja Shulker Negra
Black_Stained_Glass=Vidrieras negras
Black_Stained_Glass_Pane=Panel de vidrieras negras
Black_Terracotta=Terracota Negra
Black_Wool=Lana negra
Blue_Bed=Cama azul
Blue_Carpet=Alfombra azul
Blue_Concrete=Hormigón Azul
Blue_Concrete_Powder=Polvo de concreto azul
Blue_Concrete_Slab=Losa de hormigón azul
Blue_Concrete_Stair=Escalera de hormigón azul
Blue_Glazed_Terracotta=Terracota Glaseada Azul
Blue_Orchid_Flower_Pot=Maceta de orquídeas azules
Blue_Orchid=Orquídea azul
Blue_Shulker_Box=Caja Shulker Azul
Blue_Stained_Glass=Vidrieras azules
Blue_Stained_Glass_Pane=Panel de vidrieras azules
Blue_Terracotta=Terracota azul
Blue_Wool=Lana azul
Bone_Block=Bloque de hueso
Bookshelf=Estante para libros
Brewing_Stand=Stand de elaboración de la cerveza
Brick_Block=Bloque de ladrillo
Brick_Slab=Losa de ladrillo
Brick_Stair=Escalera de ladrillo
Brick_Wall=Pared de ladrillo
Brown_Bed=Cama Marron
Brown_Carpet=Alfombra marrón
Brown_Concrete=Hormigon Marron
Brown_Concrete_Powder=Polvo de hormigón marrón
Brown_Concrete_Slab=Losa de hormigón marrón
Brown_Concrete_Stair=Escalera de hormigón marrón
Brown_Glazed_Terracotta=Terracota Glaseada Marrón
Brown_Mushroom=Champiñón Marrón
Brown_Mushroom_Flower_Pot=Maceta de setas marrones
Brown_Shulker_Box=Shulker Box Marrón
Brown_Stained_Glass=Vidrieras Marrones
Brown_Stained_Glass_Pane=Panel de vidrieras marrones
Brown_Terracotta=Terracota marrón
Brown_Wool=Lana marrón
Burning_Furnace=Horno ardiente
Cactus_Flower_Pot=Maceta de cactus
Cake=pastel
Cauldron=Caldera
Chest=Pecho
Chiseled_Quartz_Block=Bloque de cuarzo cincelado
Chiseled_Red_Sandstone=Arenisca Roja Cincelada
Chorus_Flower=Flor de coro
Chorus_Plant_Stem=Tallo de planta de coro
Clay=Arcilla
Coal_Block=Bloque de carbón
Coal_Ore=Mineral de Carbón
Coarse_Dirt=Suciedad gruesa
Cobblestone=Guijarro
Cobblestone_Slab=Losa de adoquines
Cobblestone_Stair=Escalera de adoquines
Cobblestone_Wall=Pared de adoquines
Cobweb=Telaraña
Command_Block=Bloque de comandos
Cracked_Stone_Brick_Slab=Losa de ladrillo de piedra agrietada
Cracked_Stone_Brick_Stair=Escalera de ladrillo de piedra agrietada
Crafting_Table=Mesa de artesanía
Creeper_Head=Cabeza de la enredadera
Cut_Red_Sandstone=Cortar piedra arenisca roja
Cyan_Bed=Cama cian
Cyan_Carpet=Alfombra Cian
Cyan_Concrete=Concreto Cian
Cyan_Concrete_Powder=Polvo de hormigón cian
Cyan_Concrete_Slab=Losa de hormigón cian
Cyan_Concrete_Stair=Escalera de hormigón cian
Cyan_Glazed_Terracotta=Terracota Glaseada Cian
Cyan_Shulker_Box=Caja de shulker cian
Cyan_Stained_Glass=Vidrieras cian
Cyan_Stained_Glass_Pane=Panel de vidrieras cian
Cyan_Terracotta=Terracota Cian
Cyan_Wool=Lana cian
Dandelion=Diente de león
Dandelion_Flower_Pot=Maceta de diente de león
Dark_Oak=Roble oscuro
Dark_Oak_Bark=Corteza de roble oscuro
Dark_Oak_Bark_Slab=Losa de corteza de roble oscuro
Dark_Oak_Bark_Stair=Escalera de corteza de roble oscuro
Dark_Oak_Button=Botón de roble oscuro
Dark_Oak_Fence=Valla de roble oscuro
Dark_Oak_Fence_Gate=Puerta de valla de roble oscuro
Dark_Oak_Leaves=Hojas de roble oscuro
Dark_Oak_Plank=Tablón de roble oscuro
Dark_Oak_Pressure_Plate=Plato de presión de roble oscuro
Dark_Oak_Sapling_Flower_Pot=Maceta de arbolito de roble oscuro
Dark_Oak_Sapling=Retoño de roble oscuro
Dark_Oak_Slab=Losa de roble oscuro
Dark_Oak_Stair=Escalera de roble oscuro
Dark_Oak_Trapdoor=Trampilla de roble oscuro
Dark_Prismarine_Slab=Losa prismarina oscura
Dark_Prismarine_Stair=Escalera Prismarina Oscura
Daylight_Sensor=Sensor de luz diurna
Dead_Bush=Bush muerto
Dead_Bush_Flower_Pot=Maceta de arbustos muertos
Dead_Chorus_Flower=Flor de coro muerto
Detector_Rail=Carril detector
Diamond_Block=Bloque de diamante
Diamond_Ore=Mineral de diamante
Diorite=Diorita
Diorite_Slab=Losa Diorita
Diorite_Stair=Escalera Diorite
Diorite_Wall=Muro Diorita
Dirt=Suciedad
Disabled_Hopper=Tolva discapacitada
Disabled_Side_Hopper=Tolva lateral deshabilitada
Dispenser=Dispensador
Double_Acacia_Bark_Slab=Losa de corteza de acacia doble
Double_Acacia_Slab=Losa doble de acacia
Double_Andesite_Slab=Losa doble de andesita
Double_Birch_Bark_Slab=Losa de corteza de abedul doble
Double_Birch_Slab=Losa de abedul doble
Double_Black_Concrete_Slab=Losa de hormigón doble negro
Double_Blue_Concrete_Slab=Losa de hormigón doble azul
Double_Brick_Slab=Losa de ladrillo doble
Double_Brown_Concrete_Slab=Losa de hormigón doble marrón
Double_Cobblestone_Slab=Losa de adoquines dobles
Double_Cracked_Stone_Brick_Slab=Losa de ladrillo de piedra doblemente agrietada
Double_Cyan_Concrete_Slab=Losa de hormigón doble cian
Double_Dark_Oak_Bark_Slab=Losa de corteza de roble oscuro doble
Double_Dark_Oak_Slab=Losa de roble oscuro doble
Double_Dark_Prismarine_Slab=Losa prismarina doble oscura
Double_Diorite_Slab=Losa Diorita Doble
Double_End_Stone_Brick_Slab=Losa de ladrillo de piedra de doble extremo
Double_Gold_Block_Slab=Losa de doble bloque de oro
Double_Granite_Slab=Losa de granito doble
Double_Green_Concrete_Slab=Losa de hormigón doble verde
Double_Grey_Concrete_Slab=Losa de hormigón doble gris
Double_Iron_Block_Slab=Losa de doble bloque de hierro
Double_Jungle_Bark_Slab=Losa de corteza de doble jungla
Double_Jungle_Slab=Losa doble de la selva
Double_Lapis_Lazuli_Slab=Losa de lapislázuli doble
Double_Light_Blue_Concrete_Slab=Losa de hormigón azul claro doble
Double_Light_Grey_Concrete_Slab=Losa de hormigón gris claro doble
Double_Lime_Concrete_Slab=Losa de hormigón de doble cal
Double_Magenta_Concrete_Slab=Losa de hormigón magenta doble
Double_Mossy_Stone_Brick_Slab=Losa de ladrillo de piedra doble musgo
Double_Mossy_Stone_Slab=Losa de piedra doble musgo
Double_Nether_Brick_Slab=Losa de ladrillo abisal doble
Double_Oak_Bark_Slab=Losa de corteza de roble doble
Double_Oak_Slab=Doble losa de roble
Double_Orange_Concrete_Slab=Losa de hormigón doble naranja
Double_Pink_Concrete_Slab=Losa de hormigón doble rosa
Double_Polished_Andesite_Slab=Losa de Andesita doble pulida
Double_Polished_Diorite_Slab=Losa Diorita Doble Pulida
Double_Polished_Granite_Slab=Losa de granito pulido doble
Double_Polished_Stone_Slab=Losa de piedra pulida doble
Double_Prismarine_Brick_Slab=Losa de ladrillo doble prismarina
Double_Prismarine_Slab=Losa Prismarina Doble
Double_Purple_Concrete_Slab=Losa de hormigón doble púrpura
Double_Purpur_Slab=Losa doble de Purpur
Double_Quartz_Slab=Losa doble de cuarzo
Double_Red_Concrete_Slab=Losa de hormigón rojo doble
Double_Red_Nether_Brick_Slab=Losa de ladrillo rojo abisal doble
Double_Red_Sandstone_Slab=Losa de arenisca roja doble
Double_Sandstone_Slab=Losa doble de arenisca
Double_Smooth_Quartz_Slab=Losa de cuarzo liso doble
Double_Smooth_Red_Sandstone_Slab=Losa de piedra arenisca roja lisa doble
Double_Smooth_Sandstone_Slab=Losa de arenisca lisa doble
Double_Spruce_Bark_Slab=Losa de corteza de abeto doble
Double_Spruce_Slab=Losa de abeto doble
Double_Stone_Brick_Slab=Losa de ladrillo de piedra doble
Double_Stone_Slab=Losa de piedra doble
Double_Tallgrass=Doble hierba alta
Double_White_Concrete_Slab=Losa de hormigón doble blanco
Double_Yellow_Concrete_Slab=Losa de hormigón doble amarilla
Dragon_Egg=Huevo de dragón
Dropper=Cuentagotas
Emerald_Block=Bloque esmeralda
Emerald_Ore=Mineral esmeralda
Enchanting_Table=Mesa encantadora
Ender_Chest=Ender pecho
End_Portal=Portal final
End_Portal_Frame=Fin del marco del portal
End_Portal_Frame_with_Eye_of_Ender=Fin del marco del portal con Eye of Ender
End_Rod=Varilla final
End_Stone=Piedra final
End_Stone_Brick=End Stone Brick
End_Stone_Brick_Slab=End Stone Brick Slab
End_Stone_Brick_Stair=Escalera de piedra de ladrillo final
End_Stone_Brick_Wall=Pared de ladrillo de piedra final
Eternal_Fire=Fuego eterno
Faceless_Pumpkin=Calabaza sin rostro
Farmland=Tierras de cultivo
Fence=Cerca
Fern_Flower_Pot=Maceta de helecho
Fern=Helecho
Fire=Fuego
Flower_Pot=Maceta
Flowing_Lava=Lava que fluye
Flowing_Nether_Lava=Lava abisal que fluye
Flowing_River_Water=Agua del río que fluye
Flowing_Water=Agua que fluye
Frosted_Ice=Hielo helado
Furnace=Horno
Glass=Vaso
Glass_Pane=Panel de vidrio
Glowstone=Piedra de resplandor
Gold_Block=Bloque de oro
Gold_Block_Slab=Losa de bloque de oro
Gold_Block_Stair=Escalera de bloques de oro
Gold_Ore=Metal de oro
Granite=Granito
Granite_Slab=Losa de granito
Granite_Stair=Escalera de granito
Granite_Wall=Pared de granito
Grass=Hierba
Grass_Block=Bloque de césped
Grass_Dry=Hierba seca
Grass_Path=Camino de hierba
Gravel=Grava
Green_Bed=Cama verde
Green_Carpet=Alfombra verde
Green_Concrete=Hormigón verde
Green_Concrete_Powder=Polvo de hormigón verde
Green_Concrete_Slab=Losa de hormigón verde
Green_Concrete_Stair=Escalera de hormigón verde
Green_Glazed_Terracotta=Terracota Glaseada Verde
Green_Shulker_Box=Caja Shulker Verde
Green_Stained_Glass=Vidrieras Verdes
Green_Stained_Glass_Pane=Panel de vidrieras verdes
Green_Terracotta=Terracota verde
Green_Wool=Lana verde
Grey_Bed=Cama gris
Grey_Carpet=Alfombra gris
Grey_Concrete=Hormigón gris
Grey_Concrete_Powder=Polvo de hormigón gris
Grey_Concrete_Slab=Losa de hormigón gris
Grey_Concrete_Stair=Escalera de hormigón gris
Grey_Glazed_Terracotta=Terracota Glaseada Gris
Grey_Shulker_Box=Caja gris de shulker
Grey_Stained_Glass=Vidrieras grises
Grey_Stained_Glass_Pane=Panel de vidrieras grises
Grey_Terracotta=Terracota gris
Grey_Wool=Lana gris
Hay_Bale=Fardo de heno
Hopper=Tolva
Huge_Brown_Mushroom_All-Faces_Stem=Tallo enorme de hongos marrones de todas las caras
Huge_Brown_Mushroom_Block=Enorme bloque de hongos marrones
Huge_Brown_Mushroom_Stem=Enorme tallo de seta marrón
Huge_Red_Mushroom_All-Faces_Stem=Tallo enorme de setas rojas de todas las caras
Huge_Red_Mushroom_Block=Enorme bloque de setas rojas
Huge_Red_Mushroom_Stem=Enorme tallo de seta roja
Human_Head=Cabeza humana
Hydrated_Farmland=Tierras de cultivo hidratadas
Ice=Hielo
Ice_Slab=Losa de hielo
Ice_Stair=Escalera de hielo
Infested_Chiseled_Stone_Brick=Ladrillo de piedra cincelada infestada
Infested_Cobblestone=Adoquines infestados
Infested_Cracked_Stone_Brick=Ladrillo de piedra agrietado infestado
Infested_Mossy_Stone_Brick=Ladrillo de piedra cubierto de musgo infestado
Infested_Stone=Piedra infestada
Infested_Stone_Brick=Ladrillo de piedra infestada
Inverted_Daylight_Sensor=Sensor de luz diurna invertida
Iron_Bar=Barra de acero
Iron_Block=Bloque de hierro
Iron_Block_Slab=Losa de bloque de hierro
Iron_Block_Stair=Escalera de bloque de hierro
Iron_Door=Puerta de Hierro
Iron_Ore=Mineral de hierro
Iron_Trapdoor=Trampilla de hierro
Item_Frame=Cuadro de artículo
Jack_o_Lantern=Jack o Lantern
Jukebox=Tocadiscos tragamonedas
Jungle_Bark=Corteza de la selva
Jungle_Bark_Slab=Losa de corteza de selva
Jungle_Bark_Stair=Escalera de corteza de selva
Jungle_Button=Botón de la selva
Jungle_Fence=Cerca de la selva
Jungle_Fence_Gate=Jungle Fence Gate
Jungle_Leaves=Hojas de la selva
Jungle=Selva
Jungle_Plank=Tablón de la selva
Jungle_Pressure_Plate=Plato de presión de la selva
Jungle_Sapling_Flower_Pot=Jarrón de maceta de jungla
Jungle_Sapling=Árbol joven de la jungla
Jungle_Slab=Losa de la selva
Jungle_Stair=Escalera de la jungla
Jungle_Trapdoor=Trampilla de la selva
Ladder=Escalera
Lapis_Lazuli_Block=Bloque de lapislázuli
Lapis_Lazuli_Ore=Mineral de lapislázuli
Lapis_Lazuli_Slab=Losa de lapislázuli
Lapis_Lazuli_Stair=Escalera de lapislázuli
Large_Fern=Helecho grande
Lava_Source=Fuente de lava
Leaves=Hojas
Lever=Palanca
Light_Blue_Bed=Cama azul claro
Light_Blue_Carpet=Alfombra azul claro
Light_Blue_Concrete=Hormigón celeste
Light_Blue_Concrete_Powder=Polvo de hormigón azul claro
Light_Blue_Concrete_Slab=Losa de hormigón azul claro
Light_Blue_Concrete_Stair=Escalera de hormigón azul claro
Light_Blue_Glazed_Terracotta=Terracota Glaseada Azul Claro
Light_Blue_Shulker_Box=Shulker Box azul claro
Light_Blue_Stained_Glass=Vidrieras azul claro
Light_Blue_Stained_Glass_Pane=Panel de vidrieras azul claro
Light_Blue_Terracotta=Terracota azul claro
Light_Blue_Wool=Lana azul claro
Light_Grey_Bed=Cama gris claro
Light_Grey_Carpet=Alfombra gris claro
Light_Grey_Concrete=Hormigón gris claro
Light_Grey_Concrete_Powder=Polvo de hormigón gris claro
Light_Grey_Concrete_Slab=Losa de hormigón gris claro
Light_Grey_Concrete_Stair=Escalera de hormigón gris claro
Light_Grey_Glazed_Terracotta=Terracota Glaseada Gris Claro
Light_Grey_Shulker_Box=Caja Shulker Gris Claro
Light_Grey_Stained_Glass=Vidrieras gris claro
Light_Grey_Stained_Glass_Pane=Panel de vidrieras gris claro
Light_Grey_Terracotta=Terracota gris claro
Light_Grey_Wool=Lana gris claro
Lilac=Lila
Lime_Bed=Cama de cal
Lime_Carpet=Alfombra de cal
Lime_Concrete=Hormigón de cal
Lime_Concrete_Powder=Polvo de hormigón de cal
Lime_Concrete_Slab=Losa de hormigón de cal
Lime_Concrete_Stair=Escalera de hormigón de cal
Lime_Glazed_Terracotta=Terracota Glaseada con Lima
Lime_Shulker_Box=Caja Shulker de Lima
Lime_Stained_Glass=Vidrieras de cal
Lime_Stained_Glass_Pane=Panel de vidrieras de cal
Lime_Terracotta=Terracota de lima
Lime_Wool=Lana de lima
Lit_Redstone_Ore=Mineral de piedra roja encendido
Magenta_Bed=Cama magenta
Magenta_Carpet=Alfombra magenta
Magenta_Concrete=Hormigón magenta
Magenta_Concrete_Powder=Polvo de hormigón magenta
Magenta_Concrete_Slab=Losa de hormigón magenta
Magenta_Concrete_Stair=Escalera de hormigón magenta
Magenta_Glazed_Terracotta=Terracota Glaseada Magenta
Magenta_Shulker_Box=Caja Shulker Magenta
Magenta_Stained_Glass=Vidrieras magentas
Magenta_Stained_Glass_Pane=Panel de vidrio manchado magenta
Magenta_Terracotta=Terracota magenta
Magenta_Wool=Lana magenta
Magma_Block=Bloque de magma
Mature_Beetroot_Plant=Planta de remolacha madura
Mature_Carrot_Plant=Planta de zanahoria madura
Mature_Cocoa_Pod=Vaina de cacao madura
Mature_Melon_Stem=Tallo de melón maduro
Mature_Nether_Wart=Verruga abisal madura
Mature_Potato_Plant=Planta de papa madura
Mature_Pumpkin_Stem=Tallo maduro de calabaza
Mature_Wheat_Plant=Planta de trigo maduro
Medium_Cocoa_Pod=Vaina de cacao mediana
Melon=Melón
Mob_Spawner=Engendrador de la mafia
Mossy_Cobblestone=Adoquín cubierto de musgo
Mossy_Cobblestone_Wall=Muro de adoquines cubiertos de musgo
Mossy_Stone_Brick=Ladrillo de piedra cubierto de musgo
Mossy_Stone_Brick_Slab=Losa de ladrillo de piedra cubierta de musgo
Mossy_Stone_Brick_Stair=Escalera de ladrillo de piedra cubierta de musgo
Mossy_Stone_Brick_Wall=Pared de ladrillo de piedra cubierta de musgo
Mossy_Stone_Slab=Losa de piedra cubierta de musgo
Mossy_Stone_Stair=Escalera de piedra cubierta de musgo
Mycelium=Micelio
Nether_Brick_Block=Bloque de ladrillo abisal
Nether_Brick_Fence=Valla de ladrillo abisal
Nether_Brick_Fence_Gate=Puerta de valla de ladrillo abisal
Nether_Brick_Slab=Losa de ladrillo abisal
Nether_Brick_Stair=Escalera de ladrillo abisal
Nether_Brick_Wall=Pared de ladrillo abisal
Nether_Lava_Source=Fuente de lava abisal
Nether_Portal=Portal abisal
Nether_Quartz_Ore=Mineral de cuarzo abisal
Nether_Wart_Block=Bloque de verruga abisal
Note_Block=Block de Notas
Oak=Roble
Oak_Bark=La corteza de roble
Oak_Bark_Slab=Losa de corteza de roble
Oak_Bark_Stair=Escalera de corteza de roble
Oak_Button=Botón de roble
Oak_Door=Puerta de roble
Oak_Fence_Gate=Puerta de valla de roble
Oak_Ladder=Escalera de roble
Oak_Plank=Tablón de roble
Oak_Pressure_Plate=Plato de presión de roble
Oak_Sapling=Árbol de roble
Oak_Sapling_Flower_Pot=Maceta de roble joven
Oak_Slab=Losa de roble
Oak_Stair=Escalera de roble
Oak_Wall_Sign=Letrero de pared de roble
Observer=Observador
Obsidian=Obsidiana
Obsidian_Glass_Pane=Cristal de obsidiana
Obsidian_Glass_Slab=Losa de cristal de obsidiana
Obsidian_Glass_Stair=Escalera de cristal de obsidiana
Obsidian_Slab=Losa de obsidiana
Obsidian_Stair=Escalera de obsidiana
Orange_Bed=Cama Naranja
Orange_Carpet=Alfombra naranja
Orange_Concrete=Hormigón Naranja
Orange_Concrete_Powder=Polvo de hormigón naranja
Orange_Concrete_Slab=Losa de hormigón naranja
Orange_Concrete_Stair=Escalera de hormigón naranja
Orange_Glazed_Terracotta=Terracota Glaseada Naranja
Orange_Shulker_Box=Caja Naranja Shulker
Orange_Stained_Glass=Vidrieras Naranjas
Orange_Stained_Glass_Pane=Cristal Naranja Vidriera
Orange_Terracotta=Terracota naranja
Orange_Tulip_Flower_Pot=Maceta de tulipán naranja
Orange_Tulip=Tulipán naranja
Orange_Wool=Lana naranja
Oxeye_Daisy_Flower_Pot=Margarita de ojo de buey maceta
Oxeye_Daisy=Margarita
Packed_Ice=Hielo envasado
Peony=Peonía
Pillar_Quartz_Block=Bloque de cuarzo
Pink_Bed=Cama rosa
Pink_Carpet=Alfombra rosa
Pink_Concrete=Hormigón Rosa
Pink_Concrete_Powder=Polvo de hormigón rosa
Pink_Concrete_Slab=Losa de hormigón rosa
Pink_Concrete_Stair=Escalera de hormigón rosa
Pink_Glazed_Terracotta=Terracota Glaseada Rosa
Pink_Shulker_Box=Caja Shulker Rosa
Pink_Stained_Glass=Vidrieras rosas
Pink_Stained_Glass_Pane=Panel de vidrieras rosas
Pink_Terracotta=Terracota rosa
Pink_Tulip_Flower_Pot=Maceta de tulipán rosa
Pink_Tulip=Tulipán rosa
Pink_Wool=Lana rosa
Piston=Pistón
Polished_Andesite=Andesita pulida
Polished_Andesite_Slab=Losa pulida de andesita
Polished_Andesite_Stair=Escalera de andesita pulida
Polished_Diorite=Diorita pulida
Polished_Diorite_Slab=Losa de diorita pulida
Polished_Diorite_Stair=Escalera Diorita Pulida
Polished_Granite=Granito pulido
Polished_Granite_Slab=Losa de granito pulido
Polished_Granite_Stair=Escalera de granito pulido
Polished_Stone=Piedra pulida
Poppy=Amapola
Poppy_Flower_Pot=Poppy Flower Pot
Powered_Rail=Carril de potencia
Powered_Redstone_Spot=Punto Redstone accionado
Powered_Redstone_Trail=Sendero Redstone con motor
Prismarine=Prismarino
Prismarine_Brick=Ladrillo prismarino
Prismarine_Brick_Slab=Losa de ladrillo prismarino
Prismarine_Brick_Stair=Escalera de ladrillo prismarino
Prismarine_Dark=Prismarine Dark
Prismarine_Slab=Losa Prismarina
Prismarine_Stair=Escalera Prismarina
Prismarine_Wall=Muro Prismarino
Pumpkin=Calabaza
Purple_Bed=Cama morada
Purple_Carpet=Alfombra púrpura
Purple_Concrete=Hormigón Púrpura
Purple_Concrete_Powder=Polvo de hormigón morado
Purple_Concrete_Slab=Losa de hormigón púrpura
Purple_Concrete_Stair=Escalera de hormigón morado
Purple_Glazed_Terracotta=Terracota Glaseada Púrpura
Purple_Shulker_Box=Caja Shulker Púrpura
Purple_Stained_Glass=Vidrieras moradas
Purple_Stained_Glass_Pane=Panel de vidrieras moradas
Purple_Terracotta=Terracota púrpura
Purple_Wool=Lana Morada
Purpur_Block=Bloque Purpur
Purpur_Pillar=Pilar Purpur
Purpur_Slab=Losa de Purpur
Purpur_Stair=Escalera Purpur
Quartz_Block=Bloque de cuarzo
Quartz_Slab=Losa de cuarzo
Quartz_Stair=Escalera de cuarzo
Rail=Carril
Realm_Barrier=Barrera del reino
Red_Bed=Cama roja
Red_Carpet=Alfombra roja
Red_Concrete=Hormigón rojo
Red_Concrete_Powder=Polvo de hormigón rojo
Red_Concrete_Slab=Losa de hormigón rojo
Red_Concrete_Stair=Escalera de hormigón rojo
Red_Glazed_Terracotta=Terracota Glaseada Roja
Red_Mushroom=Seta roja
Red_Mushroom_Flower_Pot=Maceta de setas rojas
Red_Nether_Brick_Block=Bloque de ladrillo rojo abisal
Red_Nether_Brick_Fence_Gate=Puerta de valla de ladrillo abisal rojo
Red_Nether_Brick_Fence=Red Nether Brick Fence
Red_Nether_Brick_Slab=Losa de ladrillo rojo abisal
Red_Nether_Brick_Stair=Escalera de ladrillo rojo abisal
Red_Nether_Brick_Wall=Pared de ladrillo abisal rojo
Red_Sand=Arena roja
Red_Sandstone=Arenisca roja
Red_Sandstone_Slab=Losa de arenisca roja
Red_Sandstone_Stair=Escalera de arenisca roja
Red_Sandstone_Wall=Muro de arenisca roja
Red_Shulker_Box=Caja Shulker Roja
Red_Stained_Glass=Vidrieras rojas
Red_Stained_Glass_Pane=Panel de vidrieras rojas
Redstone_Block=Bloque Redstone
Redstone_Comparator_(Off)=Comparador Redstone (Apagado)
Redstone_Comparator_(On)=Comparador Redstone (activado)
Redstone_Lamp=Lámpara Redstone
Redstone_Ore=Mineral de piedra roja
Redstone_Repeater=Repetidor de Redstone
Redstone_Repeater_(Powered)=Repetidor Redstone (Desarrollado)
Redstone_Torch=Antorcha Redstone
Redstone_Torch_(off)=Antorcha Redstone (apagada)
Redstone_Trail=Sendero Redstone
Red_Terracotta=Terracota roja
Red_Tulip_Flower_Pot=Maceta de tulipán rojo
Red_Tulip=Tulipán rojo
Red_Wool=Lana roja
Riverwaterlogged_Sponge=Esponja anegada
River_Water_Source=Fuente de agua de río
Rose_Bush=Rosal
Sand=Arena
Sandstone=Arenisca
Sandstone_Carved=Piedra arenisca tallada
Sandstone_Slab=Losa de piedra arenisca
Sandstone_Smooth=Piedra arenisca lisa
Sandstone_Stair=Escalera de arenisca
Sandstone_Wall=Muro de piedra arenisca
Sea_Lantern=Linterna de mar
Side_Hopper=Tolva lateral
Skeleton_Skull=Cráneo esqueleto
Slime_Block=Bloque de limo
Smooth_Quartz=Cuarzo liso
Smooth_Quartz_Slab=Losa de cuarzo lisa
Smooth_Quartz_Stair=Escalera lisa de cuarzo
Smooth_Red_Sandstone=Piedra arenisca roja lisa
Smooth_Red_Sandstone_Slab=Losa de piedra arenisca roja lisa
Smooth_Red_Sandstone_Stair=Escalera de piedra arenisca roja lisa
Smooth_Sandstone=Piedra arenisca lisa
Smooth_Sandstone_Slab=Losa de arenisca lisa
Smooth_Sandstone_Stair=Escalera de arenisca lisa
Snow_Block=Bloque de nieve
Snow_Layer=Capa de nieve
Soul_Sand=Arena de almas
Sponge=Esponja
Spruce_Bark=Corteza de abeto
Spruce_Bark_Slab=Losa de corteza de abeto
Spruce_Bark_Stair=Escalera de corteza de abeto
Spruce_Button=Botón de abeto
Spruce_Fence=Cerca de abeto
Spruce_Fence_Gate=Puerta de valla de abeto
Spruce_Leaves=Hojas de abeto
Spruce_Log=Tronco de abeto
Spruce=Picea
Spruce_Pressure_Plate=Placa de presión de abeto
Spruce_Sapling_Flower_Pot=Maceta de pimpollo de abeto
Spruce_Sapling=Árbol de abeto
Spruce_Slab=Losa de abeto
Spruce_Stair=Escalera de abeto
Spruce_Stair=Escalera de abeto
Spruce_Trapdoor=Trampilla de abeto
Sticky_Piston=Piston pegajoso
Stone=Piedra
Stone_Brick=Ladrillo de piedra
Stone_Brick_Carved=Piedra Ladrillo Tallado
Stone_Brick_Cracked=Piedra Ladrillo Agrietado
Stone_Brick_Slab=Losa de ladrillo de piedra
Stone_Brick_Stair=Escalera de ladrillo de piedra
Stone_Brick_Stair=Escalera de ladrillo de piedra
Stone_Brick_Wall=Muro de piedra
Stone_Button=Botón de piedra
Stone_Pressure_Plate=Placa de presión de piedra
Stone_Slab=Losa de piedra
Stone_Stair=Escalera de piedra
Sugar_Canes=Caña de azucar
Sunflower=Girasol
Tall_Grass=Cesped alto
Terracotta=Terracota
Torch=Antorcha
Trapdoor=Trampa
Trapped_Chest=Pecho atrapado
Vines=Vides
Void=Vacío
Waterlily=Lirio de agua
Waterlogged_Sponge=Esponja Empapada
Water_Source=Fuente de agua
White_Bed=Cama blanca
White_Carpet=Alfombra blanca
White_Concrete=Hormigón blanco
White_Concrete_Powder=Polvo de hormigón blanco
White_Concrete_Slab=Losa de hormigón blanco
White_Concrete_Stair=Escalera de hormigón blanco
White_Glass_Pane=Cristal blanco
White_Glazed_Terracotta=Terracota Glaseada Blanca
White_Shulker_Box=Caja Shulker Blanca
White_Stained_Glass=Vidrieras blancas
White_Stained_Glass_Pane=Panel de vidrieras blancas
White_Terracotta=Terracota blanca
White_Tulip_Flower_Pot=Maceta de tulipán blanco
White_Tulip=Tulipán blanco
Wither_Skeleton_Skull=Cráneo esqueleto marchito
Wool=Lana
Yellow_Bed=Cama amarilla
Yellow_Carpet=Alfombra amarilla
Yellow_Concrete=Hormigón amarillo
Yellow_Concrete_Powder=Polvo de hormigón amarillo
Yellow_Concrete_Slab=Losa de hormigón amarillo
Yellow_Concrete_Stair=Escalera de hormigón amarillo
Yellow_Glazed_Terracotta=Terracota Glaseada Amarilla
Yellow_Shulker_Box=Caja amarilla de Shulker
Yellow_Stained_Glass=Vidrieras amarillas
Yellow_Stained_Glass_Pane=Panel de vidrieras amarillas
Yellow_Terracotta=Terracota amarilla
Yellow_Wool=Lana amarilla
Zombie_Head=Cabeza de zombie

653
data/blocks_fr.txt Normal file
View File

@ -0,0 +1,653 @@
Acacia_Bark=Écorce d'acacia
Acacia_Bark_Slab=Dalle d'écorce d'acacia
Acacia_Bark_Stair=Escalier en écorce d'acacia
Acacia_Button=Bouton Acacia
Acacia_Fence=Clôture d'acacia
Acacia_Fence_Gate=Porte de clôture en acacia
Acacia_Leaves=Feuilles d'acacia
Acacia_Plank=Planche d'acacia
Acacia_Pressure_Plate=Plaque de pression en acacia
Acacia_Sapling_Flower_Pot=Pot de fleur d'acacia
Acacia_Sapling=Acacia Sapling
Acacia_Slab=Dalle d'acacia
Acacia_Stair=Escalier Acacia
Acacia_Trapdoor=Trappe d'Acacia
Activator_Rail=Rail activateur
Allium_Flower_Pot=Pot de fleurs en allium
Andesite=Andésite
Andesite_Slab=Dalle andésite
Andesite_Stair=Escalier Andésite
Andesite_Wall=Mur Andésite
Anvil=Enclume
Azure_Bluet_Flower_Pot=Pot de fleur bleu azur
Azure_Bluet=Azure Bluet
Barrier=Barrière
Bed_Red=Lit rouge
Bedrock=Substrat rocheux
Bell=Cloche
Birch_Bark=Écorce de bouleau
Birch_Bark_Slab=Dalle d'écorce de bouleau
Birch_Bark_Stair=Escalier en écorce de bouleau
Birch_Button=Bouton de bouleau
Birch_Door=Porte en bouleau
Birch_Fence=Clôture de bouleau
Birch_Fence_Gate=Porte de clôture en bouleau
Birch_Leaves=Feuilles de bouleau
Birch=Bouleau
Birch_Plank=Planche de bouleau
Birch_Pressure_Plate=Plateau de pression en bouleau
Birch_Sapling_Flower_Pot=Pot de fleur de bouleau
Birch_Sapling=Bouleau De Bouleau
Birch_Slab=Dalle de bouleau
Birch_Stair=Escalier en bouleau
Birch_Trapdoor=Trappe en bouleau
Black_Bed=Lit noir
Black_Carpet=Tapis noir
Black_Concrete=Béton Noir
Black_Concrete_Powder=Poudre de béton noire
Black_Concrete_Slab=Dalle de béton noire
Black_Concrete_Stair=Escalier en béton noir
Black_Glazed_Terracotta=Terre Cuite Vernissée Noire
Black_Shulker_Box=Black Shulker Box
Black_Stained_Glass=Vitrail noir
Black_Stained_Glass_Pane=Vitrail noir
Black_Terracotta=Terre cuite noire
Black_Wool=Laine noire
Blue_Bed=Lit bleu
Blue_Carpet=Tapis bleu
Blue_Concrete=Béton bleu
Blue_Concrete_Powder=Poudre de béton bleu
Blue_Concrete_Slab=Dalle de béton bleu
Blue_Concrete_Stair=Escalier en béton bleu
Blue_Glazed_Terracotta=Terre Cuite Glacée Bleue
Blue_Orchid_Flower_Pot=Pot de fleur d'orchidée bleue
Blue_Orchid=Orchidée bleue
Blue_Shulker_Box=Blue Shulker Box
Blue_Stained_Glass=Vitrail bleu
Blue_Stained_Glass_Pane=Vitrail bleu
Blue_Terracotta=Terre Cuite Bleue
Blue_Wool=Laine bleue
Bone_Block=Bloc d'os
Bookshelf=Étagère à livres
Brewing_Stand=Kiosque de brassage
Brick_Block=Bloc de brique
Brick_Slab=Dalle de brique
Brick_Stair=Escalier De Brique
Brick_Wall=Mur de briques
Brown_Bed=Lit brun
Brown_Carpet=Tapis brun
Brown_Concrete=Béton Brun
Brown_Concrete_Powder=Poudre concrète brune
Brown_Concrete_Slab=Dalle de béton brun
Brown_Concrete_Stair=Escalier en béton brun
Brown_Glazed_Terracotta=Terre cuite glacée brune
Brown_Mushroom=Champignon brun
Brown_Mushroom_Flower_Pot=Pot De Fleur Champignon Brun
Brown_Shulker_Box=Boîte de transport marron
Brown_Stained_Glass=Vitrail brun
Brown_Stained_Glass_Pane=Vitrail brun
Brown_Terracotta=Terre cuite brune
Brown_Wool=Laine brune
Burning_Furnace=Four brûlant
Cactus_Flower_Pot=Pot de fleur de cactus
Cake=gâteau
Cauldron=Chaudron
Chest=Poitrine
Chiseled_Quartz_Block=Quartz Ciselé
Chiseled_Red_Sandstone=Grès rouge ciselé
Chorus_Flower=Fleur de chœur
Chorus_Plant_Stem=Tige Végétale
Clay=Argile
Coal_Block=Bloc de charbon
Coal_Ore=Minerai de charbon
Coarse_Dirt=Grossière saleté
Cobblestone=Pavé
Cobblestone_Slab=Dalle Cobblestone
Cobblestone_Stair=Escalier pavé
Cobblestone_Wall=Mur pavé
Cobweb=Araignée
Command_Block=Bloc de commande
Cracked_Stone_Brick_Slab=Dalle de brique de pierre fissurée
Cracked_Stone_Brick_Stair=Escalier de brique de pierre fissurée
Crafting_Table=Table d'artisanat
Creeper_Head=Tête de vigne vierge
Cut_Red_Sandstone=Couper le grès rouge
Cyan_Bed=Lit cyan
Cyan_Carpet=Tapis cyan
Cyan_Concrete=Cyan Concrete
Cyan_Concrete_Powder=Cyan Poudre De Béton
Cyan_Concrete_Slab=Dalle béton cyan
Cyan_Concrete_Stair=Escalier béton cyan
Cyan_Glazed_Terracotta=Terre cuite glacée cyan
Cyan_Shulker_Box=Boîte de shan de cyan
Cyan_Stained_Glass=Vitrail cyan
Cyan_Stained_Glass_Pane=Vitrail Cyan
Cyan_Terracotta=Terre cuite cyan
Cyan_Wool=Laine cyan
Dandelion=Pissenlit
Dandelion_Flower_Pot=Pot de fleur de pissenlit
Dark_Oak=Chêne Foncé
Dark_Oak_Bark=Écorce de chêne foncé
Dark_Oak_Bark_Slab=Dalle en écorce de chêne foncé
Dark_Oak_Bark_Stair=Escalier en écorce de chêne foncé
Dark_Oak_Button=Bouton Chêne Foncé
Dark_Oak_Fence=Clôture de chêne foncé
Dark_Oak_Fence_Gate=Porte de clôture en chêne foncé
Dark_Oak_Leaves=Feuilles De Chêne Foncé
Dark_Oak_Plank=Planche de chêne foncé
Dark_Oak_Pressure_Plate=Plateau de pression en chêne foncé
Dark_Oak_Sapling_Flower_Pot=Pot de Fleurs de Sapling en Chêne Foncé
Dark_Oak_Sapling=Arbre de chêne foncé
Dark_Oak_Slab=Dalle De Chêne Foncé
Dark_Oak_Stair=Escalier Chêne Foncé
Dark_Oak_Trapdoor=Trapdoor en chêne foncé
Dark_Prismarine_Slab=Dalle de prismarine noire
Dark_Prismarine_Stair=Escalier Prismarine Sombre
Daylight_Sensor=Capteur de luminosité
Dead_Bush=Buisson mort
Dead_Bush_Flower_Pot=Pot de fleur de buisson mort
Dead_Chorus_Flower=Fleur mort choeur
Detector_Rail=Détecteur Rail
Diamond_Block=Diamond Block
Diamond_Ore=Minerai de diamant
Diorite_Slab=Dalle de diorite
Diorite_Stair=Escalier Diorite
Diorite_Wall=Mur de diorite
Dirt=Saleté
Disabled_Hopper=Trémie handicapée
Disabled_Side_Hopper=Trémie latérale désactivée
Dispenser=Distributeur
Double_Acacia_Bark_Slab=Double dalle d'écorce d'acacia
Double_Acacia_Slab=Double dalle d'acacia
Double_Andesite_Slab=Double Andesite Slab
Double_Birch_Bark_Slab=Double dalle en écorce de bouleau
Double_Birch_Slab=Double dalle de bouleau
Double_Black_Concrete_Slab=Double dalle de béton noir
Double_Blue_Concrete_Slab=Double dalle de béton bleu
Double_Brick_Slab=Double dalle de brique
Double_Brown_Concrete_Slab=Dalle de béton brun double
Double_Cobblestone_Slab=Dalle Double Cobblestone
Double_Cracked_Stone_Brick_Slab=Dalle de brique en pierre à double fissure
Double_Cyan_Concrete_Slab=Dalle de béton double cyan
Double_Dark_Oak_Bark_Slab=Dalle D'ecorce Double Chene Fonce
Double_Dark_Oak_Slab=Double Dalle De Chêne Foncé
Double_Dark_Prismarine_Slab=Dalle Prismarine Double Dark
Double_Diorite_Slab=Dalle Double Diorite
Double_End_Stone_Brick_Slab=Dalle de brique en pierre à double extrémité
Double_Gold_Block_Slab=Dalle Double Gold Block
Double_Granite_Slab=Double dalle de granit
Double_Green_Concrete_Slab=Dalle de béton double verte
Double_Grey_Concrete_Slab=Dalle de béton gris double
Double_Iron_Block_Slab=Dalle en bloc de fer double
Double_Jungle_Bark_Slab=Double Jungle Bark Slab
Double_Jungle_Slab=Double Jungle Slab
Double_Lapis_Lazuli_Slab=Dalle Double Lapis Lazuli
Double_Light_Blue_Concrete_Slab=Dalle de béton double bleu clair
Double_Light_Grey_Concrete_Slab=Dalle de béton double gris clair
Double_Lime_Concrete_Slab=Dalle de béton double chaux
Double_Magenta_Concrete_Slab=Dalle de béton double magenta
Double_Mossy_Stone_Brick_Slab=Double dalle de brique en pierre moussue
Double_Mossy_Stone_Slab=Double dalle de pierre moussue
Double_Nether_Brick_Slab=Double dalle de brique du Néant
Double_Oak_Bark_Slab=Double Dalle D'ecorce De Chene
Double_Oak_Slab=Double Dalle De Chêne
Double_Orange_Concrete_Slab=Dalle de béton double orange
Double_Pink_Concrete_Slab=Dalle de béton rose double
Double_Polished_Andesite_Slab=Dalle Andesite Double Polie
Double_Polished_Diorite_Slab=Dalle de diorite à double poli
Double_Polished_Granite_Slab=Dalle de granit double poli
Double_Polished_Stone_Slab=Dalle en pierre polie double
Double_Prismarine_Brick_Slab=Dalle de brique double prismarine
Double_Prismarine_Slab=Double Prismarine Slab
Double_Purple_Concrete_Slab=Dalle de béton double pourpre
Double_Purpur_Slab=Double Purpur Slab
Double_Quartz_Slab=Double dalle de quartz
Double_Red_Concrete_Slab=Dalle de béton double rouge
Double_Red_Nether_Brick_Slab=Double dalle de brique du Néant rouge
Double_Red_Sandstone_Slab=Double Dalle De Grès Rouge
Double_Sandstone_Slab=Double Dalle De Grès
Double_Smooth_Quartz_Slab=Dalle de quartz double lisse
Double_Smooth_Red_Sandstone_Slab=Dalle de grès rouge double lisse
Double_Smooth_Sandstone_Slab=Dalle de grès double lisse
Double_Spruce_Bark_Slab=Double dalle en écorce d'épicéa
Double_Spruce_Slab=Double dalle en épicéa
Double_Stone_Brick_Slab=Dalle brique pierre double
Double_Stone_Slab=Double dalle de pierre
Double_Tallgrass=Herbe double
Double_White_Concrete_Slab=Double dalle de béton blanc
Double_Yellow_Concrete_Slab=Dalle de béton jaune double
Dragon_Egg=Oeuf de dragon
Dropper=Compte-gouttes
Emerald_Block=Bloc d'émeraude
Emerald_Ore=Minerai d'émeraude
Enchanting_Table=Table enchanteresse
Ender_Chest=Coffre Ender
End_Portal=Portail de fin
End_Portal_Frame=End Portal Frame
End_Portal_Frame_with_Eye_of_Ender=End Portal Frame avec Eye of Ender
End_Rod=Tige d'extrémité
End_Stone=Pierre de fin
End_Stone_Brick=Fin pierre brique
End_Stone_Brick_Slab=Fin dalle de brique en pierre
End_Stone_Brick_Stair=Fin de l'escalier en brique
End_Stone_Brick_Wall=Fin mur de briques
Eternal_Fire=Feu éternel
Faceless_Pumpkin=Citrouille sans visage
Farmland=Les terres agricoles
Fence=Clôture
Fern_Flower_Pot=Pot de fleur de fougère
Fern=Fougère
Fire=Feu
Flower_Pot=Pot de fleur
Flowing_Lava=Lave qui coule
Flowing_Nether_Lava=Lave du Néant qui coule
Flowing_River_Water=Eau de la rivière
Flowing_Water=Eau qui coule
Frosted_Ice=Glace givrée
Furnace=fourneau
Glass=Verre
Glass_Pane=Vitre
Glowstone=Pierre lueur
Gold_Block=Bloc d'or
Gold_Block_Slab=Dalle de bloc d'or
Gold_Block_Stair=Escalier en bloc d'or
Gold_Ore=Le minerai d'or
Granite=Granit
Granite_Slab=Dalle de granit
Granite_Stair=Escalier de granit
Granite_Wall=Mur de granit
Grass=Herbe
Grass_Block=Bloc d'herbe
Grass_Dry=Herbe sèche
Grass_Path=Chemin d'herbe
Gravel=Gravier
Green_Bed=Lit vert
Green_Carpet=Tapis vert
Green_Concrete=Béton Vert
Green_Concrete_Powder=Poudre de béton verte
Green_Concrete_Slab=Dalle de béton verte
Green_Concrete_Stair=Escalier de béton vert
Green_Glazed_Terracotta=Terre Cuite Glacée Verte
Green_Shulker_Box=Green Shulker Box
Green_Stained_Glass=Vitrail vert
Green_Stained_Glass_Pane=Vitrail Vert
Green_Terracotta=Terre Cuite Verte
Green_Wool=Laine verte
Grey_Bed=Lit gris
Grey_Carpet=Tapis gris
Grey_Concrete=Béton Gris
Grey_Concrete_Powder=Poudre de béton grise
Grey_Concrete_Slab=Dalle de béton grise
Grey_Concrete_Stair=Escalier de béton gris
Grey_Glazed_Terracotta=Terre Cuite Glacée Grise
Grey_Shulker_Box=Boîte de shulker gris
Grey_Stained_Glass=Vitrail gris
Grey_Stained_Glass_Pane=Vitrail gris
Grey_Terracotta=Terre cuite grise
Grey_Wool=Laine grise
Hay_Bale=Balle de foin
Huge_Brown_Mushroom_All-Faces_Stem=Grosse Tige All-Faces Champignon Brun
Huge_Brown_Mushroom_Block=Énorme bloc de champignons brun
Huge_Brown_Mushroom_Stem=Énorme tige de champignon brun
Huge_Red_Mushroom_All-Faces_Stem=Tige énorme aux champignons et aux champignons rouges
Huge_Red_Mushroom_Block=Immense bloc de champignons rouges
Huge_Red_Mushroom_Stem=Énorme tige de champignon rouge
Human_Head=Tête humaine
Hydrated_Farmland=Terres agricoles hydratées
Ice=La glace
Ice_Slab=Dalle de glace
Ice_Stair=Escalier de glace
Infested_Chiseled_Stone_Brick=Brique de pierre ciselée infestée
Infested_Cobblestone=Pavé Infesté
Infested_Cracked_Stone_Brick=Brique de pierre fissurée infestée
Infested_Mossy_Stone_Brick=Brique de pierre moussue infestée
Infested_Stone=Pierre infestée
Infested_Stone_Brick=Brique de pierre infestée
Inverted_Daylight_Sensor=Capteur de lumière du jour inversé
Iron_Bar=Barre de fer
Iron_Block=Bloc de fer
Iron_Block_Slab=Dalle de bloc de fer
Iron_Block_Stair=Escalier de bloc de fer
Iron_Door=Porte en fer
Iron_Ore=Minerai de fer
Iron_Trapdoor=Trapdoor de fer
Item_Frame=Cadre d'article
Jack_o_Lantern=Citrouille d'Halloween
Jukebox=Juke-box
Jungle_Bark=Écorce de la jungle
Jungle_Bark_Slab=Dalle écorce jungle
Jungle_Bark_Stair=Escalier en écorce de jungle
Jungle_Button=Bouton de la jungle
Jungle_Fence=Clôture de la jungle
Jungle_Fence_Gate=Porte de clôture de la jungle
Jungle_Leaves=Feuilles De La Jungle
Jungle_Plank=Planche de jungle
Jungle_Pressure_Plate=Jungle Pressure Plate
Jungle_Sapling_Flower_Pot=Pot de fleur de jungle
Jungle_Sapling=Arbre de la jungle
Jungle_Slab=Dalle de la jungle
Jungle_Stair=Escalier de la jungle
Jungle_Trapdoor=Trappe de la jungle
Ladder=Échelle
Lapis_Lazuli_Block=Bloc Lapis Lazuli
Lapis_Lazuli_Ore=Minerai de lapis lazuli
Lapis_Lazuli_Slab=Dalle de Lapis Lazuli
Lapis_Lazuli_Stair=Escalier de Lapis Lazuli
Large_Fern=Grande fougère
Lava_Source=Source de lave
Leaves=Feuilles
Lever=Levier
Light_Blue_Bed=Lit bleu clair
Light_Blue_Carpet=Tapis bleu clair
Light_Blue_Concrete=Béton bleu clair
Light_Blue_Concrete_Powder=Poudre de béton bleu clair
Light_Blue_Concrete_Slab=Dalle de béton bleu clair
Light_Blue_Concrete_Stair=Escalier en béton bleu clair
Light_Blue_Glazed_Terracotta=Terre Cuite Vernissée Bleu Clair
Light_Blue_Shulker_Box=Boîte Shulker Bleu Clair
Light_Blue_Stained_Glass=Vitrail bleu clair
Light_Blue_Stained_Glass_Pane=Vitrail bleu clair
Light_Blue_Terracotta=Terre Cuite Bleu Clair
Light_Blue_Wool=Laine bleu clair
Light_Grey_Bed=Lit gris clair
Light_Grey_Carpet=Tapis gris clair
Light_Grey_Concrete=Béton Gris Clair
Light_Grey_Concrete_Powder=Poudre de béton gris clair
Light_Grey_Concrete_Slab=Dalle de béton gris clair
Light_Grey_Concrete_Stair=Escalier béton gris clair
Light_Grey_Glazed_Terracotta=Terre Cuite Glacée Gris Clair
Light_Grey_Shulker_Box=Boite Shulker Gris Clair
Light_Grey_Stained_Glass=Vitrail gris clair
Light_Grey_Stained_Glass_Pane=Vitrail gris clair
Light_Grey_Terracotta=Terre Cuite Gris Clair
Light_Grey_Wool=Laine gris clair
Lilac=Lilas
Lime_Bed=Lit de chaux
Lime_Carpet=Tapis de chaux
Lime_Concrete=Béton de chaux
Lime_Concrete_Powder=Poudre de béton de chaux
Lime_Concrete_Slab=Dalle de béton de chaux
Lime_Concrete_Stair=Escalier en béton de chaux
Lime_Glazed_Terracotta=Terre cuite glacée à la chaux
Lime_Shulker_Box=Boite de citron vert
Lime_Stained_Glass=Vitrail à la chaux
Lime_Stained_Glass_Pane=Vitrail à la chaux
Lime_Terracotta=Terre Cuite Au Citron Vert
Lime_Wool=Laine Lime
Lit_Redstone_Ore=Lit de minerai de pierre rouge
Magenta_Bed=Lit Magenta
Magenta_Carpet=Tapis Magenta
Magenta_Concrete=Magenta Concrete
Magenta_Concrete_Powder=Poudre de béton magenta
Magenta_Concrete_Slab=Dalle de béton magenta
Magenta_Concrete_Stair=Escalier béton magenta
Magenta_Glazed_Terracotta=Terre cuite glacée magenta
Magenta_Shulker_Box=Coffret Shulker Magenta
Magenta_Stained_Glass=Vitrail Magenta
Magenta_Stained_Glass_Pane=Vitrail Magenta
Magenta_Terracotta=Terre cuite magenta
Magenta_Wool=Laine magenta
Magma_Block=Magma Block
Mature_Beetroot_Plant=Plant de betterave mature
Mature_Carrot_Plant=Plant de carotte mature
Mature_Cocoa_Pod=Gousse de cacao mature
Mature_Melon_Stem=Tige de melon mature
Mature_Nether_Wart=Verrue du néant mature
Mature_Potato_Plant=Plant de pomme de terre mature
Mature_Pumpkin_Stem=Tige de citrouille mature
Mature_Wheat_Plant=Usine de blé mature
Medium_Cocoa_Pod=Gousse de cacao moyenne
Mob_Spawner=Mob Spawner
Mossy_Cobblestone=Pavé moussu
Mossy_Cobblestone_Wall=Mur de pavés moussus
Mossy_Stone_Brick=Brique de pierre moussue
Mossy_Stone_Brick_Slab=Dalle de brique de pierre moussu
Mossy_Stone_Brick_Stair=Moussu pierre brique escalier
Mossy_Stone_Brick_Wall=Mur de brique de pierre moussu
Mossy_Stone_Slab=Dalle de pierre moussue
Mossy_Stone_Stair=Escalier en pierre moussue
Mycelium=Mycélium
Nether_Brick_Block=Bloc de brique du néant
Nether_Brick_Fence=Clôture en brique du Néant
Nether_Brick_Fence_Gate=Barrière de brique du Néant
Nether_Brick_Slab=Dalle de brique du Néant
Nether_Brick_Stair=Escalier de brique du Néant
Nether_Brick_Wall=Mur de briques du Néant
Nether_Lava_Source=Source de lave du Néant
Nether_Portal=Portail du Néant
Nether_Quartz_Ore=Minerai de quartz du néant
Nether_Wart_Block=Bloc de verrue du Néant
Note_Block=Bloc-notes
Oak=Chêne
Oak_Bark=Écorce de chêne
Oak_Bark_Slab=Dalle en écorce de chêne
Oak_Bark_Stair=Escalier en écorce de chêne
Oak_Button=Bouton de chêne
Oak_Door=Porte en chêne
Oak_Fence_Gate=Porte de clôture en chêne
Oak_Ladder=Échelle en chêne
Oak_Plank=Planche de chêne
Oak_Pressure_Plate=Plateau de pression en chêne
Oak_Sapling=Arbre de chêne
Oak_Sapling_Flower_Pot=Pot de fleur de chêne
Oak_Slab=Dalle de chêne
Oak_Stair=Escalier en chêne
Oak_Wall_Sign=Panneau mural en chêne
Observer=Observateur
Obsidian=Obsidienne
Obsidian_Glass_Pane=Vitre en obsidienne
Obsidian_Glass_Slab=Dalle De Verre Obsidienne
Obsidian_Glass_Stair=Escalier de verre d'obsidienne
Obsidian_Slab=Dalle d'obsidienne
Obsidian_Stair=Escalier en obsidienne
Orange_Bed=Lit orange
Orange_Carpet=Tapis orange
Orange_Concrete=Béton Orange
Orange_Concrete_Powder=Poudre de béton orange
Orange_Concrete_Slab=Dalle de béton orange
Orange_Concrete_Stair=Escalier béton orange
Orange_Glazed_Terracotta=Terre cuite glacée à l'orange
Orange_Shulker_Box=Boîte orange
Orange_Stained_Glass=Vitrail orange
Orange_Stained_Glass_Pane=Vitrail Orange
Orange_Terracotta=Terre cuite orange
Orange_Tulip_Flower_Pot=Pot de fleur tulipe orange
Orange_Tulip=Tulipe orange
Orange_Wool=Laine orange
Oxeye_Daisy_Flower_Pot=Oxeye Daisy Pot De Fleur
Oxeye_Daisy=Oxeye Daisy
Packed_Ice=Banquise
Peony=Pivoine
Pillar_Quartz_Block=Bloc de quartz de pilier
Pink_Bed=Lit rose
Pink_Carpet=Tapis rose
Pink_Concrete=Béton Rose
Pink_Concrete_Powder=Poudre de béton rose
Pink_Concrete_Slab=Dalle de béton rose
Pink_Concrete_Stair=Escalier en béton rose
Pink_Glazed_Terracotta=Terre Cuite Vernissée Rose
Pink_Shulker_Box=Coffret Rose Shulker
Pink_Stained_Glass=Vitrail rose
Pink_Stained_Glass_Pane=Vitrail rose
Pink_Terracotta=Terre Cuite Rose
Pink_Tulip_Flower_Pot=Pot de fleur tulipe rose
Pink_Tulip=Tulipe Rose
Pink_Wool=Laine rose
Polished_Andesite=Andésite poli
Polished_Andesite_Slab=Dalle polie en andésite
Polished_Andesite_Stair=Escalier Andésite Poli
Polished_Diorite=Diorite polie
Polished_Diorite_Slab=Dalle de diorite polie
Polished_Diorite_Stair=Escalier Diorite Poli
Polished_Granite=Granit poli
Polished_Granite_Slab=Dalle de granit poli
Polished_Granite_Stair=Escalier De Granit Poli
Polished_Stone=Pierre polie
Poppy=Coquelicot
Poppy_Flower_Pot=Pot de fleur de pavot
Powered_Rail=Rail motorisé
Powered_Redstone_Spot=Redstone Spot motorisé
Powered_Redstone_Trail=Redstone Trail motorisé
Prismarine_Brick=Brique Prismarine
Prismarine_Brick_Slab=Dalle de brique prismarine
Prismarine_Brick_Stair=Escalier de brique Prismarine
Prismarine_Dark=Prismarine Dark
Prismarine_Slab=Dalle de prismarine
Prismarine_Stair=Escalier Prismarine
Prismarine_Wall=Mur prismarine
Pumpkin=Citrouille
Purple_Bed=Lit violet
Purple_Carpet=Tapis violet
Purple_Concrete=Purple Concrete
Purple_Concrete_Powder=Poudre de béton pourpre
Purple_Concrete_Slab=Dalle de béton violet
Purple_Concrete_Stair=Escalier en béton violet
Purple_Glazed_Terracotta=Terre cuite mauve
Purple_Shulker_Box=Boite Shulker Pourpre
Purple_Stained_Glass=Vitrail violet
Purple_Stained_Glass_Pane=Vitrail violet
Purple_Terracotta=Terre cuite mauve
Purple_Wool=Laine Pourpre
Purpur_Block=Bloc Purpur
Purpur_Pillar=Pilier Purpur
Purpur_Slab=Dalle Purpur
Purpur_Stair=Escalier Purpur
Quartz_Block=Quartz Block
Quartz_Slab=Dalle de quartz
Quartz_Stair=Escalier de quartz
Realm_Barrier=Barrière de royaume
Red_Bed=Lit rouge
Red_Carpet=Tapis rouge
Red_Concrete=Béton Rouge
Red_Concrete_Powder=Poudre de béton rouge
Red_Concrete_Slab=Dalle de béton rouge
Red_Concrete_Stair=Escalier de béton rouge
Red_Glazed_Terracotta=Terre Cuite Glacée Rouge
Red_Mushroom=Champignon rouge
Red_Mushroom_Flower_Pot=Pot De Fleur Champignon Rouge
Red_Nether_Brick_Block=Bloc de brique du Néant rouge
Red_Nether_Brick_Fence_Gate=Porte de clôture en brique rouge
Red_Nether_Brick_Fence=Clôture rouge brique
Red_Nether_Brick_Slab=Dalle de brique du Néant rouge
Red_Nether_Brick_Stair=Escalier Rouge en Brique du Néant
Red_Nether_Brick_Wall=Mur de briques rouges
Red_Sand=Sable rouge
Red_Sandstone=Grès rouge
Red_Sandstone_Slab=Dalle de grès rouge
Red_Sandstone_Stair=Escalier De Grès Rouge
Red_Sandstone_Wall=Mur de grès rouge
Red_Shulker_Box=Coffret Shulker Rouge
Red_Stained_Glass=Vitrail rouge
Red_Stained_Glass_Pane=Vitrail rouge
Redstone=Pierre rouge
Redstone_Block=Redstone Block
Redstone_Comparator_(Off)=Comparateur Redstone (désactivé)
Redstone_Comparator_(On)=Comparateur Redstone (activé)
Redstone_Lamp=Lampe de pierre rouge
Redstone_Ore=Minerai de roche rouge
Redstone_Repeater=Redstone Repeater
Redstone_Repeater_(Powered)=Redstone Repeater (alimenté)
Redstone_Torch=Redstone Torch
Redstone_Torch_(off)=Redstone Torch (éteint)
Redstone_Trail=Redstone Trail
Red_Terracotta=Terre cuite rouge
Red_Tulip_Flower_Pot=Pot de fleur tulipe rouge
Red_Tulip=Tulipe rouge
Red_Wool=Laine rouge
Riverwaterlogged_Sponge=Éponge gorgée de rivière
River_Water_Source=Rivière source d'eau
Rose_Bush=Rose Bush
Sand=Le sable
Sandstone=Grès
Sandstone_Carved=Grès sculpté
Sandstone_Slab=Dalle de grès
Sandstone_Smooth=Grès lisse
Sandstone_Stair=Escalier De Grès
Sandstone_Wall=Mur de grès
Sea_Lantern=Lanterne de mer
Side_Hopper=Trémie latérale
Skeleton_Skull=Crâne squelette
Slime_Block=Slime Block
Smooth_Quartz=Quartz lisse
Smooth_Quartz_Slab=Dalle de quartz lisse
Smooth_Quartz_Stair=Escalier Quartz Lisse
Smooth_Red_Sandstone=Grès rouge lisse
Smooth_Red_Sandstone_Slab=Dalle de grès rouge lisse
Smooth_Red_Sandstone_Stair=Escalier lisse en grès rouge
Smooth_Sandstone=Grès lisse
Smooth_Sandstone_Slab=Dalle de grès lisse
Smooth_Sandstone_Stair=Escalier en grès lisse
Snow_Block=Bloc de neige
Snow_Layer=Couche de neige
Soul_Sand=Soul Sand
Sponge=Éponge
Spruce_Bark=Écorce d'épicéa
Spruce_Bark_Slab=Dalle d'écorce d'épicéa
Spruce_Bark_Stair=Escalier en écorce d'épicéa
Spruce_Button=Bouton en épicéa
Spruce_Fence=Clôture en épicéa
Spruce_Fence_Gate=Porte de clôture en épicéa
Spruce_Leaves=Feuilles d'épicéa
Spruce_Log=Bûche d'épicéa
Spruce=Épicéa
Spruce_Pressure_Plate=Plaque de pression en épicéa
Spruce_Sapling_Flower_Pot=Pot de fleur en bois d'épinette
Spruce_Sapling=Épinette
Spruce_Slab=Dalle d'épicéa
Spruce_Stair=Escalier en épicéa
Spruce_Stair=Escalier en épicéa
Spruce_Trapdoor=Trappe en épicéa
Sticky_Piston=Piston collant
Stone=Pierre
Stone_Brick=Brique de pierre
Stone_Brick_Carved=Brique de pierre sculptée
Stone_Brick_Cracked=Brique de pierre fissurée
Stone_Brick_Slab=Dalle de brique de pierre
Stone_Brick_Stair=Escalier De Brique De Pierre
Stone_Brick_Stair=Escalier De Brique De Pierre
Stone_Brick_Wall=Mur de brique
Stone_Button=Bouton de pierre
Stone_Pressure_Plate=Plaque de pression en pierre
Stone_Slab=Dalle en pierre
Stone_Stair=Escalier De Pierre
Sugar_Canes=Sucre de canne
Sunflower=Tournesol
Tall_Grass=Hautes herbes
Terracotta=Terre cuite
Torch=Torche
Trapdoor=Trappe
Trapped_Chest=Coffre piégé
Vines=Vignes
Void=Vide
Waterlily=Nénuphar
Waterlogged_Sponge=Éponge gorgée d'eau
Water_Source=Source d'eau
White_Bed=Lit blanc
White_Carpet=Tapis blanc
White_Concrete=Béton Blanc
White_Concrete_Powder=Poudre de béton blanche
White_Concrete_Slab=Dalle de béton blanche
White_Concrete_Stair=Escalier en béton blanc
White_Glass_Pane=Vitre blanche
White_Glazed_Terracotta=Terre Cuite Vernissée Blanche
White_Shulker_Box=Boîte blanche de shulker
White_Stained_Glass=Vitrail blanc
White_Stained_Glass_Pane=Vitrail blanc
White_Terracotta=Terre cuite blanche
White_Tulip_Flower_Pot=Pot de fleur tulipe blanche
White_Tulip=Tulipe blanche
Wither_Skeleton_Skull=Crâne squelette
Wool=La laine
Yellow_Bed=Lit jaune
Yellow_Carpet=Tapis jaune
Yellow_Concrete=Béton Jaune
Yellow_Concrete_Powder=Poudre de béton jaune
Yellow_Concrete_Slab=Dalle de béton jaune
Yellow_Concrete_Stair=Escalier Béton Jaune
Yellow_Glazed_Terracotta=Terre Cuite Vernissée Jaune
Yellow_Shulker_Box=Boite Shulker Jaune
Yellow_Stained_Glass=Vitrail jaune
Yellow_Stained_Glass_Pane=Vitrail jaune
Yellow_Terracotta=Terre Cuite Jaune
Yellow_Wool=Laine jaune
Zombie_Head=Tête de zombie

666
data/blocks_hu.txt Normal file
View File

@ -0,0 +1,666 @@
Acacia_Bark=Akác léc
Acacia_Bark_Slab=Akác léc palló
Acacia_Bark_Stair=Akác léc lépcső
Acacia_Button=Akác gomb
Acacia_Fence=Akác kerítés
Acacia_Fence_Gate=Akác kerítésajtó
Acacia_Leaves=Akác levél
Acacia=Akác
Acacia_Plank=Akác deszka
Acacia_Pressure_Plate=Akác nyomólemez
Acacia_Sapling_Flower_Pot=Akác csemete cserépben
Acacia_Sapling=Akác csemete
Acacia_Slab=Akác palló
Acacia_Stair=Akác lépcső
Acacia_Trapdoor=Akác csapóajtó
Activator_Rail=Activator sín
Allium_Flower_Pot=Azálea cserépben
Allium=Azálea
Andesite=Andezit
Andesite_Slab=Andezit palló
Andesite_Stair=Andezit lépcső
Andesite_Wall=Andezit fal
Anvil=Üllő
Azure_Bluet_Flower_Pot=Nefelejts cserépben
Azure_Bluet=Nefelejts
Barrier=Akadály
Bed_Red=Piros ágy
Bedrock=Alapkő
Bell=Harang
Birch_Bark=Nyárfa léc
Birch_Bark_Slab=Nyárfa léc palló
Birch_Bark_Stair=Nyárfa léc lépcső
Birch_Button=Nyárfa gomb
Birch_Door=Nyárfa ajtó
Birch_Fence=Nyárfa kerítés
Birch_Fence_Gate=Nyárfa kerítésajtó
Birch_Leaves=Nyárfa levél
Birch=Nyárfa
Birch_Plank=Nyárfa deszka
Birch_Pressure_Plate=Nyárfa nyomólemez
Birch_Sapling_Flower_Pot=Nyárfa csemete cserépben
Birch_Sapling=Nyárfa csemete
Birch_Slab=Nyárfa palló
Birch_Stair=Nyárfa lépcső
Birch_Trapdoor=Nyárfa csapóajtó
Black_Bed=Fekete ágy
Black_Carpet=Fekete szőnyeg
Black_Concrete=Fekete beton
Black_Concrete_Powder=Fekete betonpor
Black_Concrete_Slab=Fekete beton palló
Black_Concrete_Stair=Fekete beton lépcső
Black_Glazed_Terracotta=Fekete díszített terakotta
Black_Shulker_Box=Fekete shulker doboz
Black_Stained_Glass=Fekete edzett üveg
Black_Stained_Glass_Pane=Fekete edzett üveglap
Black_Terracotta=Fekete terakotta
Black_Wool=Fekete gyapjú
Blue_Bed=Kék ágy
Blue_Carpet=Kék szőnyeg
Blue_Concrete=Kék beton
Blue_Concrete_Powder=Kék betonpor
Blue_Concrete_Slab=Kék beton palló
Blue_Concrete_Stair=Kék beton lépcső
Blue_Glazed_Terracotta=Kék díszített terakotta
Blue_Orchid_Flower_Pot=Kék orchidea cserépben
Blue_Orchid=Kék orchidea
Blue_Shulker_Box=Kék shulker doboz
Blue_Stained_Glass=Kék edzett üveg
Blue_Stained_Glass_Pane=Kék edzett üveglap
Blue_Terracotta=Kék terakotta
Blue_Wool=Kék gyapjú
Bone_Block=Csont blokk
Bookshelf=Könyvespolc
Brewing_Stand=Próba állvány
Brick_Block=Tégla blokk
Brick_Slab=Tégla palló
Brick_Stair=Tégla lépcső
Brick_Wall=Tégla fal
Brown_Bed=Rácsna ágy
Brown_Carpet=Rácsna szőnyeg
Brown_Concrete=Rácsna beton
Brown_Concrete_Powder=Rácsna betonpor
Brown_Concrete_Slab=Rácsna beton palló
Brown_Concrete_Stair=Rácsna beton lépcső
Brown_Glazed_Terracotta=Rácsna díszített terakotta
Brown_Mushroom=Rácsna gomba
Brown_Mushroom_Flower_Pot=Rácsna gomba cserépben
Brown_Shulker_Box=Rácsna shulker doboz
Brown_Stained_Glass=Rácsna edzett üveg
Brown_Stained_Glass_Pane=Rácsna edzett üveglap
Brown_Terracotta=Rácsna terakotta
Brown_Wool=Rácsna gyapjú
Burning_Furnace=Égő kemence
Cactus=Kaktusz
Cactus_Flower_Pot=Kaktusz cserépben
Cake=Süti
Cauldron=üst
Chest=Láda
Chiseled_Quartz_Block=Csiszolt kvarcz blokk
Chiseled_Red_Sandstone=Csiszolt vörös homokkő
Chorus_Flower=Tátika virág
Chorus_Plant_Stem=Tátika növény gumó
Clay=Agyag
Coal_Block=Szén blokk
Coal_Ore=Szén érc
Coarse_Dirt=Régi föld
Cobblestone=Járdakő
Cobblestone_Slab=Járdakő palló
Cobblestone_Stair=Járdakő lépcső
Cobblestone_Wall=Járdakő fal
Cobweb=Pókháló
Command_Block=Parancs blokk
Cracked_Stone_Brick_Slab=Törött kő tégla palló
Cracked_Stone_Brick_Stair=Törött kő tégla lépcső
Crafting_Table=Szerelő asztal
Creeper_Head=Krípör fej
Cut_Red_Sandstone=Vágott vörös homokkő
Cyan_Bed=Cián ágy
Cyan_Carpet=Cián szőnyeg
Cyan_Concrete=Cián beton
Cyan_Concrete_Powder=Cián betonpor
Cyan_Concrete_Slab=Cián beton palló
Cyan_Concrete_Stair=Cián beton lépcső
Cyan_Glazed_Terracotta=Cián díszített terakotta
Cyan_Shulker_Box=Cián shulker doboz
Cyan_Stained_Glass=Cián edzett üveg
Cyan_Stained_Glass_Pane=Cián edzett üveglap
Cyan_Terracotta=Cián terakotta
Cyan_Wool=Cián gyapjú
Dandelion=Gyermekláncfű
Dandelion_Flower_Pot=Gyermekláncfű cserépben
Dark_Oak=Sötét tölgy
Dark_Oak_Bark=Sötét tölgy léc
Dark_Oak_Bark_Slab=Sötét tölgy léc palló
Dark_Oak_Bark_Stair=Sötét tölgy léc lépcső
Dark_Oak_Button=Sötét tölgy gomb
Dark_Oak_Fence=Sötét tölgy kerítés
Dark_Oak_Fence_Gate=Sötét tölgy kerítésajtó
Dark_Oak_Leaves=Sötét tölgy levél
Dark_Oak_Plank=Sötét tölgy deszka
Dark_Oak_Pressure_Plate=Sötét tölgy nyomólemez
Dark_Oak_Sapling_Flower_Pot=Sötét tölgy csemete cserépben
Dark_Oak_Sapling=Sötét tölgy csemete
Dark_Oak_Slab=Sötét tölgy palló
Dark_Oak_Stair=Sötét tölgy lépcső
Dark_Oak_Trapdoor=Sötét tölgy csapóajtó
Dark_Prismarine_Slab=Sötét prizmarin palló
Dark_Prismarine_Stair=Sötét prizmarin lépcső
Daylight_Sensor=Dayvilágos sensor
Dead_Bush=Kiszáradt bokor
Dead_Bush_Flower_Pot=Kiszáradt bokor cserépben
Dead_Chorus_Flower=Kiszáradt tátika virág
Detector_Rail=Érzékelős sín
Diamond_Block=Gyémánt blokk
Diamond_Ore=Gyémánt érc
Diorite=Diorit
Diorite_Slab=Diorit palló
Diorite_Stair=Diorit lépcső
Diorite_Wall=Diorit fal
Dirt=Föld
Disabled_Hopper=Hatástalan hoppoló
Disabled_Side_Hopper=Hatástalan oldal hoppoló
Dispenser=Megsemmisítő
Double_Acacia_Bark_Slab=Dupla akác léc palló
Double_Acacia_Slab=Dupla akác palló
Double_Andesite_Slab=Dupla andezit palló
Double_Birch_Bark_Slab=Dupla nyárfa léc palló
Double_Birch_Slab=Dupla nyárfa palló
Double_Black_Concrete_Slab=Dupla fekete beton palló
Double_Blue_Concrete_Slab=Dupla kék beton palló
Double_Brick_Slab=Dupla tégla palló
Double_Brown_Concrete_Slab=Dupla rácsna beton palló
Double_Cobblestone_Slab=Dupla járdakő palló
Double_Cracked_Stone_Brick_Slab=Dupla törött kő tégla palló
Double_Cyan_Concrete_Slab=Dupla cián beton palló
Double_Dark_Oak_Bark_Slab=Dupla sötét tölgy léc palló
Double_Dark_Oak_Slab=Dupla sötét tölgy palló
Double_Dark_Prismarine_Slab=Dupla sötét prizmarin palló
Double_Diorite_Slab=Dupla diorit palló
Double_End_Stone_Brick_Slab=Dupla végkő tégla palló
Double_Gold_Block_Slab=Dupla arany blokk palló
Double_Granite_Slab=Dupla gránit palló
Double_Green_Concrete_Slab=Dupla zöld beton palló
Double_Grey_Concrete_Slab=Dupla szürke beton palló
Double_Iron_Block_Slab=Dupla vas blokk palló
Double_Jungle_Bark_Slab=Dupla mangróvefa léc palló
Double_Jungle_Slab=Dupla mangróvefa palló
Double_Lapis_Lazuli_Slab=Dupla lapis lazuli palló
Double_Light_Blue_Concrete_Slab=Dupla világos kék beton palló
Double_Light_Grey_Concrete_Slab=Dupla világos szürke beton palló
Double_Lime_Concrete_Slab=Dupla foszöld beton palló
Double_Magenta_Concrete_Slab=Dupla bíbor beton palló
Double_Mossy_Stone_Brick_Slab=Dupla mohás kő tégla palló
Double_Mossy_Stone_Slab=Dupla mohás kő palló
Double_Nether_Brick_Slab=Dupla nether tégla palló
Double_Oak_Bark_Slab=Dupla tölgy léc palló
Double_Oak_Slab=Dupla tölgy palló
Double_Orange_Concrete_Slab=Dupla narancs beton palló
Double_Pink_Concrete_Slab=Dupla rózsaszín beton palló
Double_Polished_Andesite_Slab=Dupla csiszolt andezit palló
Double_Polished_Diorite_Slab=Dupla csiszolt diorit palló
Double_Polished_Granite_Slab=Dupla csiszolt gránit palló
Double_Polished_Stone_Slab=Dupla csiszolt kő palló
Double_Prismarine_Brick_Slab=Dupla prizmarin tégla palló
Double_Prismarine_Slab=Dupla prizmarin palló
Double_Purple_Concrete_Slab=Dupla lila beton palló
Double_Purpur_Slab=Dupla purpur palló
Double_Quartz_Slab=Dupla kvarcz palló
Double_Red_Concrete_Slab=Dupla vörös beton palló
Double_Red_Nether_Brick_Slab=Dupla vörös nether tégla palló
Double_Red_Sandstone_Slab=Dupla vörös homokkő palló
Double_Sandstone_Slab=Dupla homokkő palló
Double_Smooth_Quartz_Slab=Dupla sima kvarcz palló
Double_Smooth_Red_Sandstone_Slab=Dupla sima vörös homokkő palló
Double_Smooth_Sandstone_Slab=Dupla sima homokkő palló
Double_Spruce_Bark_Slab=Dupla bükk léc palló
Double_Spruce_Slab=Dupla bükk palló
Double_Stone_Brick_Slab=Dupla kő tégla palló
Double_Stone_Slab=Dupla kő palló
Double_Tallgrass=Dupla magasfű
Double_White_Concrete_Slab=Dupla fehér beton palló
Double_Yellow_Concrete_Slab=Dupla sárga beton palló
Dragon_Egg=Sárkány tojás
Dropper=Szemetes
Emerald_Block=Smaragd blokk
Emerald_Ore=Smaragd érc
Enchanting_Table=Encsantoló asztal
Ender_Chest=Végi láda
End_Portal=Vég portal
End_Portal_Frame=Vég portal keret
End_Portal_Frame_with_Eye_of_Ender=Vég portal keret with eye of végi
End_Rod=Végrúd
End_Stone=Végkő
End_Stone_Brick=Végkő tégla
End_Stone_Brick_Slab=Végkő tégla palló
End_Stone_Brick_Stair=Végkő tégla lépcső
End_Stone_Brick_Wall=Végkő tégla fal
Eternal_Fire=örök tűz
Faceless_Pumpkin=Arctalan tök
Farmland=Termőföld
Fence=Kerítés
Fern_Flower_Pot=Csillagvirág cserépben
Fern=Csillagvirág
Fire=Tűz
Flower_Pot=Cserépben
Flowing_Lava=Folyó láva
Flowing_Nether_Lava=Folyó nether láva
Flowing_River_Water=Folyó folyóvíz
Flowing_Water=Folyó víz
Frosted_Ice=Kocka jég
Furnace=Kemence
Glass=üveg
Glass_Pane=üveglap
Glowstone=Ragyogókő
Gold_Block=Arany blokk
Gold_Block_Slab=Arany blokk palló
Gold_Block_Stair=Arany blokk lépcső
Gold_Ore=Arany érc
Granite=Gránit
Granite_Slab=Gránit palló
Granite_Stair=Gránit lépcső
Granite_Wall=Gránit fal
Grass=Fű
Grass_Block=Fű blokk
Grass_Dry=Kiszáradt fű
Grass_Path=ösvény
Gravel=Gravel
Green_Bed=Zöld ágy
Green_Carpet=Zöld szőnyeg
Green_Concrete=Zöld beton
Green_Concrete_Powder=Zöld betonpor
Green_Concrete_Slab=Zöld beton palló
Green_Concrete_Stair=Zöld beton lépcső
Green_Glazed_Terracotta=Zöld díszített terakotta
Green_Shulker_Box=Zöld shulker doboz
Green_Stained_Glass=Zöld edzett üveg
Green_Stained_Glass_Pane=Zöld edzett üveglap
Green_Terracotta=Zöld terakotta
Green_Wool=Zöld gyapjú
Grey_Bed=Szürke ágy
Grey_Carpet=Szürke szőnyeg
Grey_Concrete=Szürke beton
Grey_Concrete_Powder=Szürke betonpor
Grey_Concrete_Slab=Szürke beton palló
Grey_Concrete_Stair=Szürke beton lépcső
Grey_Glazed_Terracotta=Szürke díszített terakotta
Grey_Shulker_Box=Szürke shulker doboz
Grey_Stained_Glass=Szürke edzett üveg
Grey_Stained_Glass_Pane=Szürke edzett üveglap
Grey_Terracotta=Szürke terakotta
Grey_Wool=Szürke gyapjú
Hay_Bale=Szalma bála
Hopper=Hoppoló
Huge_Brown_Mushroom_All-Faces_Stem=Hatalmas rácsna gomba egyforma gumó
Huge_Brown_Mushroom_Block=Hatalmas rácsna gomba blokk
Huge_Brown_Mushroom_Stem=Hatalmas rácsna gomba gumó
Huge_Red_Mushroom_All-Faces_Stem=Hatalmas vörös gomba egyforma gumó
Huge_Red_Mushroom_Block=Hatalmas vörös gomba blokk
Huge_Red_Mushroom_Stem=Hatalmas vörös gomba gumó
Human_Head=Human fej
Hydrated_Farmland=Öntözött termőföld
Ice=Jég
Ice_Slab=Jég palló
Ice_Stair=Jég lépcső
Infested_Chiseled_Stone_Brick=Fertőzött csiszolt kő tégla
Infested_Cobblestone=Fertőzött járdakő
Infested_Cracked_Stone_Brick=Fertőzött törött kő tégla
Infested_Mossy_Stone_Brick=Fertőzött mohás kő tégla
Infested_Stone=Fertőzött kő
Infested_Stone_Brick=Fertőzött kő tégla
Inverted_Daylight_Sensor=Inverted dayvilágos sensor
Iron_Bar=Vas rács
Iron_Block=Vas blokk
Iron_Block_Slab=Vas blokk palló
Iron_Block_Stair=Vas blokk lépcső
Iron_Door=Vas ajtó
Iron_Ore=Vas érc
Iron_Trapdoor=Vas csapóajtó
Item_Frame=Item keret
Jack_o_Lantern=Töklámpás
Jukebox=Jukedoboz
Jungle_Bark=Mangróvefa léc
Jungle_Bark_Slab=Mangróvefa léc palló
Jungle_Bark_Stair=Mangróvefa léc lépcső
Jungle_Button=Mangróvefa gomb
Jungle_Fence=Mangróvefa kerítés
Jungle_Fence_Gate=Mangróvefa kerítésajtó
Jungle_Leaves=Mangróvefa levél
Jungle=Mangróvefa
Jungle_Plank=Mangróvefa deszka
Jungle_Pressure_Plate=Mangróvefa nyomólemez
Jungle_Sapling_Flower_Pot=Mangróvefa csemete cserépben
Jungle_Sapling=Mangróvefa csemete
Jungle_Slab=Mangróvefa palló
Jungle_Stair=Mangróvefa lépcső
Jungle_Trapdoor=Mangróvefa csapóajtó
Ladder=Létra
Lapis_Lazuli_Block=Lapis lazuli blokk
Lapis_Lazuli_Ore=Lapis lazuli érc
Lapis_Lazuli_Slab=Lapis lazuli palló
Lapis_Lazuli_Stair=Lapis lazuli lépcső
Large_Fern=Nagy csillagvirág
Lava_Source=Láva forrás
Leaves=Levél
Lever=Falikar
Light_Blue_Bed=Világos kék ágy
Light_Blue_Carpet=Világos kék szőnyeg
Light_Blue_Concrete=Világos kék beton
Light_Blue_Concrete_Powder=Világos kék betonpor
Light_Blue_Concrete_Slab=Világos kék beton palló
Light_Blue_Concrete_Stair=Világos kék beton lépcső
Light_Blue_Glazed_Terracotta=Világos kék díszített terakotta
Light_Blue_Shulker_Box=Világos kék shulker doboz
Light_Blue_Stained_Glass=Világos kék edzett üveg
Light_Blue_Stained_Glass_Pane=Világos kék edzett üveglap
Light_Blue_Terracotta=Világos kék terakotta
Light_Blue_Wool=Világos kék gyapjú
Light_Grey_Bed=Világos szürke ágy
Light_Grey_Carpet=Világos szürke szőnyeg
Light_Grey_Concrete=Világos szürke beton
Light_Grey_Concrete_Powder=Világos szürke betonpor
Light_Grey_Concrete_Slab=Világos szürke beton palló
Light_Grey_Concrete_Stair=Világos szürke beton lépcső
Light_Grey_Glazed_Terracotta=Világos szürke díszített terakotta
Light_Grey_Shulker_Box=Világos szürke shulker doboz
Light_Grey_Stained_Glass=Világos szürke edzett üveg
Light_Grey_Stained_Glass_Pane=Világos szürke edzett üveglap
Light_Grey_Terracotta=Világos szürke terakotta
Light_Grey_Wool=Világos szürke gyapjú
Lilac=Gyopár
Lime_Bed=Foszöld ágy
Lime_Carpet=Foszöld szőnyeg
Lime_Concrete=Foszöld beton
Lime_Concrete_Powder=Foszöld betonpor
Lime_Concrete_Slab=Foszöld beton palló
Lime_Concrete_Stair=Foszöld beton lépcső
Lime_Glazed_Terracotta=Foszöld díszített terakotta
Lime_Shulker_Box=Foszöld shulker doboz
Lime_Stained_Glass=Foszöld edzett üveg
Lime_Stained_Glass_Pane=Foszöld edzett üveglap
Lime_Terracotta=Foszöld terakotta
Lime_Wool=Foszöld gyapjú
Lit_Redstone_Ore=Égő vöröskő érc
Magenta_Bed=Bíbor ágy
Magenta_Carpet=Bíbor szőnyeg
Magenta_Concrete=Bíbor beton
Magenta_Concrete_Powder=Bíbor betonpor
Magenta_Concrete_Slab=Bíbor beton palló
Magenta_Concrete_Stair=Bíbor beton lépcső
Magenta_Glazed_Terracotta=Bíbor díszített terakotta
Magenta_Shulker_Box=Bíbor shulker doboz
Magenta_Stained_Glass=Bíbor edzett üveg
Magenta_Stained_Glass_Pane=Bíbor edzett üveglap
Magenta_Terracotta=Bíbor terakotta
Magenta_Wool=Bíbor gyapjú
Magma_Block=Magma blokk
Mature_Beetroot_Plant=Kinőtt édesgyökér növény
Mature_Carrot_Plant=Kinőtt répa növény
Mature_Cocoa_Pod=Kinőtt kakaó pod
Mature_Melon_Stem=Kinőtt dinnye gumó
Mature_Nether_Wart=Kinőtt nether wart
Mature_Potato_Plant=Kinőtt krumpli növény
Mature_Pumpkin_Stem=Kinőtt tök gumó
Mature_Wheat_Plant=Kinőtt gabona növény
Medium_Cocoa_Pod=Medium kakaó pod
Melon=Dinnye
Mob_Spawner=Mob termelő
Mossy_Cobblestone=Mohás járdakő
Mossy_Cobblestone_Wall=Mohás járdakő fal
Mossy_Stone_Brick=Mohás kő tégla
Mossy_Stone_Brick_Slab=Mohás kő tégla palló
Mossy_Stone_Brick_Stair=Mohás kő tégla lépcső
Mossy_Stone_Brick_Wall=Mohás kő tégla fal
Mossy_Stone_Slab=Mohás kő palló
Mossy_Stone_Stair=Mohás kő lépcső
Mycelium=Gombafonálblokk
Nether_Brick_Block=Nether tégla blokk
Nether_Brick_Fence=Nether tégla kerítés
Nether_Brick_Fence_Gate=Nether tégla kerítésajtó
Nether_Brick_Slab=Nether tégla palló
Nether_Brick_Stair=Nether tégla lépcső
Nether_Brick_Wall=Nether tégla fal
Nether_Lava_Source=Nether láva forrás
Nether_Portal=Nether portal
Nether_Quartz_Ore=Nether kvarcz érc
Netherrack=Netherrack
Nether_Wart_Block=Nether wart blokk
Note_Block=Note blokk
Oak=Tölgy
Oak_Bark=Tölgy léc
Oak_Bark_Slab=Tölgy léc palló
Oak_Bark_Stair=Tölgy léc lépcső
Oak_Button=Tölgy gomb
Oak_Door=Tölgy ajtó
Oak_Fence_Gate=Tölgy kerítésajtó
Oak_Ladder=Tölgy létra
Oak_Plank=Tölgy deszka
Oak_Pressure_Plate=Tölgy nyomólemez
Oak_Sapling=Tölgy csemete
Oak_Sapling_Flower_Pot=Tölgy csemete cserépben
Oak_Slab=Tölgy palló
Oak_Stair=Tölgy lépcső
Oak_Wall_Sign=Tölgy faÉgőábla
Observer=Observer
Obsidian=Obsidian
Obsidian_Glass_Pane=Obsidian üveglap
Obsidian_Glass_Slab=Obsidian üveg palló
Obsidian_Glass_Stair=Obsidian üveg lépcső
Obsidian_Slab=Obsidian palló
Obsidian_Stair=Obsidian lépcső
Orange_Bed=Narancs ágy
Orange_Carpet=Narancs szőnyeg
Orange_Concrete=Narancs beton
Orange_Concrete_Powder=Narancs betonpor
Orange_Concrete_Slab=Narancs beton palló
Orange_Concrete_Stair=Narancs beton lépcső
Orange_Glazed_Terracotta=Narancs díszített terakotta
Orange_Shulker_Box=Narancs shulker doboz
Orange_Stained_Glass=Narancs edzett üveg
Orange_Stained_Glass_Pane=Narancs edzett üveglap
Orange_Terracotta=Narancs terakotta
Orange_Tulip_Flower_Pot=Narancs tulipán cserépben
Orange_Tulip=Narancs tulipán
Orange_Wool=Narancs gyapjú
Oxeye_Daisy_Flower_Pot=Gyöngyvirág cserépben
Oxeye_Daisy=Gyöngyvirág
Packed_Ice=Darabolt jég
Peony=Peony
Pillar_Quartz_Block=Oszlop kvarcz blokk
Pink_Bed=Rózsaszín ágy
Pink_Carpet=Rózsaszín szőnyeg
Pink_Concrete=Rózsaszín beton
Pink_Concrete_Powder=Rózsaszín betonpor
Pink_Concrete_Slab=Rózsaszín beton palló
Pink_Concrete_Stair=Rózsaszín beton lépcső
Pink_Glazed_Terracotta=Rózsaszín díszített terakotta
Pink_Shulker_Box=Rózsaszín shulker doboz
Pink_Stained_Glass=Rózsaszín edzett üveg
Pink_Stained_Glass_Pane=Rózsaszín edzett üveglap
Pink_Terracotta=Rózsaszín terakotta
Pink_Tulip_Flower_Pot=Rózsaszín tulipán cserépben
Pink_Tulip=Rózsaszín tulipán
Pink_Wool=Rózsaszín gyapjú
Piston=Piston
Podzol=Podzol
Polished_Andesite=Csiszolt andezit
Polished_Andesite_Slab=Csiszolt andezit palló
Polished_Andesite_Stair=Csiszolt andezit lépcső
Polished_Diorite=Csiszolt diorit
Polished_Diorite_Slab=Csiszolt diorit palló
Polished_Diorite_Stair=Csiszolt diorit lépcső
Polished_Granite=Csiszolt gránit
Polished_Granite_Slab=Csiszolt gránit palló
Polished_Granite_Stair=Csiszolt gránit lépcső
Polished_Stone=Csiszolt kő
Poppy=Pipacs
Poppy_Flower_Pot=Pipacs cserépben
Powered_Rail=Powevörös sín
Powered_Redstone_Spot=Powevörös vöröskő spot
Powered_Redstone_Trail=Powevörös vöröskő tsín
Prismarine=Prizmarin
Prismarine_Brick=Prizmarin tégla
Prismarine_Brick_Slab=Prizmarin tégla palló
Prismarine_Brick_Stair=Prizmarin tégla lépcső
Prismarine_Dark=Prizmarin sötét
Prismarine_Slab=Prizmarin palló
Prismarine_Stair=Prizmarin lépcső
Prismarine_Wall=Prizmarin fal
Pumpkin=Tök
Purple_Bed=Lila ágy
Purple_Carpet=Lila szőnyeg
Purple_Concrete=Lila beton
Purple_Concrete_Powder=Lila betonpor
Purple_Concrete_Slab=Lila beton palló
Purple_Concrete_Stair=Lila beton lépcső
Purple_Glazed_Terracotta=Lila díszített terakotta
Purple_Shulker_Box=Lila shulker doboz
Purple_Stained_Glass=Lila edzett üveg
Purple_Stained_Glass_Pane=Lila edzett üveglap
Purple_Terracotta=Lila terakotta
Purple_Wool=Lila gyapjú
Purpur_Block=Purpur blokk
Purpur_Pillar=Purpur oszlop
Purpur_Slab=Purpur palló
Purpur_Stair=Purpur lépcső
Quartz_Block=Kvarcz blokk
Quartz_Slab=Kvarcz palló
Quartz_Stair=Kvarcz lépcső
Rail=Sín
Realm_Barrier=Akadály
Red_Bed=Vörös ágy
Red_Carpet=Vörös szőnyeg
Red_Concrete=Vörös beton
Red_Concrete_Powder=Vörös betonpor
Red_Concrete_Slab=Vörös beton palló
Red_Concrete_Stair=Vörös beton lépcső
Red_Glazed_Terracotta=Vörös díszített terakotta
Red_Mushroom=Vörös gomba
Red_Mushroom_Flower_Pot=Vörös gomba cserépben
Red_Nether_Brick_Block=Vörös nether tégla blokk
Red_Nether_Brick_Fence_Gate=Vörös nether tégla kerítésajtó
Red_Nether_Brick_Fence=Vörös nether tégla kerítés
Red_Nether_Brick_Slab=Vörös nether tégla palló
Red_Nether_Brick_Stair=Vörös nether tégla lépcső
Red_Nether_Brick_Wall=Vörös nether tégla fal
Red_Sand=Vörös homok
Red_Sandstone=Vörös homokkő
Red_Sandstone_Slab=Vörös homokkő palló
Red_Sandstone_Stair=Vörös homokkő lépcső
Red_Sandstone_Wall=Vörös homokkő fal
Red_Shulker_Box=Vörös shulker doboz
Red_Stained_Glass=Vörös edzett üveg
Red_Stained_Glass_Pane=Vörös edzett üveglap
Redstone=Vöröskő
Redstone_Block=Vöröskő blokk
Redstone_Comparator_(Off)=Vöröskő comparator (off)
Redstone_Comparator_(On)=Vöröskő comparator (on)
Redstone_Lamp=Vöröskő lamp
Redstone_Ore=Vöröskő érc
Redstone_Repeater=Vöröskő repeater
Redstone_Repeater_(Powered)=Vöröskő repeater (powevörös)
Redstone_Torch=Vöröskő fáklya
Redstone_Torch_(off)=Vöröskő fáklya (off)
Redstone_Trail=Vöröskő tsín
Red_Terracotta=Vörös terakotta
Red_Tulip_Flower_Pot=Vörös tulipán cserépben
Red_Tulip=Vörös tulipán
Red_Wool=Vörös gyapjú
Riverwaterlogged_Sponge=Rivervízlogged sponge
River_Water_Source=Folyóvíz forrás
Rose_Bush=Rózsa bokor
Sand=Homok
Sandstone=Homokkő
Sandstone_Carved=Vésett homokkő
Sandstone_Slab=Homokkő palló
Sandstone_Smooth=Homokkő sima
Sandstone_Stair=Homokkő lépcső
Sandstone_Wall=Homokkő fal
Sea_Lantern=Tengeri lámpás
Side_Hopper=Oldal hoppoló
Skeleton_Skull=Koponya
Slime_Block=Sfoszöld blokk
Smooth_Quartz=Sima kvarcz
Smooth_Quartz_Slab=Sima kvarcz palló
Smooth_Quartz_Stair=Sima kvarcz lépcső
Smooth_Red_Sandstone=Sima vörös homokkő
Smooth_Red_Sandstone_Slab=Sima vörös homokkő palló
Smooth_Red_Sandstone_Stair=Sima vörös homokkő lépcső
Smooth_Sandstone=Sima homokkő
Smooth_Sandstone_Slab=Sima homokkő palló
Smooth_Sandstone_Stair=Sima homokkő lépcső
Snow_Block=Hó blokk
Snow_Layer=Hó réteg
Soul_Sand=Lélek homok
Sponge=Sponge
Spruce_Bark=Bükk léc
Spruce_Bark_Slab=Bükk léc palló
Spruce_Bark_Stair=Bükk léc lépcső
Spruce_Button=Bükk gomb
Spruce_Fence=Bükk kerítés
Spruce_Fence_Gate=Bükk kerítésajtó
Spruce_Leaves=Bükk levél
Spruce_Log=Bükk log
Spruce=Bükk
Spruce_Pressure_Plate=Bükk nyomólemez
Spruce_Sapling_Flower_Pot=Bükk csemete cserépben
Spruce_Sapling=Bükk csemete
Spruce_Slab=Bükk palló
Spruce_Stair=Bükk lépcső
Spruce_Stair=Bükk lépcső
Spruce_Trapdoor=Bükk csapóajtó
Sticky_Piston=Ragadós piston
Stone=Kő
Stone_Brick=Kő tégla
Stone_Brick_Carved=Kő tégla carved
Stone_Brick_Cracked=Kő tégla törött
Stone_Brick_Slab=Kő tégla palló
Stone_Brick_Stair=Kő tégla lépcső
Stone_Brick_Stair=Kő tégla lépcső
Stone_Brick_Wall=Kő tégla fal
Stone_Button=Kő gomb
Stone_Pressure_Plate=Kő nyomólemez
Stone_Slab=Kő palló
Stone_Stair=Kő lépcső
Sugar_Canes=Cukornád
Sunflower=Sunvirág
Tall_Grass=Magas fű
Terracotta=Terakotta
TNT=Tnt
Torch=Fáklya
Trapdoor=Csapóajtó
Trapped_Chest=Trapped láda
Vines=Inda
Void=Üresség
Waterlily=Vízlily
Waterlogged_Sponge=Vízlogged sponge
Water_Source=Víz forrás
White_Bed=Fehér ágy
White_Carpet=Fehér szőnyeg
White_Concrete=Fehér beton
White_Concrete_Powder=Fehér betonpor
White_Concrete_Slab=Fehér beton palló
White_Concrete_Stair=Fehér beton lépcső
White_Glass_Pane=Fehér üveglap
White_Glazed_Terracotta=Fehér díszített terakotta
White_Shulker_Box=Fehér shulker doboz
White_Stained_Glass=Fehér edzett üveg
White_Stained_Glass_Pane=Fehér edzett üveglap
White_Terracotta=Fehér terakotta
White_Tulip_Flower_Pot=Fehér tulipán cserépben
White_Tulip=Fehér tulipán
Wither_Skeleton_Skull=Wither koponya
Wool=Gyapjú
Yellow_Bed=Sárga ágy
Yellow_Carpet=Sárga szőnyeg
Yellow_Concrete=Sárga beton
Yellow_Concrete_Powder=Sárga betonpor
Yellow_Concrete_Slab=Sárga beton palló
Yellow_Concrete_Stair=Sárga beton lépcső
Yellow_Glazed_Terracotta=Sárga díszített terakotta
Yellow_Shulker_Box=Sárga shulker doboz
Yellow_Stained_Glass=Sárga edzett üveg
Yellow_Stained_Glass_Pane=Sárga edzett üveglap
Yellow_Terracotta=Sárga terakotta
Yellow_Wool=Sárga gyapjú
Zombie_Head=Zombi fej

660
data/blocks_pl.txt Normal file
View File

@ -0,0 +1,660 @@
Acacia_Bark=Kora akacji
Acacia_Bark_Slab=Płyta z kory akacji
Acacia_Bark_Stair=Schody z kory akacji
Acacia_Button=Przycisk akacji
Acacia_Fence=Ogrodzenie z akacji
Acacia_Fence_Gate=Acacia Fence Gate
Acacia_Leaves=Liście akacji
Acacia=Akacja
Acacia_Plank=Deska akacjowa
Acacia_Pressure_Plate=Płyta dociskowa z akacji
Acacia_Sapling_Flower_Pot=Doniczka z drzewkiem akacjowym
Acacia_Sapling=Drzewko akacjowe
Acacia_Slab=Płyta akacjowa
Acacia_Stair=Schody akacjowe
Acacia_Trapdoor=Akacja Trapdoor
Activator_Rail=Szyna aktywatora
Allium_Flower_Pot=Doniczka Allium
Allium=Czosnek
Andesite_Slab=Płyta Andesite
Andesite_Stair=Schody Andezytowe
Andesite_Wall=Ściana Andezytowa
Anvil=Kowadło
Azure_Bluet_Flower_Pot=Doniczka Azure Bluet
Azure_Bluet=Azure Bluet
Barrier=Bariera
Bed_Red=Łóżko Czerwone
Bedrock=Podłoże skalne
Bell=dzwon
Birch_Bark=Kora Brzozy
Birch_Bark_Slab=Płyta z kory brzozy
Birch_Bark_Stair=Schody z kory brzozy
Birch_Button=Przycisk brzozy
Birch_Door=Brzozowe drzwi
Birch_Fence=Brzoza Płot
Birch_Fence_Gate=Brzozowa brama ogrodzeniowa
Birch_Leaves=Liście Brzozy
Birch=Brzozowy
Birch_Plank=Deska brzozowa
Birch_Pressure_Plate=Tarcza dociskowa brzozy
Birch_Sapling_Flower_Pot=Doniczka z brzozowym drzewkiem
Birch_Sapling=Brzoza Drzewko
Birch_Slab=Płyta brzozowa
Birch_Stair=Schody Brzozowe
Birch_Trapdoor=Brzoza Trapdoor
Black_Bed=Czarne łóżko
Black_Carpet=Czarny dywan
Black_Concrete=Czarny beton
Black_Concrete_Powder=Czarny proszek betonowy
Black_Concrete_Slab=Czarna płyta betonowa
Black_Concrete_Stair=Schody betonowe czarne
Black_Glazed_Terracotta=Czarna szkliwiona terakota
Black_Shulker_Box=Czarne pudełko Shulkera
Black_Stained_Glass=Czarne witraże
Black_Stained_Glass_Pane=Czarna witraż
Black_Terracotta=Czarna terakota
Black_Wool=Czarna wełna
Blue_Bed=Niebieskie łóżko
Blue_Carpet=Niebieski dywan
Blue_Concrete=Niebieski beton
Blue_Concrete_Powder=Niebieski proszek betonowy
Blue_Concrete_Slab=Niebieska płyta betonowa
Blue_Concrete_Stair=Niebieskie schody betonowe
Blue_Glazed_Terracotta=Niebieska terakota
Blue_Orchid_Flower_Pot=Niebieska doniczka z orchidei
Blue_Orchid=Niebieska Orchidea
Blue_Shulker_Box=Niebieskie pudełko Shulkera
Blue_Stained_Glass=Niebieskie witraże
Blue_Stained_Glass_Pane=Niebieska witraż
Blue_Terracotta=Niebieska terakota
Blue_Wool=Niebieska wełna
Bone_Block=Blok kości
Bookshelf=Półka na książki
Brewing_Stand=Stoisko piwowarskie
Brick_Block=Brick Block
Brick_Slab=Cegła Płyta
Brick_Stair=Cegła Schody
Brick_Wall=Ceglana ściana
Brown_Bed=Brązowe łóżko
Brown_Carpet=Brązowy dywan
Brown_Concrete=Brązowy beton
Brown_Concrete_Powder=Brązowy proszek betonowy
Brown_Concrete_Slab=Brązowa płyta betonowa
Brown_Concrete_Stair=Schody z brązowego betonu
Brown_Glazed_Terracotta=Brązowa terakota
Brown_Mushroom=Brązowy Grzyb
Brown_Mushroom_Flower_Pot=Doniczka z brązowym grzybem
Brown_Shulker_Box=Brown Shulker Box
Brown_Stained_Glass=Brązowe witraże
Brown_Stained_Glass_Pane=Brązowa witraż
Brown_Terracotta=Brązowa terakota
Brown_Wool=Brązowa wełna
Burning_Furnace=Płonący Piec
Cactus=Kaktus
Cactus_Flower_Pot=Kaktusowa doniczka
Cake=Ciasto
Cauldron=Kociołek
Chest=skrzynia
Chiseled_Quartz_Block=Dłutowany blok kwarcu
Chiseled_Red_Sandstone=Rzeźbiony czerwony piaskowiec
Chorus_Flower=Kwiat Chóru
Chorus_Plant_Stem=Chorus Stem
Clay=Glina
Coal_Block=Blok Węgla
Coal_Ore=Rudy węgla
Coarse_Dirt=Gruby brud
Cobblestone=Bruk
Cobblestone_Slab=Płyta brukowa
Cobblestone_Stair=Schody Brukowe
Cobblestone_Wall=Ściana Brukowa
Cobweb=Pajęczyna
Command_Block=Blok komend
Cracked_Stone_Brick_Slab=Cegła z pękniętego kamienia
Cracked_Stone_Brick_Stair=Cegła z pękniętego kamienia
Crafting_Table=Stół Rzemieślniczy
Creeper_Head=Creeper Head
Cut_Red_Sandstone=Wytnij czerwony piaskowiec
Cyan_Bed=Niebieskie łóżko
Cyan_Carpet=Cyjan Dywan
Cyan_Concrete=Cyjan Beton
Cyan_Concrete_Powder=Cyjanowy proszek betonowy
Cyan_Concrete_Slab=Cyjanowa płyta betonowa
Cyan_Concrete_Stair=Cyjan Betonowe Schody
Cyan_Glazed_Terracotta=Cyan Glazed Terakotta
Cyan_Shulker_Box=Cyan Shulker Box
Cyan_Stained_Glass=Cyjan Witraż
Cyan_Stained_Glass_Pane=Cyan Witraż
Cyan_Terracotta=Cyan Terakotta
Cyan_Wool=Cyjan Wełna
Dandelion=Mniszek lekarski
Dandelion_Flower_Pot=Doniczka Dandelion
Dark_Oak=Ciemny dąb
Dark_Oak_Bark=Kora Dębu Ciemnego
Dark_Oak_Bark_Slab=Płyta z kory dębu ciemnego
Dark_Oak_Bark_Stair=Schody z kory dębu ciemnego
Dark_Oak_Button=Przycisk Ciemnego Dębu
Dark_Oak_Fence=Płot z ciemnego dębu
Dark_Oak_Fence_Gate=Brama Ogrodzenia Ciemnego Dębu
Dark_Oak_Leaves=Ciemne liście dębu
Dark_Oak_Plank=Deska z ciemnego dębu
Dark_Oak_Pressure_Plate=Płyta dociskowa z ciemnego dębu
Dark_Oak_Sapling_Flower_Pot=Doniczka z sadzonkami z ciemnego dębu
Dark_Oak_Sapling=Sadzonka Ciemnego Dębu
Dark_Oak_Slab=Płyta z ciemnego dębu
Dark_Oak_Stair=Schody z ciemnego dębu
Dark_Oak_Trapdoor=Trapdoor z ciemnego dębu
Dark_Prismarine_Slab=Dark Prismarine Slab
Dark_Prismarine_Stair=Mroczne Schody Prismarine
Daylight_Sensor=Detektor światła dziennego
Dead_Bush=Martwy krzew
Dead_Bush_Flower_Pot=Doniczka z Martwego Krzaka
Dead_Chorus_Flower=Kwiat Martwego Chóru
Detector_Rail=Szyna detektora
Diamond_Block=Blok diamentowy
Diamond_Ore=Ruda Diamentowa
Diorite=Dioryt
Diorite_Slab=Płyta Diorite
Diorite_Stair=Diorite Stair
Diorite_Wall=Ściana Diorite
Dirt=Brud
Disabled_Hopper=Wyłączony zbiornik
Disabled_Side_Hopper=Wyłączony zbiornik boczny
Dispenser=Szafarka
Double_Acacia_Bark_Slab=Podwójna płyta z kory akacji
Double_Acacia_Slab=Podwójna płyta akacjowa
Double_Andesite_Slab=Podwójna płyta andezytowa
Double_Birch_Bark_Slab=Podwójna płyta z kory brzozy
Double_Birch_Slab=Podwójna płyta brzozowa
Double_Black_Concrete_Slab=Podwójna czarna płyta betonowa
Double_Blue_Concrete_Slab=Podwójna niebieska płyta betonowa
Double_Brick_Slab=Podwójna płyta z cegły
Double_Brown_Concrete_Slab=Podwójna brązowa płyta betonowa
Double_Cobblestone_Slab=Podwójna płyta brukowa
Double_Cracked_Stone_Brick_Slab=Cegła podwójnie spękana z kamienia
Double_Cyan_Concrete_Slab=Podwójna cyjanowa płyta betonowa
Double_Dark_Oak_Bark_Slab=Podwójna płyta z kory dębu ciemnego
Double_Dark_Oak_Slab=Podwójna płyta z ciemnego dębu
Double_Dark_Prismarine_Slab=Podwójna ciemna płyta pryzmatyczna
Double_Diorite_Slab=Podwójna płyta Diorite
Double_End_Stone_Brick_Slab=Kamienna płyta z podwójnym końcem
Double_Gold_Block_Slab=Podwójna płyta Gold Block
Double_Granite_Slab=Podwójna płyta granitowa
Double_Green_Concrete_Slab=Podwójna zielona płyta betonowa
Double_Grey_Concrete_Slab=Podwójna szara płyta betonowa
Double_Iron_Block_Slab=Podwójna płyta z żelaznego bloku
Double_Jungle_Bark_Slab=Płyta z podwójnej kory z dżungli
Double_Jungle_Slab=Podwójna płyta dżungli
Double_Lapis_Lazuli_Slab=Podwójna płyta Lapis Lazuli
Double_Light_Blue_Concrete_Slab=Podwójna jasnoniebieska płyta betonowa
Double_Light_Grey_Concrete_Slab=Podwójna jasnoszara płyta betonowa
Double_Lime_Concrete_Slab=Płyta betonowa z podwójną limonką
Double_Magenta_Concrete_Slab=Podwójna karmazynowa płyta betonowa
Double_Mossy_Stone_Brick_Slab=Podwójna omszała kamienna płyta z cegły
Double_Mossy_Stone_Slab=Podwójna omszała kamienna płyta
Double_Nether_Brick_Slab=Podwójna płyta ceglana Nether
Double_Oak_Bark_Slab=Płyta z podwójnej kory dębu
Double_Oak_Slab=Podwójna płyta dębowa
Double_Orange_Concrete_Slab=Podwójna pomarańczowa płyta betonowa
Double_Pink_Concrete_Slab=Podwójna różowa płyta betonowa
Double_Polished_Andesite_Slab=Podwójnie polerowana płyta andezytowa
Double_Polished_Diorite_Slab=Podwójnie polerowana płyta Diorite
Double_Polished_Granite_Slab=Podwójnie polerowana płyta granitowa
Double_Polished_Stone_Slab=Podwójnie polerowana kamienna płyta
Double_Prismarine_Brick_Slab=Podwójna płyta pryzmatyczna z cegły
Double_Prismarine_Slab=Podwójna płyta pryzmatyczna
Double_Purple_Concrete_Slab=Podwójna fioletowa płyta betonowa
Double_Purpur_Slab=Podwójna płyta Purpur
Double_Quartz_Slab=Podwójna płyta kwarcowa
Double_Red_Concrete_Slab=Podwójna czerwona płyta betonowa
Double_Red_Nether_Brick_Slab=Podwójna czerwona cegła z Netheru
Double_Red_Sandstone_Slab=Podwójna płyta z czerwonego piaskowca
Double_Sandstone_Slab=Podwójna płyta z piaskowca
Double_Smooth_Quartz_Slab=Podwójna gładka płyta kwarcowa
Double_Smooth_Red_Sandstone_Slab=Podwójna gładka płyta z czerwonego piaskowca
Double_Smooth_Sandstone_Slab=Podwójna gładka płyta z piaskowca
Double_Spruce_Bark_Slab=Podwójna płyta z kory świerkowej
Double_Spruce_Slab=Podwójna płyta świerkowa
Double_Stone_Brick_Slab=Płyta z podwójnego kamienia
Double_Stone_Slab=Podwójna płyta kamienna
Double_Tallgrass=Podwójna wysoka trawa
Double_White_Concrete_Slab=Podwójna biała płyta betonowa
Double_Yellow_Concrete_Slab=Podwójna żółta płyta betonowa
Dragon_Egg=Smocze Jajko
Dropper=Zakraplacz
Emerald_Block=Szmaragdowy blok
Emerald_Ore=Szmaragdowa Ruda
Enchanting_Table=Czarujący Stół
Ender_Chest=Skrzynia Endera
End_Portal=Zakończ portal
End_Portal_Frame=Zakończ ramę portalu
End_Portal_Frame_with_Eye_of_Ender=Zakończ ramę portalu za pomocą Eye of Ender
End_Rod=Koniec pręta
End_Stone=Kamień końcowy
End_Stone_Brick=Koniec Kamiennej Cegły
End_Stone_Brick_Slab=Płytka końcowa z cegły kamiennej
End_Stone_Brick_Stair=Końcówka Kamienna Klatka schodowa
End_Stone_Brick_Wall=Kamienny mur z cegły końca
Eternal_Fire=Wieczny ogień
Faceless_Pumpkin=Dynia Bez Twarzy
Farmland=Pole uprawne
Fence=Płot
Fern_Flower_Pot=Doniczka z paproci
Fern=Paproć
Fire=Ogień
Flower_Pot=Doniczka
Flowing_Lava=Płynąca Lawa
Flowing_Nether_Lava=Flava Nether Lava
Flowing_River_Water=Płynąca woda rzeczna
Flowing_Water=Płynąca woda
Frosted_Ice=Matowy lód
Furnace=Piec
Glass=Szkło
Glass_Pane=Szklana tafla
Glowstone=Świecący kamień
Gold_Block=Złoty Blok
Gold_Block_Slab=Złota płyta blokowa
Gold_Block_Stair=Złoty blok schodowy
Gold_Ore=Ruda złota
Granite=Granit
Granite_Slab=Płyta granitowa
Granite_Stair=Schody Granitowe
Granite_Wall=Ściana Granitowa
Grass=Trawa
Grass_Block=Blok trawy
Grass_Dry=Trawa sucha
Grass_Path=Ścieżka
Gravel=Żwir
Green_Bed=Zielone łóżko
Green_Carpet=Zielony dywan
Green_Concrete=Zielony beton
Green_Concrete_Powder=Zielony proszek betonowy
Green_Concrete_Slab=Zielona płyta betonowa
Green_Concrete_Stair=Schody betonowe zielone
Green_Glazed_Terracotta=Terakota zielona
Green_Shulker_Box=Zielone pudełko Shulkera
Green_Stained_Glass=Witraż zielony
Green_Stained_Glass_Pane=Zielona witraż
Green_Terracotta=Zielona terakota
Green_Wool=Zielona wełna
Grey_Bed=Szare łóżko
Grey_Carpet=Szary dywan
Grey_Concrete=Szary beton
Grey_Concrete_Powder=Szary proszek betonowy
Grey_Concrete_Slab=Szara płyta betonowa
Grey_Concrete_Stair=Schody betonowe szary
Grey_Glazed_Terracotta=Szara terakota
Grey_Shulker_Box=Szare pudełko Shulkera
Grey_Stained_Glass=Szary witraż
Grey_Stained_Glass_Pane=Szary witraż
Grey_Terracotta=Szara terakota
Grey_Wool=Szara wełna
Hay_Bale=Hay Bale
Hopper=Zbiornik
Huge_Brown_Mushroom_All-Faces_Stem=Ogromny brązowy grzybek na wszystkich twarzach
Huge_Brown_Mushroom_Block=Ogromny brązowy grzybowy blok
Huge_Brown_Mushroom_Stem=Ogromny brązowy grzybek
Huge_Red_Mushroom_All-Faces_Stem=Ogromny czerwony grzybek na wszystkich twarzach
Huge_Red_Mushroom_Block=Ogromny blok czerwonych grzybów
Huge_Red_Mushroom_Stem=Ogromny czerwony grzybek
Human_Head=Ludzka głowa
Hydrated_Farmland=Uwodnione pola uprawne
Ice=lód
Ice_Slab=Płyta lodowa
Ice_Stair=Schody Lodowe
Infested_Chiseled_Stone_Brick=Zainfekowany rzeźbiony kamienny klocek
Infested_Cobblestone=Zainfekowany bruk
Infested_Cracked_Stone_Brick=Zainfekowany pęknięty kamień
Infested_Mossy_Stone_Brick=Zainfekowana omszała kamienna cegła
Infested_Stone=Zainfekowany Kamień
Infested_Stone_Brick=Zainfekowany kamienny klocek
Inverted_Daylight_Sensor=Odwrócony czujnik światła dziennego
Iron_Bar=Żelazny Sztabka
Iron_Block=Blok żelaza
Iron_Block_Slab=Płyta żelazna
Iron_Block_Stair=Żelazne schody
Iron_Door=Żelazne drzwi
Iron_Ore=Ruda żelaza
Iron_Trapdoor=Iron Trapdoor
Item_Frame=Rama produktu
Jack_o_Lantern=Latarnia z dyni
Jukebox=Szafa grająca
Jungle_Bark=Jungle Bark
Jungle_Bark_Slab=Płyta z kory dżungli
Jungle_Bark_Stair=Schody z kory dżungli
Jungle_Button=Przycisk dżungli
Jungle_Fence=Ogrodzenie dżungli
Jungle_Fence_Gate=Jungle Fence Gate
Jungle_Leaves=Liście dżungli
Jungle=Dżungla
Jungle_Plank=Deska dżungli
Jungle_Pressure_Plate=Tarcza dociskowa Jungle
Jungle_Sapling_Flower_Pot=Doniczka Jungle Sapling
Jungle_Sapling=Drzewko Dżungli
Jungle_Slab=Płyta dżungli
Jungle_Stair=Schody w dżungli
Jungle_Trapdoor=Jungle Trapdoor
Ladder=Drabina
Lapis_Lazuli_Block=Lapis Lazuli Block
Lapis_Lazuli_Ore=Lapis Lazuli Ore
Lapis_Lazuli_Slab=Lapis Lazuli Slab
Lapis_Lazuli_Stair=Lapis Lazuli Schody
Large_Fern=Duża paproć
Lava_Source=Źródło lawy
Leaves=Odchodzi
Lever=Dźwignia
Light_Blue_Bed=Jasnoniebieskie łóżko
Light_Blue_Carpet=Jasnoniebieski dywan
Light_Blue_Concrete=Jasnoniebieski beton
Light_Blue_Concrete_Powder=Jasnoniebieski proszek betonowy
Light_Blue_Concrete_Slab=Jasnoniebieska płyta betonowa
Light_Blue_Concrete_Stair=Jasnoniebieskie schody betonowe
Light_Blue_Glazed_Terracotta=Jasnoniebieska szkliwiona terakota
Light_Blue_Shulker_Box=Jasnoniebieskie pudełko Shulkera
Light_Blue_Stained_Glass=Jasnoniebieskie witraże
Light_Blue_Stained_Glass_Pane=Jasnoniebieska witraż
Light_Blue_Terracotta=Jasnoniebieska terakota
Light_Blue_Wool=Jasnoniebieska wełna
Light_Grey_Bed=Jasnoszare łóżko
Light_Grey_Carpet=Jasnoszary dywan
Light_Grey_Concrete=Jasnoszary beton
Light_Grey_Concrete_Powder=Jasnoszary proszek betonowy
Light_Grey_Concrete_Slab=Jasnoszara płyta betonowa
Light_Grey_Concrete_Stair=Jasnoszare schody betonowe
Light_Grey_Glazed_Terracotta=Jasnoszara szkliwiona terakota
Light_Grey_Shulker_Box=Jasnoszare pudełko Shulker
Light_Grey_Stained_Glass=Jasnoszare witraże
Light_Grey_Stained_Glass_Pane=Jasnoszara witraż
Light_Grey_Terracotta=Jasnoszara terakota
Light_Grey_Wool=Jasnoszara wełna
Lilac=Liliowy
Lime_Bed=Lime Bed
Lime_Carpet=Dywan Wapienny
Lime_Concrete=Wapno Betonowe
Lime_Concrete_Powder=Proszek z betonu wapiennego
Lime_Concrete_Slab=Płyta betonowa wapienna
Lime_Concrete_Stair=Wapno Betonowe Schody
Lime_Glazed_Terracotta=Glazurowana terakota
Lime_Shulker_Box=Lime Shulker Box
Lime_Stained_Glass=Witraż wapno
Lime_Stained_Glass_Pane=Witraż wapno
Lime_Terracotta=Wapna Terakota
Lime_Wool=Wapno
Lit_Redstone_Ore=Lit Ruda Czerwonego Kamienia
Magenta_Bed=Magenta Bed
Magenta_Carpet=Dywan Magenta
Magenta_Concrete=Karmazynowy Beton
Magenta_Concrete_Powder=Magenta Betonowy proszek
Magenta_Concrete_Slab=Magenta Betonowa płyta
Magenta_Concrete_Stair=Magenta Betonowe schody
Magenta_Glazed_Terracotta=Magenta Glazed Terakotta
Magenta_Shulker_Box=Magenta Shulker Box
Magenta_Stained_Glass=Witraż Magenta
Magenta_Stained_Glass_Pane=Witraż Magenta
Magenta_Terracotta=Magenta Terakotowa
Magenta_Wool=Magenta Wełna
Magma_Block=Blok magmy
Mature_Beetroot_Plant=Dojrzała roślina buraka
Mature_Carrot_Plant=Dojrzała Marchewka
Mature_Cocoa_Pod=Dojrzałe strąki kakaowe
Mature_Melon_Stem=Dojrzały melon macierzysty
Mature_Nether_Wart=Dojrzała Nether Brodawka
Mature_Potato_Plant=Dojrzała roślina ziemniaczana
Mature_Pumpkin_Stem=Dojrzały Łodyga Dyni
Mature_Wheat_Plant=Dojrzała roślina pszenicy
Medium_Cocoa_Pod=Średni strąk kakaowy
Mob_Spawner=Mob Spawner
Mossy_Cobblestone=Omszały bruk
Mossy_Cobblestone_Wall=Omszały brukowiec
Mossy_Stone_Brick=Mechata kamienna cegła
Mossy_Stone_Brick_Slab=Mechata kamienna cegła płyta
Mossy_Stone_Brick_Stair=Mechate kamienne schody z cegły
Mossy_Stone_Brick_Wall=Mechaty kamienny mur z cegły
Mossy_Stone_Slab=Omszała płyta kamienna
Mossy_Stone_Stair=Mechate Kamienne Schody
Mycelium=Grzybnia
Nether_Brick_Block=Blok ceglany Netheru
Nether_Brick_Fence=Płot z cegły pustki
Nether_Brick_Fence_Gate=Brama ogrodzeniowa z cegły pustki
Nether_Brick_Slab=Nether Brick Slab
Nether_Brick_Stair=Schody Nether Brick
Nether_Brick_Wall=Mur z cegły Nether
Nether_Lava_Source=Źródło lawy Netheru
Nether_Portal=Portal Nether
Nether_Quartz_Ore=Ruda Kwarcu Netheru
Nether_Wart_Block=Blok Brodawki Otchłani
Note_Block=Uwaga Blok
Oak=Dąb
Oak_Bark=Kora dębu
Oak_Bark_Slab=Płyta z kory dębu
Oak_Bark_Stair=Schody z kory dębu
Oak_Button=Dębowy guzik
Oak_Door=Dębowe drzwi
Oak_Fence_Gate=Dębowa brama ogrodzeniowa
Oak_Ladder=Drabina Dębowa
Oak_Plank=Deska dębowa
Oak_Pressure_Plate=Dębowa płyta dociskowa
Oak_Sapling=Sadzonka Dębu
Oak_Sapling_Flower_Pot=Doniczka Sadzonka Dębu
Oak_Slab=Płyta dębowa
Oak_Stair=Dębowe Schody
Oak_Wall_Sign=Znak ściany dębu
Observer=Obserwator
Obsidian=Obsydian
Obsidian_Glass_Pane=Obsydianowa tafla szkła
Obsidian_Glass_Slab=Obsidian Glass Slab
Obsidian_Glass_Stair=Obsydianowe schody szklane
Obsidian_Slab=Płyta obsydianowa
Obsidian_Stair=Obsydianowe schody
Orange_Bed=Pomarańczowe łóżko
Orange_Carpet=Dywan Pomarańczowy
Orange_Concrete=Beton Pomarańczowy
Orange_Concrete_Powder=Pomarańczowy proszek betonowy
Orange_Concrete_Slab=Pomarańczowa płyta betonowa
Orange_Concrete_Stair=Pomarańczowe schody betonowe
Orange_Glazed_Terracotta=Terakota pomarańczowa
Orange_Shulker_Box=Pomarańczowe pudełko Shulkera
Orange_Stained_Glass=Witraż Pomarańczowy
Orange_Stained_Glass_Pane=Pomarańczowa witraż
Orange_Terracotta=Pomarańczowa Terakota
Orange_Tulip_Flower_Pot=Doniczka Pomarańczowy Tulipan
Orange_Tulip=Pomarańczowy Tulipan
Orange_Wool=Wełna Pomarańczowa
Oxeye_Daisy_Flower_Pot=Doniczka Oxeye Daisy
Oxeye_Daisy=Oxeye Daisy
Packed_Ice=Lód Pakowany
Peony=Piwonia
Pillar_Quartz_Block=Filar Kwarcowy Blok
Pink_Bed=Różowe łóżko
Pink_Carpet=Różowy dywan
Pink_Concrete=Różowy beton
Pink_Concrete_Powder=Różowy proszek betonowy
Pink_Concrete_Slab=Różowa płyta betonowa
Pink_Concrete_Stair=Różowe schody betonowe
Pink_Glazed_Terracotta=Różowa Glazurowana Terakota
Pink_Shulker_Box=Różowe pudełko Shulkera
Pink_Stained_Glass=Różowe witraże
Pink_Stained_Glass_Pane=Różowa witraż
Pink_Terracotta=Różowa terakota
Pink_Tulip_Flower_Pot=Doniczka z różowym tulipanem
Pink_Tulip=Różowy tulipan
Pink_Wool=Różowa wełna
Piston=Tłok
Polished_Andesite=Polerowany Andezyt
Polished_Andesite_Slab=Polerowana płyta andezytowa
Polished_Andesite_Stair=Polerowane schody andezytowe
Polished_Diorite=Polerowany Dioryt
Polished_Diorite_Slab=Polerowana płyta Diorite
Polished_Diorite_Stair=Polerowane schody Diorite
Polished_Granite=Polerowany granit
Polished_Granite_Slab=Polerowana płyta granitowa
Polished_Granite_Stair=Schody z polerowanego granitu
Polished_Stone=Polerowany kamień
Poppy=MAK
Poppy_Flower_Pot=Doniczka z makiem
Powered_Rail=Zasilane tory
Powered_Redstone_Spot=Zasilany punkt Redstone
Powered_Redstone_Trail=Zasilany szlak Redstone
Prismarine_Brick=Cegła Prismarine
Prismarine_Brick_Slab=Cegła Prismarine
Prismarine_Brick_Stair=Cegła schodowa Prismarine
Prismarine_Dark=Prismarine Dark
Prismarine_Slab=Płyta Prismarine
Prismarine_Stair=Schody Prismarine
Prismarine_Wall=Ściana Prismarine
Pumpkin=Dynia
Purple_Bed=Fioletowe łóżko
Purple_Carpet=Fioletowy dywan
Purple_Concrete=Fioletowy Beton
Purple_Concrete_Powder=Fioletowy proszek betonowy
Purple_Concrete_Slab=Fioletowa płyta betonowa
Purple_Concrete_Stair=Fioletowy Schody Betonowe
Purple_Glazed_Terracotta=Fioletowa szkliwiona terakota
Purple_Shulker_Box=Fioletowe pudełko Shulkera
Purple_Stained_Glass=Fioletowe witraże
Purple_Stained_Glass_Pane=Fioletowa witraż
Purple_Terracotta=Fioletowa terakota
Purple_Wool=Fioletowa wełna
Purpur_Block=Blok Purpur
Purpur_Pillar=Filar Purpur
Purpur_Slab=Płyta Purpur
Purpur_Stair=Schody Purpur
Quartz_Block=Blok kwarcowy
Quartz_Slab=Płyta kwarcowa
Quartz_Stair=Schody Kwarcowe
Rail=Szyna
Realm_Barrier=Bariera Królestwa
Red_Bed=Czerwone łóżko
Red_Carpet=Czerwony dywan
Red_Concrete=Czerwony beton
Red_Concrete_Powder=Czerwony proszek betonowy
Red_Concrete_Slab=Czerwona płyta betonowa
Red_Concrete_Stair=Schody z czerwonego betonu
Red_Glazed_Terracotta=Terakota czerwona szkliwiona
Red_Mushroom=Czerwony grzyb
Red_Mushroom_Flower_Pot=Doniczka z czerwonym grzybem
Red_Nether_Brick_Block=Blok z czerwonej siatki pustki
Red_Nether_Brick_Fence_Gate=Brama z czerwonej cegły Nether
Red_Nether_Brick_Fence=Ogrodzenie z czerwonej cegły Nether
Red_Nether_Brick_Slab=Płyta z czerwonej cegły Nether
Red_Nether_Brick_Stair=Schody z czerwonej siatki Netheru
Red_Nether_Brick_Wall=Mur z czerwonej cegły Nether
Red_Sand=Czerwony piasek
Red_Sandstone=Czerwony piaskowiec
Red_Sandstone_Slab=Płyta z czerwonego piaskowca
Red_Sandstone_Stair=Schody z czerwonego piaskowca
Red_Sandstone_Wall=Ściana z czerwonego piaskowca
Red_Shulker_Box=Czerwone pudełko Shulkera
Red_Stained_Glass=Witraż czerwony
Red_Stained_Glass_Pane=Czerwona witraż
Redstone=Czerwony kamień
Redstone_Block=Blok Redstone
Redstone_Comparator_(Off)=Komparator Redstone (Wyłącz)
Redstone_Comparator_(On)=Komparator Redstone (włączony)
Redstone_Lamp=Lampa Redstone
Redstone_Ore=Ruda Redstone
Redstone_Repeater=Redstone Repeater
Redstone_Repeater_(Powered)=Redstone Repeater (zasilany)
Redstone_Torch=Pochodnia Redstone'a
Redstone_Torch_(off)=Pochodnia Redstone (wyłączona)
Redstone_Trail=Szlak Redstone
Red_Terracotta=Czerwona terakota
Red_Tulip_Flower_Pot=Doniczka z czerwonym tulipanem
Red_Tulip=Czerwony tulipan
Red_Wool=Czerwona wełna
Riverwaterlogged_Sponge=Gąbka Riverwaterloglog
River_Water_Source=Źródło wody rzecznej
Rose_Bush=Krzak róży
Sand=Piasek
Sandstone=Piaskowiec
Sandstone_Carved=Rzeźbiony piaskowiec
Sandstone_Slab=Płyta z piaskowca
Sandstone_Smooth=Gładki piaskowiec
Sandstone_Stair=Schody z piaskowca
Sandstone_Wall=Ściana z piaskowca
Sea_Lantern=Latarnia morska
Side_Hopper=Boczny kosz zasypowy
Skeleton_Skull=Szkielet czaszki
Slime_Block=Blok śluzu
Smooth_Quartz=Gładki kwarc
Smooth_Quartz_Slab=Gładka płyta kwarcowa
Smooth_Quartz_Stair=Gładkie schody kwarcowe
Smooth_Red_Sandstone=Gładki czerwony piaskowiec
Smooth_Red_Sandstone_Slab=Gładka płyta z czerwonego piaskowca
Smooth_Red_Sandstone_Stair=Gładkie schody z czerwonego piaskowca
Smooth_Sandstone=Gładki piaskowiec
Smooth_Sandstone_Slab=Gładka płyta z piaskowca
Smooth_Sandstone_Stair=Gładkie schody z piaskowca
Snow_Block=Blok śniegu
Snow_Layer=Warstwa śniegu
Soul_Sand=Piasek dusz
Sponge=Gąbka
Spruce_Bark=Świerkowa Kora
Spruce_Bark_Slab=Płyta z kory świerkowej
Spruce_Bark_Stair=Schody z kory świerkowej
Spruce_Button=Przycisk Świerk
Spruce_Fence=Płot świerkowy
Spruce_Fence_Gate=Świerkowa brama ogrodzeniowa
Spruce_Leaves=Świerkowe Liście
Spruce_Log=Świerk
Spruce=Świerk
Spruce_Pressure_Plate=Świerkowa płyta dociskowa
Spruce_Sapling_Flower_Pot=Doniczka ze świerkowym drzewkiem
Spruce_Sapling=Sadzonka Świerka
Spruce_Slab=Płyta świerkowa
Spruce_Stair=Świerkowe Schody
Spruce_Stair=Świerkowe Schody
Spruce_Trapdoor=Świerkowa Klapa
Sticky_Piston=Lepki tłok
Stone=Kamień
Stone_Brick=Kamienna cegła
Stone_Brick_Carved=Cegła rzeźbiona w kamieniu
Stone_Brick_Cracked=Pęknięty kamień
Stone_Brick_Slab=Płyta z cegły kamiennej
Stone_Brick_Stair=Kamienne schody z cegły
Stone_Brick_Stair=Kamienne schody z cegły
Stone_Brick_Wall=Kamienny mur z cegły
Stone_Button=Kamienny Guzik
Stone_Pressure_Plate=Kamienna płyta dociskowa
Stone_Slab=Kamienna płyta
Stone_Stair=Kamienne Schody
Sugar_Canes=Trzcina cukrowa
Sunflower=Słonecznik
Tall_Grass=Wysoka trawa
Terracotta=Terakota
Torch=Pochodnia
Trapdoor=Klapa w podłodze
Trapped_Chest=Kłopoty z klatką piersiową, bóle w klatce piersiowej
Vines=Winorośl
Void=Unieważnić
Waterlily=Lilia wodna
Waterlogged_Sponge=Podmokła gąbka
Water_Source=Źródło wody
White_Bed=Białe łóżko
White_Carpet=Biały dywan
White_Concrete=Biały beton
White_Concrete_Powder=Biały proszek betonowy
White_Concrete_Slab=Biała płyta betonowa
White_Concrete_Stair=Schody z białego betonu
White_Glass_Pane=Biała tafla szkła
White_Glazed_Terracotta=Terakota biała
White_Shulker_Box=Białe pudełko Shulkera
White_Stained_Glass=Białe witraże
White_Stained_Glass_Pane=Biała witraż
White_Terracotta=Biała terakota
White_Tulip_Flower_Pot=Doniczka z białego tulipana
White_Tulip=Biały tulipan
Wither_Skeleton_Skull=Wither Skeleton Skull
Wool=Wełna
Yellow_Bed=Żółte łóżko
Yellow_Carpet=Żółty dywan
Yellow_Concrete=Żółty beton
Yellow_Concrete_Powder=Żółty proszek betonowy
Yellow_Concrete_Slab=Żółta płyta betonowa
Yellow_Concrete_Stair=Żółte schody betonowe
Yellow_Glazed_Terracotta=Żółta szkliwiona terakota
Yellow_Shulker_Box=Żółte pudełko Shulkera
Yellow_Stained_Glass=Żółte witraże
Yellow_Stained_Glass_Pane=Żółta witraż
Yellow_Terracotta=Żółta terakota
Yellow_Wool=Żółta wełna
Zombie_Head=Głowa Zombie

657
data/blocks_ru.txt Normal file
View File

@ -0,0 +1,657 @@
Acacia_Bark=Кора акации
Acacia_Bark_Slab=Плита коры акации
Acacia_Bark_Stair=Лестница из коры акации
Acacia_Button=Акация Баттон
Acacia_Fence=Акация Забор
Acacia_Fence_Gate=Ворота акации
Acacia_Leaves=Листья акации
Acacia=Акация
Acacia_Plank=Акация Планка
Acacia_Pressure_Plate=Прижимная плита акации
Acacia_Sapling_Flower_Pot=Цветочный горшок саженца акации
Acacia_Sapling=Саженец акации
Acacia_Slab=Плита Акации
Acacia_Stair=Лестница акации
Acacia_Trapdoor=Акация Trapdoor
Activator_Rail=Активатор Рейл
Allium_Flower_Pot=Allium Цветочный горшок
Andesite=Андезит
Andesite_Slab=Андезитовая плита
Andesite_Stair=Андезитовая лестница
Andesite_Wall=Андезитовая стена
Anvil=Наковальня
Azure_Bluet_Flower_Pot=Лазурный Блют цветочный горшок
Azure_Bluet=Лазурный Блют
Barrier=барьерный
Bed_Red=Красная кровать
Bedrock=бедрок
Bell=Колокол
Birch_Bark=Березовая кора
Birch_Bark_Slab=Берестяная плита
Birch_Bark_Stair=Лестница из бересты
Birch_Button=Березовая пуговица
Birch_Door=Березовая дверь
Birch_Fence=Березовый Забор
Birch_Fence_Gate=Березовые ворота
Birch_Leaves=Листья березы
Birch=березовый
Birch_Plank=Березовая доска
Birch_Pressure_Plate=Прижимная плита березы
Birch_Sapling_Flower_Pot=Цветочный горшок
Birch_Sapling=Саженец березы
Birch_Slab=Березовая плита
Birch_Stair=Березовая лестница
Birch_Trapdoor=Березовый Люк
Black_Bed=Черная кровать
Black_Carpet=Черный ковер
Black_Concrete=Черный бетон
Black_Concrete_Powder=Черный бетонный порошок
Black_Concrete_Slab=Черная бетонная плита
Black_Concrete_Stair=Черная бетонная лестница
Black_Glazed_Terracotta=Черная глазурованная терракота
Black_Shulker_Box=Черная шулькерная шкатулка
Black_Stained_Glass=Черный витраж
Black_Stained_Glass_Pane=Черное витражное стекло
Black_Terracotta=Черная терракота
Black_Wool=Черная шерсть
Blue_Bed=Синяя кровать
Blue_Carpet=Синий ковер
Blue_Concrete=Синий бетон
Blue_Concrete_Powder=Синий бетонный порошок
Blue_Concrete_Slab=Синяя бетонная плита
Blue_Concrete_Stair=Голубая бетонная лестница
Blue_Glazed_Terracotta=Голубая глазурованная терракота
Blue_Orchid_Flower_Pot=Голубая орхидея
Blue_Orchid=Голубая Орхидея
Blue_Shulker_Box=Синяя шулькерная коробка
Blue_Stained_Glass=Синий витраж
Blue_Stained_Glass_Pane=Синяя витражная панель
Blue_Terracotta=Голубая терракота
Blue_Wool=Голубая шерсть
Bone_Block=Костный блок
Bookshelf=Книжная полка
Brewing_Stand=Пивоваренный стенд
Brick_Block=Кирпичный Блок
Brick_Slab=Кирпичная плита
Brick_Stair=Кирпичная лестница
Brick_Wall=Кирпичная стена
Brown_Bed=Коричневая кровать
Brown_Carpet=Коричневый ковер
Brown_Concrete=Коричневый бетон
Brown_Concrete_Powder=Коричневый бетонный порошок
Brown_Concrete_Slab=Коричневая бетонная плита
Brown_Concrete_Stair=Лестница из коричневого бетона
Brown_Glazed_Terracotta=Коричневая глазурованная терракота
Brown_Mushroom=Коричневый гриб
Brown_Mushroom_Flower_Pot=Коричневый грибной цветочный горшок
Brown_Shulker_Box=Коричневая шулькерная коробка
Brown_Stained_Glass=Коричневый витраж
Brown_Stained_Glass_Pane=Браун Витраж
Brown_Terracotta=Коричневая терракота
Brown_Wool=Коричневая шерсть
Burning_Furnace=Горящая Печь
Cactus=Кактус
Cactus_Flower_Pot=Кактус Цветочный горшок
Cake=Торт
Cauldron=Котелок
Chest=Грудь
Chiseled_Quartz_Block=Точеный кварцевый блок
Chiseled_Red_Sandstone=Точеный красный песчаник
Chorus_Flower=Цветок хора
Chorus_Plant_Stem=Стебель хоруса
Clay=Глина
Coal_Block=Блок угля
Coal_Ore=Угольная руда
Coarse_Dirt=Грубая Грязь
Cobblestone=булыжник
Cobblestone_Slab=Плита булыжника
Cobblestone_Stair=Лестница из булыжника
Cobblestone_Wall=Стена булыжника
Cobweb=Паутина
Command_Block=Блок команд
Cracked_Stone_Brick_Slab=Трещины каменная кирпичная плита
Cracked_Stone_Brick_Stair=Лестница из потрескавшегося кирпича
Crafting_Table=Верстак
Creeper_Head=Рептилия
Cut_Red_Sandstone=Вырезать красный песчаник
Cyan_Bed=Голубая кровать
Cyan_Carpet=Голубой ковер
Cyan_Concrete=Голубой бетон
Cyan_Concrete_Powder=Голубой бетонный порошок
Cyan_Concrete_Slab=Голубая бетонная плита
Cyan_Concrete_Stair=Голубая бетонная лестница
Cyan_Glazed_Terracotta=Голубая глазурованная терракота
Cyan_Shulker_Box=Голубой Шулькер Бокс
Cyan_Stained_Glass=Голубой Витраж
Cyan_Stained_Glass_Pane=Голубой Витраж
Cyan_Terracotta=Голубая терракота
Cyan_Wool=Голубая шерсть
Dandelion=Одуванчик
Dandelion_Flower_Pot=Цветочный горшок одуванчика
Dark_Oak=Темный дуб
Dark_Oak_Bark=Кора темного дуба
Dark_Oak_Bark_Slab=Плита из коры темного дуба
Dark_Oak_Bark_Stair=Лестница из темного дуба
Dark_Oak_Button=Пуговица из темного дуба
Dark_Oak_Fence=Темный дубовый забор
Dark_Oak_Fence_Gate=Ворота Темного Дуба
Dark_Oak_Leaves=Темные листья дуба
Dark_Oak_Plank=Доска Темного Дуба
Dark_Oak_Pressure_Plate=Нажимная плита темного дуба
Dark_Oak_Sapling_Flower_Pot=Цветочный горшок Саженец темного дуба
Dark_Oak_Sapling=Саженец темного дуба
Dark_Oak_Slab=Плита Темного Дуба
Dark_Oak_Stair=Лестница из темного дуба
Dark_Oak_Trapdoor=Темный Дуб Ловушка
Dark_Prismarine_Slab=Темная Присмариновая Плита
Dark_Prismarine_Stair=Темная Присмаринская Лестница
Daylight_Sensor=Датчик дневного света
Dead_Bush=Мертвый куст
Dead_Bush_Flower_Pot=Мертвый куст цветочный горшок
Dead_Chorus_Flower=Цветок мертвого хора
Detector_Rail=Детектор рельс
Diamond_Block=Алмазный блок
Diamond_Ore=Алмазная руда
Diorite=Диорит
Diorite_Slab=Диоритовая плита
Diorite_Stair=Диоритная лестница
Diorite_Wall=Диорит Стена
Dirt=Грязь
Disabled_Hopper=Бункер для инвалидов
Disabled_Side_Hopper=Боковой бункер для инвалидов
Dispenser=Распылитель
Double_Acacia_Bark_Slab=Двойная плита коры акации
Double_Acacia_Slab=Двойная плита акации
Double_Andesite_Slab=Двойная плита андезита
Double_Birch_Bark_Slab=Двойная плита из бересты
Double_Birch_Slab=Двойная березовая плита
Double_Black_Concrete_Slab=Двойная черная бетонная плита
Double_Blue_Concrete_Slab=Двойная синяя бетонная плита
Double_Brick_Slab=Двойная Кирпичная Плита
Double_Brown_Concrete_Slab=Двойная коричневая бетонная плита
Double_Cobblestone_Slab=Двойная плита булыжника
Double_Cracked_Stone_Brick_Slab=Плита с двойными трещинами из каменного кирпича
Double_Cyan_Concrete_Slab=Двойная голубая бетонная плита
Double_Dark_Oak_Bark_Slab=Двойная темная плита коры дуба
Double_Dark_Oak_Slab=Двойная темная дубовая плита
Double_Dark_Prismarine_Slab=Двойная темная призмариновая плита
Double_Diorite_Slab=Двойная Диоритовая Плита
Double_End_Stone_Brick_Slab=Каменная кирпичная плита с двойным концом
Double_Gold_Block_Slab=Двойной золотой блок плиты
Double_Granite_Slab=Двойная гранитная плита
Double_Green_Concrete_Slab=Двойная зеленая бетонная плита
Double_Grey_Concrete_Slab=Двойная серая бетонная плита
Double_Iron_Block_Slab=Двойная железобетонная плита
Double_Jungle_Bark_Slab=Двойная плита коры джунглей
Double_Jungle_Slab=Двойная плита джунглей
Double_Lapis_Lazuli_Slab=Двойная плита лазурита
Double_Light_Blue_Concrete_Slab=Двойная светло-голубая бетонная плита
Double_Light_Grey_Concrete_Slab=Двойная светло-серая бетонная плита
Double_Lime_Concrete_Slab=Двойная известь бетонная плита
Double_Magenta_Concrete_Slab=Двойная пурпурная бетонная плита
Double_Mossy_Stone_Brick_Slab=Двойная Мшистая Каменная Кирпичная Плита
Double_Mossy_Stone_Slab=Двойная Мшистая Каменная Плита
Double_Nether_Brick_Slab=Кирпичная Плита Двойной Пустоты
Double_Oak_Bark_Slab=Двойная плита коры дуба
Double_Oak_Slab=Двойная плита дуба
Double_Orange_Concrete_Slab=Двойная оранжевая бетонная плита
Double_Pink_Concrete_Slab=Двойная розовая бетонная плита
Double_Polished_Andesite_Slab=Двойная полированная плита андезита
Double_Polished_Diorite_Slab=Двойная полированная плита диорита
Double_Polished_Granite_Slab=Двойная полированная гранитная плита
Double_Polished_Stone_Slab=Двойная полированная каменная плита
Double_Prismarine_Brick_Slab=Двойная Присмаринская Кирпичная Плита
Double_Prismarine_Slab=Двойная Присмаринская Плита
Double_Purple_Concrete_Slab=Двойная фиолетовая бетонная плита
Double_Purpur_Slab=Двойная Пурпурная Плита
Double_Quartz_Slab=Двойная кварцевая плита
Double_Red_Concrete_Slab=Двойная красная бетонная плита
Double_Red_Nether_Brick_Slab=Двойная красная кирпичная плита Пустоты
Double_Red_Sandstone_Slab=Двойная плита из красного песчаника
Double_Sandstone_Slab=Двойная плита из песчаника
Double_Smooth_Quartz_Slab=Двойная гладкая кварцевая плита
Double_Smooth_Red_Sandstone_Slab=Двойная гладкая плита из красного песчаника
Double_Smooth_Sandstone_Slab=Двойная гладкая плита из песчаника
Double_Spruce_Bark_Slab=Двойная еловая кора
Double_Spruce_Slab=Двойная еловая плита
Double_Stone_Brick_Slab=Двойная каменная кирпичная плита
Double_Stone_Slab=Двойная каменная плита
Double_Tallgrass=Двойной Талльграс
Double_White_Concrete_Slab=Двойная белая бетонная плита
Double_Yellow_Concrete_Slab=Двойная желтая бетонная плита
Dragon_Egg=Яйцо дракона
Dropper=Пипетка
Emerald_Block=Изумрудный блок
Emerald_Ore=Изумрудная руда
Enchanting_Table=Феерический стол
Ender_Chest=Сундук Эндер
End_Portal=Конец портала
End_Portal_Frame=Конец портала
End_Portal_Frame_with_Eye_of_Ender=Концевая рама портала с глазом Эндера
End_Rod=Конец стержня
End_Stone=Конец Камень
End_Stone_Brick=Конец Каменный Кирпич
End_Stone_Brick_Slab=Конец Каменная Кирпичная Плита
End_Stone_Brick_Stair=Лестница из каменного кирпича
End_Stone_Brick_Wall=Конец каменная кирпичная стена
Eternal_Fire=Вечный Огонь
Faceless_Pumpkin=Безликая тыква
Farmland=Приусадебный участок
Fence=Ограда
Fern_Flower_Pot=Папоротник Цветочный горшок
Fern=Папоротник
Fire=Пожар
Flower_Pot=Цветочный горшок
Flowing_Lava=Текущая лава
Flowing_Nether_Lava=Плавная Пустота Лава
Flowing_River_Water=Проточная речная вода
Flowing_Water=Текущая вода
Frosted_Ice=Матовый лед
Furnace=Печь
Glass=Стекло
Glass_Pane=Стеклянная панель
Glowstone=Светящийся камень
Gold_Block=Золотой блок
Gold_Block_Slab=Золотая плита
Gold_Block_Stair=Золотая лестница
Gold_Ore=Золотая руда
Granite=Гранит
Granite_Slab=Гранитная плита
Granite_Stair=Гранитная лестница
Granite_Wall=Гранитная стена
Grass=Трава
Grass_Block=Блок травы
Grass_Dry=Трава сухая
Grass_Path=Трава путь
Gravel=галечник
Green_Bed=Зеленая Кровать
Green_Carpet=Зеленый ковер
Green_Concrete=Зеленый Бетон
Green_Concrete_Powder=Зеленый бетонный порошок
Green_Concrete_Slab=Зеленая бетонная плита
Green_Concrete_Stair=Зеленая бетонная лестница
Green_Glazed_Terracotta=Зеленая глазурованная терракота
Green_Shulker_Box=Зеленая шулькерная коробка
Green_Stained_Glass=Зеленый витраж
Green_Stained_Glass_Pane=Зеленый Витраж
Green_Terracotta=Зеленая терракота
Green_Wool=Зеленая шерсть
Grey_Bed=Серая кровать
Grey_Carpet=Серый ковер
Grey_Concrete=Серый бетон
Grey_Concrete_Powder=Серый бетонный порошок
Grey_Concrete_Slab=Серая бетонная плита
Grey_Concrete_Stair=Серая бетонная лестница
Grey_Glazed_Terracotta=Серая глазурованная терракота
Grey_Shulker_Box=Серая шулькерная коробка
Grey_Stained_Glass=Серый витраж
Grey_Stained_Glass_Pane=Серая витражная панель
Grey_Terracotta=Серая терракота
Grey_Wool=Серая шерсть
Hay_Bale=Стог сена
Hopper=хоппер
Huge_Brown_Mushroom_All-Faces_Stem=Огромный коричневый грибной стебель анфаса
Huge_Brown_Mushroom_Block=Огромный коричневый грибной блок
Huge_Brown_Mushroom_Stem=Огромный коричневый грибной стебель
Huge_Red_Mushroom_All-Faces_Stem=Огромный красный грибной анфас
Huge_Red_Mushroom_Block=Огромный красный грибной блок
Huge_Red_Mushroom_Stem=Огромный красный грибной стебель
Human_Head=Человеческая голова
Hydrated_Farmland=Гидратированные сельскохозяйственные угодья
Ice=Лед
Ice_Slab=Ледяная плита
Ice_Stair=Лестничная Лестница
Infested_Chiseled_Stone_Brick=Зараженный точеный каменный кирпич
Infested_Cobblestone=Зараженный булыжник
Infested_Cracked_Stone_Brick=Зараженный треснувший каменный кирпич
Infested_Mossy_Stone_Brick=Зараженный Мшистый Каменный Кирпич
Infested_Stone=Зараженный камень
Infested_Stone_Brick=Зараженный каменный кирпич
Inverted_Daylight_Sensor=Инвертированный датчик дневного света
Iron_Bar=Железный слиток
Iron_Block=Железный блок
Iron_Block_Slab=Железобетонная плита
Iron_Block_Stair=Лестница из железного блока
Iron_Door=Железная дверь
Iron_Ore=Железная руда
Iron_Trapdoor=Железная Люк
Item_Frame=Рамка товара
Jack_o_Lantern=Джек о фонарь
Jukebox=Проигрыватель-автомат
Jungle_Bark=Кора джунглей
Jungle_Bark_Slab=Плита коры джунглей
Jungle_Bark_Stair=Лестница из коры джунглей
Jungle_Button=Кнопка джунглей
Jungle_Fence=Забор джунглей
Jungle_Fence_Gate=Ворота Забора Джунглей
Jungle_Leaves=Листья джунглей
Jungle=Джунгли
Jungle_Plank=Планка джунглей
Jungle_Pressure_Plate=Прижимная плита джунглей
Jungle_Sapling_Flower_Pot=Цветочный горшок саженца джунглей
Jungle_Sapling=Саженец джунглей
Jungle_Slab=Плита джунглей
Jungle_Stair=Лестница в джунглях
Jungle_Trapdoor=Люк джунглей
Ladder=Трап
Lapis_Lazuli_Block=Блок лазурита
Lapis_Lazuli_Ore=Лазурит руда
Lapis_Lazuli_Slab=Плита лазурита
Lapis_Lazuli_Stair=Лестница из лазурита
Large_Fern=Большой папоротник
Lava_Source=Источник лавы
Leaves=Уходит
Lever=Рычаг
Light_Blue_Bed=Голубая кровать
Light_Blue_Carpet=Голубой ковер
Light_Blue_Concrete=Голубой бетон
Light_Blue_Concrete_Powder=Светло-синий бетонный порошок
Light_Blue_Concrete_Slab=Светло-голубая бетонная плита
Light_Blue_Concrete_Stair=Голубая бетонная лестница
Light_Blue_Glazed_Terracotta=Голубая глазурованная терракота
Light_Blue_Shulker_Box=Голубая шулькерная коробка
Light_Blue_Stained_Glass=Светло-голубой витраж
Light_Blue_Stained_Glass_Pane=Светло-голубой Витраж
Light_Blue_Terracotta=Голубая терракота
Light_Blue_Wool=Голубая шерсть
Light_Grey_Bed=Светло-серая кровать
Light_Grey_Carpet=Светло-серый ковер
Light_Grey_Concrete=Светло-серый бетон
Light_Grey_Concrete_Powder=Светло-серый бетонный порошок
Light_Grey_Concrete_Slab=Светло-серая бетонная плита
Light_Grey_Concrete_Stair=Светло-серая бетонная лестница
Light_Grey_Glazed_Terracotta=Светло-серая глазурованная терракота
Light_Grey_Shulker_Box=Светло-серая шулькерная коробка
Light_Grey_Stained_Glass=Светло-серый витраж
Light_Grey_Stained_Glass_Pane=Светло-серый Витраж
Light_Grey_Terracotta=Светло-серая терракота
Light_Grey_Wool=Светло-серая шерсть
Lilac=Сирень
Lime_Bed=Лайм кровать
Lime_Carpet=Лайм ковер
Lime_Concrete=Известь Бетон
Lime_Concrete_Powder=Известь бетонный порошок
Lime_Concrete_Slab=Известь бетонная плита
Lime_Concrete_Stair=Лестничная бетонная лестница
Lime_Glazed_Terracotta=Известь глазированная терракота
Lime_Shulker_Box=Лайм Шулкер Бокс
Lime_Stained_Glass=Витраж извести
Lime_Stained_Glass_Pane=Витраж извести
Lime_Terracotta=Лайм Терракотовый
Lime_Wool=Лайм шерсть
Lit_Redstone_Ore=Освещенная Редстоун Руда
Magenta_Bed=Пурпурная кровать
Magenta_Carpet=Пурпурный ковер
Magenta_Concrete=Пурпурный бетон
Magenta_Concrete_Powder=Пурпурный бетонный порошок
Magenta_Concrete_Slab=Пурпурная бетонная плита
Magenta_Concrete_Stair=Пурпурная бетонная лестница
Magenta_Glazed_Terracotta=Пурпурная глазурованная терракота
Magenta_Shulker_Box=Пурпурная шулькерная коробка
Magenta_Stained_Glass=Пурпурный витраж
Magenta_Stained_Glass_Pane=Пурпурный витраж
Magenta_Terracotta=Пурпурный терракота
Magenta_Wool=Пурпурный шерсть
Magma_Block=Магма Блок
Mature_Beetroot_Plant=Зрелый свекольный завод
Mature_Carrot_Plant=Зрелый Морковный Завод
Mature_Cocoa_Pod=Зрелый какао
Mature_Melon_Stem=Зрелая дыня Стебель
Mature_Nether_Wart=Зрелая Пустоверть Бородавка
Mature_Potato_Plant=Зрелый картофельный завод
Mature_Pumpkin_Stem=Зрелый стебель тыквы
Mature_Wheat_Plant=Зрелая пшеница
Melon=Дыня
Mob_Spawner=Моб Спавнер
Mossy_Cobblestone=Мшистый булыжник
Mossy_Cobblestone_Wall=Мшистая булыжная стена
Mossy_Stone_Brick=Мшистый Каменный Кирпич
Mossy_Stone_Brick_Slab=Мшистая каменная кирпичная плита
Mossy_Stone_Brick_Stair=Лестница из мшистого камня
Mossy_Stone_Brick_Wall=Мшистая каменная кирпичная стена
Mossy_Stone_Slab=Мшистая каменная плита
Mossy_Stone_Stair=Мшистая каменная лестница
Mycelium=Мицелий
Nether_Brick_Block=Пустотелый кирпичный блок
Nether_Brick_Fence=Забор Пустоты
Nether_Brick_Fence_Gate=Ворота Забора Пустоты
Nether_Brick_Slab=Кирпичная плита Пустоты
Nether_Brick_Stair=Лестница Пустоты
Nether_Brick_Wall=Пустотная кирпичная стена
Nether_Lava_Source=Источник лавы Пустоты
Nether_Portal=Портал Пустоты
Nether_Quartz_Ore=Кварцевая руда Пустоты
Nether_Wart_Block=Блок Пустоты
Note_Block=Блокнот
Oak=Дуб
Oak_Bark=Кора дуба
Oak_Bark_Slab=Плита из коры дуба
Oak_Bark_Stair=Лестница из дубовой коры
Oak_Button=Дубовая Пуговица
Oak_Door=Дубовая дверь
Oak_Fence_Gate=Дубовые ворота
Oak_Ladder=Дубовая Лестница
Oak_Plank=Дубовая доска
Oak_Pressure_Plate=Прижимная плита дуба
Oak_Sapling=Саженец дуба
Oak_Sapling_Flower_Pot=Цветочный горшок Саженец дуба
Oak_Slab=Дубовая плита
Oak_Stair=Дубовая лестница
Oak_Wall_Sign=Дубовая Стена
Observer=наблюдатель
Obsidian=Обсидиан
Obsidian_Glass_Pane=Обсидиановое стекло
Obsidian_Glass_Slab=Обсидиановая стеклянная плита
Obsidian_Glass_Stair=Обсидиановая стеклянная лестница
Obsidian_Slab=Обсидиановая плита
Obsidian_Stair=Обсидиановая лестница
Orange_Bed=Оранжевая кровать
Orange_Carpet=Оранжевый ковер
Orange_Concrete=Оранжевый бетон
Orange_Concrete_Powder=Оранжевый бетонный порошок
Orange_Concrete_Slab=Оранжевая бетонная плита
Orange_Concrete_Stair=Оранжевая бетонная лестница
Orange_Glazed_Terracotta=Терракота с глазурью оранжевого цвета
Orange_Shulker_Box=Оранжевая шулькерная коробка
Orange_Stained_Glass=Оранжевый витраж
Orange_Stained_Glass_Pane=Оранжевая витражная панель
Orange_Terracotta=Апельсиновая терракота
Orange_Tulip_Flower_Pot=Оранжевый тюльпан Цветочный горшок
Orange_Tulip=Оранжевый тюльпан
Orange_Wool=Оранжевая шерсть
Packed_Ice=Упакованный Лед
Peony=Пион
Pillar_Quartz_Block=Столб кварцевый блок
Pink_Bed=Розовая Кровать
Pink_Carpet=Розовый ковер
Pink_Concrete=Розовый бетон
Pink_Concrete_Powder=Розовый бетонный порошок
Pink_Concrete_Slab=Розовая бетонная плита
Pink_Concrete_Stair=Розовая бетонная лестница
Pink_Glazed_Terracotta=Розовая глазурованная терракота
Pink_Shulker_Box=Розовая шулькерная коробка
Pink_Stained_Glass=Розовые витражи
Pink_Stained_Glass_Pane=Розовый витраж
Pink_Terracotta=Розовая терракота
Pink_Tulip_Flower_Pot=Розовый тюльпан Цветочный горшок
Pink_Tulip=Розовый тюльпан
Pink_Wool=Розовая шерсть
Piston=Поршень
Podzol=Подзолообразование
Polished_Andesite=Полированный андезит
Polished_Andesite_Slab=Полированная плита андезита
Polished_Andesite_Stair=Полированная андезитовая лестница
Polished_Diorite=Полированный диорит
Polished_Diorite_Slab=Полированная плита из диорита
Polished_Diorite_Stair=Полированная диоритовая лестница
Polished_Granite=Полированный гранит
Polished_Granite_Slab=Полированная гранитная плита
Polished_Granite_Stair=Полированная гранитная лестница
Polished_Stone=Полированный камень
Poppy=Мак
Poppy_Flower_Pot=Мак цветочный горшок
Powered_Rail=Приведенный в действие рельс
Prismarine_Brick=Присмаринский кирпич
Prismarine_Brick_Slab=Присмарная кирпичная плита
Prismarine_Brick_Stair=Присмаринская кирпичная лестница
Prismarine_Dark=Присмарин Темный
Prismarine_Slab=Присмарная плита
Prismarine_Stair=Присмарная лестница
Prismarine_Wall=Присмарин Стена
Pumpkin=Тыква
Purple_Bed=Фиолетовая кровать
Purple_Carpet=Фиолетовый ковер
Purple_Concrete=Фиолетовый бетон
Purple_Concrete_Powder=Фиолетовый бетонный порошок
Purple_Concrete_Slab=Фиолетовая бетонная плита
Purple_Concrete_Stair=Фиолетовая бетонная лестница
Purple_Glazed_Terracotta=Фиолетовая глазурованная терракота
Purple_Shulker_Box=Фиолетовая шулькерная коробка
Purple_Stained_Glass=Фиолетовый витраж
Purple_Stained_Glass_Pane=Фиолетовый витраж
Purple_Terracotta=Фиолетовая терракота
Purple_Wool=Фиолетовая шерсть
Purpur_Block=Пурпур Блок
Purpur_Pillar=Пурпурный столб
Purpur_Slab=Пурпур Плита
Purpur_Stair=Лестница Пурпур
Quartz_Block=Кварцевый блок
Quartz_Slab=Кварцевая плита
Quartz_Stair=Кварцевая лестница
Rail=Рельсовый
Realm_Barrier=Барьер Царства
Red_Bed=Красная кровать
Red_Carpet=Красный ковер
Red_Concrete=Красный бетон
Red_Concrete_Powder=Красный бетонный порошок
Red_Concrete_Slab=Красная бетонная плита
Red_Concrete_Stair=Красная бетонная лестница
Red_Glazed_Terracotta=Красная глазурованная терракота
Red_Mushroom=Красный гриб
Red_Mushroom_Flower_Pot=Красный грибной горшок
Red_Nether_Brick_Block=Кирпичный блок Красной Пустоты
Red_Nether_Brick_Fence_Gate=Кирпичные ворота забора Красной Пустоты
Red_Nether_Brick_Fence=Кирпичный Забор Красной Пустоты
Red_Nether_Brick_Slab=Красная кирпичная плита Пустоты
Red_Nether_Brick_Stair=Лестница из красного кирпича
Red_Nether_Brick_Wall=Красная Пустота Кирпичная стена
Red_Sand=Красный песок
Red_Sandstone=Красный песчаник
Red_Sandstone_Slab=Плита красного песчаника
Red_Sandstone_Stair=Лестница из красного песчаника
Red_Sandstone_Wall=Красная стена из песчаника
Red_Shulker_Box=Красная шулькерная коробка
Red_Stained_Glass=Красный витраж
Red_Stained_Glass_Pane=Красный Витраж
Redstone=Редстоун
Redstone_Block=Редстоун Блок
Redstone_Comparator_(Off)=Редстоун Компаратор (выкл)
Redstone_Comparator_(On)=Редстоун Компаратор (Вкл)
Redstone_Lamp=Редстоун Лампа
Redstone_Ore=Редстоун Руда
Redstone_Repeater=Редстоун Репитер
Redstone_Repeater_(Powered)=Редстоун Репитер (работает)
Redstone_Torch=Редстоун Факел
Redstone_Torch_(off)=Редстоун факел (выкл)
Redstone_Trail=Редстоун Трейл
Red_Terracotta=Красная терракота
Red_Tulip_Flower_Pot=Красный тюльпан Цветочный горшок
Red_Tulip=Красный тюльпан
Red_Wool=Красная шерсть
Riverwaterlogged_Sponge=Река с водой Губка
River_Water_Source=Источник речной воды
Rose_Bush=Розовый куст
Sand=Песок
Sandstone=Песчаник
Sandstone_Carved=Резной песчаник
Sandstone_Slab=Плита песчаника
Sandstone_Smooth=Песчаник гладкий
Sandstone_Stair=Лестница из песчаника
Sandstone_Wall=Стена из песчаника
Sea_Lantern=Морской фонарь
Side_Hopper=Боковой бункер
Skeleton_Skull=Скелет Черепа
Slime_Block=Блок слизи
Smooth_Quartz=Гладкий Кварц
Smooth_Quartz_Slab=Гладкая кварцевая плита
Smooth_Quartz_Stair=Гладкая кварцевая лестница
Smooth_Red_Sandstone=Гладкий красный песчаник
Smooth_Red_Sandstone_Slab=Гладкая плита из красного песчаника
Smooth_Red_Sandstone_Stair=Гладкая лестница из красного песчаника
Smooth_Sandstone=Гладкий песчаник
Smooth_Sandstone_Slab=Гладкая плита из песчаника
Smooth_Sandstone_Stair=Гладкая песчаная лестница
Snow_Block=Снежная глыба
Snow_Layer=Слой снега
Soul_Sand=Песок души
Sponge=Губка
Spruce_Bark=Ель кора
Spruce_Bark_Slab=Плита из еловой коры
Spruce_Bark_Stair=Лестница из еловой коры
Spruce_Button=Еловая пуговица
Spruce_Fence=Еловый забор
Spruce_Fence_Gate=Еловые ворота
Spruce_Leaves=Еловые листья
Spruce_Log=Еловая бревна
Spruce=Ель
Spruce_Pressure_Plate=Еловая прижимная плита
Spruce_Sapling_Flower_Pot=Еловый Саженец Цветочный Горшок
Spruce_Sapling=Саженец ели
Spruce_Slab=Еловая плита
Spruce_Stair=Еловая лестница
Spruce_Stair=Еловая лестница
Spruce_Trapdoor=Еловый Люк
Sticky_Piston=Липкий Поршень
Stone=Камень
Stone_Brick=Каменный кирпич
Stone_Brick_Carved=Камень Кирпич Резной
Stone_Brick_Cracked=Каменный кирпич треснул
Stone_Brick_Slab=Плита каменного кирпича
Stone_Brick_Stair=Лестница из каменного кирпича
Stone_Brick_Stair=Лестница из каменного кирпича
Stone_Brick_Wall=Каменная кирпичная стена
Stone_Button=Каменная кнопка
Stone_Pressure_Plate=Каменная прижимная плита
Stone_Slab=Каменная плита
Stone_Stair=Каменная лестница
Sugar_Canes=Сахарные тростники
Sunflower=Подсолнух
Tall_Grass=Высокая трава
Terracotta=Терракотовый
TNT=Тротил
Torch=факел
Trapdoor=Люк
Trapped_Chest=Сундук с ловушкой
Void=Пустота
Waterlily=Водяная лилия
Waterlogged_Sponge=Затопленная губка
Water_Source=Источник воды
White_Bed=Белая Кровать
White_Carpet=Белый ковер
White_Concrete=Белый бетон
White_Concrete_Powder=Белый бетонный порошок
White_Concrete_Slab=Белая бетонная плита
White_Concrete_Stair=Белая бетонная лестница
White_Glass_Pane=Белая стеклянная панель
White_Glazed_Terracotta=Белая глазурованная терракота
White_Shulker_Box=Белая шулькерная шкатулка
White_Stained_Glass=Белый витраж
White_Stained_Glass_Pane=Белая витражная панель
White_Terracotta=Белая терракота
White_Tulip_Flower_Pot=Белый тюльпан Цветочный горшок
White_Tulip=Белый тюльпан
Wither_Skeleton_Skull=Увядший скелет черепа
Wool=шерсть
Yellow_Bed=Желтая кровать
Yellow_Carpet=Желтый ковер
Yellow_Concrete=Желтый бетон
Yellow_Concrete_Powder=Желтый бетонный порошок
Yellow_Concrete_Slab=Желтая бетонная плита
Yellow_Concrete_Stair=Желтая бетонная лестница
Yellow_Glazed_Terracotta=Желтая глазурованная терракота
Yellow_Shulker_Box=Желтая шулькерная коробка
Yellow_Stained_Glass=Желтое витражное стекло
Yellow_Stained_Glass_Pane=Желтое витражное стекло
Yellow_Terracotta=Желтая терракота
Yellow_Wool=Желтая шерсть
Zombie_Head=Голова зомби

View File

@ -37,6 +37,8 @@ define the name of the block mapping.
| 3rd | string | an optional biome specific name for the block (like "biome:node_stone") |
| 4th+ | string | block's name in the mapping (this coloumn may be repated as many times as you like) |
Block mapping are also referenced as palette.
Block Images
------------
@ -52,3 +54,12 @@ are only used for blocks that can be rotated upside-down too, like stairs, but I
Hint: the MTSEdit tool can generate slab and stair images from block pictures using the `-g` option. This will only generate the
first 4 orientation, a slab, and a mirrored verion of the original block.
Translations
------------
The MTSEdit user interface is multilingual, but blocks.csv is not. If you want to translate block names too, you'll have to
provide translation files in the `data` directory. These are plain text files, by the name "blocks_(lang).txt", and with
lines each of "(1st coloumn)=(translated name)". As with blocks.csv, the lines are ended by a newline '\\n' character, '\\r'
is optional.

View File

@ -59,9 +59,9 @@ the format is as follows:
| 3*X*Y*Z | X*Y*Z | rotation info (param2) |
To get the block ID from `param0` for a given coordinate (x,y,z), you should calculate the index param0\[(Z-z)*Z*Y + y*X + x\].
That is right, Z axis is mirrored for some reason unknown to me. Each block ID is stored on a big endian 2 bytes, although I
haven't seen any MTS files yet that used more than 255 block types per file. Also most files store "air" block type in the first
type (block ID being 0), but this is not mandatory unfortunately.
That is right, Z axis is mirrored for some reason unknown to me. THat's simply not right if you catch my drift :-) Each block ID
is stored on a big endian 2 bytes, although I haven't seen any MTS files yet that used more than 255 block types per file. Also
most files store "air" block type in the first type (block ID being 0), but this is not mandatory unfortunately.
Orientation is NOT defined in any way, there's absolutely no convention. MTSEdit however prefers to save schematics in a
standardized way, that is, the entrance is on the South side. You can use the "Change Oriantation" icon in the editor to

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -6,6 +6,20 @@ will ask the user for a file name. All the others print a usage to stdout.
See also [batch mode usage](https://gitlab.com/bztsrc/mtsedit/blob/master/docs/batch.md).
Configuration
-------------
See [blocks.csv](https://gitlab.com/bztsrc/mtsedit/blob/master/docs/blocks.md).
The User Interface is translatable. It should detect your computer's language automatically, but if not, set the `LANG`
environment variable. Supported languages: "en" English, "hu" Magyar, "es" Español, "fr" Français, "de" Deutch, "pl" Polski,
"ru" русский. Note that block names are user provided, there's no translation for those, unless you provide translate.(lang).txt
files.
```
LANG=hu ./mtsedit monkeyisland.mts
```
Interactive Mode
----------------
@ -54,8 +68,7 @@ Main editor window:
| arrows | select current block |
| <kbd>Space</kbd> | place selected block |
| <kbd>Backspace</kbd> | erase current block |
| <kbd>Z</kbd> | undo last node placement / erase |
| <kbd>Y</kbd> | redo node placement from history |
| <kbd>Enter</kbd> | flood fill (or erase) entire areas |
| <kbd>Ctrl</kbd> + arrows | scroll the editor area |
| <kbd>Shift</kbd> + up / down | move the upper layers up and down |
| <kbd>Shift</kbd> + left | rotate the current block counter clock-wise |
@ -66,9 +79,21 @@ Main editor window:
| <kbd>Shift</kbd> + <kbd>S</kbd> | open save as window |
| <kbd>P</kbd> | save preview PNG |
| <kbd>Shift</kbd> + <kbd>P</kbd> | save preview with structure cut in half |
| <kbd>F</kbd> | flip the entire structure along the Z axis |
| <kbd>R</kbd> | change orientation, rotate entire structure CCW |
| <kbd>Shift</kbd> + <kbd>R</kbd> | change orientation, rotate entire structure CW |
| <kbd>F</kbd> | flip the entire structure along the Z axis |
| <kbd>Y</kbd> | redo node placement from history |
| <kbd>Z</kbd> | undo last node placement / erase |
| <kbd>X</kbd> | insert a new, emtpy Y layer |
| <kbd>Shift</kbd> + <kbd>X</kbd> | duplicate current Y layer |
| <kbd>Ctrl</kbd> + <kbd>X</kbd> | remove current Y layer |
| <kbd>C</kbd> | insert a new, empty X layer |
| <kbd>Shift</kbd> + <kbd>C</kbd> | duplicate current X layer |
| <kbd>Ctrl</kbd> + <kbd>C</kbd> | remove current X layer |
| <kbd>V</kbd> | insert a new , empty Z layer |
| <kbd>Shift</kbd> + <kbd>V</kbd> | duplicate current Z layer |
| <kbd>Ctrl</kbd> + <kbd>V</kbd> | remove current Z layer |
| <kbd>B</kbd> | select brush (use geometric objects) |
| <kbd>M</kbd> / <kbd>Tab</kbd> | open block map, search all available blocks |
| <kbd>0</kbd>, <kbd>Backquote</kbd> | select Air block (erase mode) |
| <kbd>1</kbd> - <kbd>9</kbd> | quickly access one of the blocks from the palette |

View File

@ -5,7 +5,7 @@ This is a little mod that connects MTSEdit to Minetest. With the "/mtsedit" chat
[blocks.csv](https://gitlab.com/bztsrc/mtsedit/blob/master/docs/blocks.md), which is used to correlate block types
between different Minetest games and Minecraft.
You can also save and MTS files from your world, but most importantly, you can load the MTS files that you edited with MTSEdit.
You can also save and MTS files from your world, but most importantly, you can load the MTS files that you've created with MTSEdit.
Installation
------------
@ -19,7 +19,7 @@ None. This mod works on its own, has absolutely zero dependency.
__IMPORTANT__: the Lua API can't access files outside of the world directory, so you have to copy your existing blocks.csv
there (on Linux "~/.minetest/worlds/(world name)"), run the chat command, then copy the result back to /usr/share/mtsedit.
Likewise, you have to place your schematic files under "(world directory)/schems/".
Likewise, you have to place your schematic files under "(world directory)/schems/", other directories are not reachable from Lua.
Usage
-----
@ -35,7 +35,7 @@ or
```
/mtsedit help
```
to get help. When you first issue this command, it will give you a "MTSEdit Magic Placement Wand Tool" (TM) :-)
to get help. When you first run this command, it will give you a "MTSEdit Magic Placement Wand Tool" (TM) :-)
### Exporting node data for MTSEdit
@ -45,8 +45,8 @@ In the chat window issue the following command
/mtsedit export Minetest Game
```
Where the argument is one of the coloumns in block.csv, so called node palette. If the csv exists, then this mod will read
it, and it will only update one coloumn. If the file does not exists, then it will be created. If it exists, but there's
no such coloumn as specified in the argument, then a new palette will be created.
it, and it will only update that particular one coloumn. If the file does not exists, then it will be created. If it exists,
but there's no such coloumn as specified in the argument, then a new node palette will be created.
The Lua script tries to figure out which node is which, but because you can enable lots of mods in Minetest (each allowed to
register it's own node types), that's not an easy task. It does a pretty decent job though, usually about 80% of the records
@ -55,12 +55,12 @@ which also contains the Minecraft NBT .schematic files' Block IDs.
### Importing MTS files
For that, enter chat and issue
For that, enter chat and run
```
/mtsedit load (file name)
```
Exit chat (with <kbd>Esc</kbd>) and use the mtsedit wand with right clicking on a node where you want to build the structure.
Exit chat (with <kbd>Esc</kbd>) and use the MTSEdit Wand with right clicking on a node where you want to build the structure.
That's all. Depending on which direction you're looking at your punched node, the structure's orientation will change. You can
repeat this right click as many times as you want. The same structure will be placed until you issue another "/mtsedit load"
command.
@ -70,17 +70,24 @@ To help you with the files,
```
/mtsedit list
```
will list the contents of your world directory's "schems" sub-dir.
will list the available MTS files in your world directory's "schems" sub-dir.
### Exporting MTS files
First, select one corner of the area that you want to save. Left click on that node with the mtsedit wand. Then go to the opposite
corner of the area (you probably want to get fly priv), and left click on the air (without selecting any particular nodes). A
green selection cube will appear arround the area. You can modify it as many times as you'd like. When you're satisfied, go
to the chat window, and
First, select one corner of the area that you want to save: left click on a node with the MTSEdit Wand. Then go to the opposite
corner of the area (you probably want to get fly priv), and left click on the air (without selecting any particular node). A
green selection cube will appear arround the area. You can modify this as many times as you'd like. If by any chance you can't
reach the exact edges of the desired area, then you can grow (or with negative values, shrink) it using chat commands:
```
/mtsedit grow (delta)
```
When you're satisfied with the selection, go to the chat window, and
```
/mtsedit save (file name)
```
will save that area into an MTS file. After that you can open it with MTSEdit outside of the game.
will save that area into an MTS file into the "schems" directory. After that you can open it with MTSEdit outside of the game.
Enjoy!

View File

@ -335,6 +335,21 @@ function mtsedit.save(name, param)
return false, S("Unable to write @1", fn)
end
-- Grow or shrink the selected area
function mtsedit.grow(name, param)
if param == nil or param == "" then
return false, S("Specify <delta> value")
end
if mtsedit.savestat[name] ~= nil and mtsedit.savestat[name][1] ~= nil then
local props = mtsedit.savestat[name][1]:get_properties()
if props ~= nil and props["visual_size"] ~= nil then
local siz = props["visual_size"]
mtsedit.savestat[name][1]:set_properties({visual_size={x=siz.x + param, y=siz.y + param, z=siz.z + param}})
end
end
return true, ""
end
-- Register selected area marker
minetest.register_entity(":mtsedit:selection", {
initial_properties = {
@ -412,6 +427,7 @@ minetest.register_chatcommand("mtsedit", {
minetest.chat_send_player(name, " /mtsedit load <mts> - " .. S("Load an MTS file from \"(world directory)/schems/<schematic>.mts\" into the world"))
minetest.chat_send_player(name, " /mtsedit list - " .. S("Show available schematic files"))
minetest.chat_send_player(name, " /mtsedit save <mts> - " .. S("Save the selected area into an MTS file"))
minetest.chat_send_player(name, " /mtsedit grow <delta> - " .. S("Grow or shrink the selected area"))
minetest.chat_send_player(name, " /mtsedit export <palette> - " .. S("Export node data to <palette> column of \"(world directory)/blocks.csv\""))
minetest.chat_send_player(name, " /mtsedit imgs - " .. S("Export node texture data to \"(world directory)/blockimgs.csv\""))
else
@ -420,6 +436,7 @@ minetest.register_chatcommand("mtsedit", {
if string.sub(param, 1, 4) == "load" then return mtsedit.load(name, arg)
elseif string.sub(param, 1, 4) == "list" then return mtsedit.list(name)
elseif string.sub(param, 1, 4) == "save" then return mtsedit.save(name, arg)
elseif string.sub(param, 1, 4) == "grow" then return mtsedit.grow(name, arg)
elseif string.sub(param, 1, 6) == "export" then return mtsedit.export(arg)
elseif string.sub(param, 1, 4) == "imgs" then return mtsedit.imgs()
else return false, S("Unknown mtsedit command") end

View File

@ -0,0 +1,22 @@
# textdomain: mtsedit
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=Spezifiziere <palette> (zum Beispiel "Mineclone2", "Minetest Game" usw.)
Unable to write @1=@1 kann nicht geschrieben werden
@1 saved.=@1 gespeichert.
Specify <schematic> file=Schemadatei <schematisch> angeben
Failed to load @1=Laden von @1 fehlgeschlagen
Schematic loaded, use right click with the placement tool in your inventory=Wenn das Schema geladen ist, klicken Sie mit der rechten Maustaste auf das Placement-Tool in Ihrem Inventar
Select an area first by left clicking with the placement tool=Wählen Sie zuerst einen Bereich aus, indem Sie mit dem Platzierungswerkzeug auf die linke Maustaste klicken
Area=Bereich
Specify <delta> value=Geben Sie den Wert <Delta> an
Place the loaded structure=Platzieren Sie die geladene Struktur
Failed to place the schematic @1=Schaltplan @1 konnte nicht platziert werden
First use the "/mtsedit load" chat command to load a schematic=Verwenden Sie zuerst den Chat-Befehl "/mtsedit load", um einen Schemadaten zu laden
Load and save MTS files easily or export MTSEdit block data=Laden und speichern Sie MTS-Dateien einfach oder exportieren Sie MTSEdit-Blockdaten
[load|list|save|export|imgs|help] [file]=[load|list|save|export|imgs|help] [Datei]
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=Laden Sie eine MTS-Datei aus "(Weltverzeichnis)/schems/<schematisch>.mts" in die Welt
Show available schematic files=Verfügbare Schemadateien anzeigen
Save the selected area into an MTS file=Speichern Sie den ausgewählten Bereich in einer MTS-Datei
Grow or shrink the selected area=Vergrößern oder verkleinern Sie den ausgewählten Bereich
Export node data to <palette> column of "(world directory)/blocks.csv"=Knotendaten in die Spalte <palette> von "(Weltverzeichnis)/blocks.csv" exportieren
Export node texture data to "(world directory)/blockimgs.csv"=Knotentexturdaten nach "(Weltverzeichnis)/blockimgs.csv" exportieren
Unknown mtsedit command=Unbekannter mtsedit Befehl

View File

@ -0,0 +1,22 @@
# textdomain: mtsedit
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=Especifique <paleta> (como "Mineclone2", "Minetest Game", etc.)
Unable to write @1=No se puede escribir @1
@1 saved.=@1 guardado.
Specify <schematic> file=Especificar archivo <esquemático>
Failed to load @1=Error al cargar @1
Schematic loaded, use right click with the placement tool in your inventory=Esquema cargado, use el botón derecho con la herramienta de colocación en su inventario
Select an area first by left clicking with the placement tool=Seleccione un área primero haciendo clic izquierdo con la herramienta de colocación
Area=Zona
Specify <delta> value=Especifique el valor <delta>
Place the loaded structure=Coloque la estructura cargada
Failed to place the schematic @1=Error al colocar el esquema @1
First use the "/mtsedit load" chat command to load a schematic=Primero use el comando de chat "/mtsedit load" para cargar un esquema
Load and save MTS files easily or export MTSEdit block data=Cargue y guarde archivos MTS fácilmente o exporte datos de bloque MTSEdit
[load|list|save|export|imgs|help] [file]=[load|list|save|export|imgs|help] [archivo]
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=Cargue un archivo MTS de "(directorio mundial)/schems/<esquemático>.mts" en el mundo
Show available schematic files=Mostrar archivos esquemáticos disponibles
Save the selected area into an MTS file=Guardar el área seleccionada en un archivo MTS
Grow or shrink the selected area=Crecer o reducir el área seleccionada
Export node data to <palette> column of "(world directory)/blocks.csv"=Exportar datos de nodo a la columna <paleta> de "(directorio mundial)/blocks.csv"
Export node texture data to "(world directory)/blockimgs.csv"=Exportar datos de textura de nodo a "(directorio mundial)/blockimgs.csv"
Unknown mtsedit command=Comando mtsedit desconocido

View File

@ -0,0 +1,22 @@
# textdomain: mtsedit
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=Spécifiez <palette> (comme "Mineclone2", "Minetest Game" etc.)
Unable to write @1=Impossible d'écrire @1
@1 saved.=@1 enregistré.
Specify <schematic> file=Spécifier le fichier <schématique>
Failed to load @1=Impossible de charger @1
Schematic loaded, use right click with the placement tool in your inventory=Schéma chargé, utilisez le clic droit avec l'outil de placement dans votre inventaire
Select an area first by left clicking with the placement tool=Sélectionnez d'abord une zone en cliquant à gauche avec l'outil de placement
Area=Région
Specify <delta> value=Spécifiez la valeur <delta>
Place the loaded structure=Placez la structure chargée
Failed to place the schematic @1=Impossible de placer le schéma @1
First use the "/mtsedit load" chat command to load a schematic=Commencez par utiliser la commande de discussion "/mtsedit load" pour charger un schéma
Load and save MTS files easily or export MTSEdit block data=Chargez et enregistrez facilement des fichiers MTS ou exportez des données de bloc MTSEdit
[load|list|save|export|imgs|help] [file]=[load|list|save|export|imgs|help] [fichier]
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=Charger un fichier MTS de "(répertoire du monde)/schems/<schématique>.mts" dans le monde
Show available schematic files=Afficher les fichiers schématiques disponibles
Save the selected area into an MTS file=Enregistrer la zone sélectionnée dans un fichier MTS
Grow or shrink the selected area=Agrandir ou réduire la zone sélectionnée
Export node data to <palette> column of "(world directory)/blocks.csv"=Exporter les données du noeud dans la colonne <palette> de "(répertoire mondial)/blocks.csv"
Export node texture data to "(world directory)/blockimgs.csv"=Exporter les données de texture du nœud vers "(répertoire mondial)/blockimgs.csv"
Unknown mtsedit command=Commande mtsedit inconnue

View File

@ -0,0 +1,22 @@
# textdomain: mtsedit
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=Adj meg <palettát> (pl. "Mineclone2", "Minetest Game" stb.)
Unable to write @1=Nem tudom írni @1
@1 saved.=@1 elmentve.
Specify <schematic> file=Adj meg <sematika> fájlt
Failed to load @1=Nem tudom betölteni @1
Schematic loaded, use right click with the placement tool in your inventory=Betöltve, jobbkattints az eszköztáradban lévő elhelyező pálcával
Select an area first by left clicking with the placement tool=Előbb jelölj ki egy területet az elhelyező pálcával
Area=Terület
Specify <delta> value=Adj meg <delta> értéket
Place the loaded structure=Betöltött struktúra elhelyezése
Failed to place the schematic @1=Nem sikerült elhelyezni @1
First use the "/mtsedit load" chat command to load a schematic=Előbb tölts be valamit a "/mtsedit load" paranccsal
Load and save MTS files easily or export MTSEdit block data=MTS fájlok mentése és betöltése, MTSEdit adatok exportálása
[load|list|save|export|imgs|help] [file]=[load|list|save|export|imgs|help] [fájl]
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=MTS fájl betöltése a "(világ mappa)/schems" könyvtárból
Show available schematic files=Elérhető sematika fájlok listázása
Save the selected area into an MTS file=Kijelölt terület elmentése MTS fájlba
Grow or shrink the selected area=Kijelölt terület növelése vagy csökkentése
Export node data to <palette> column of "(world directory)/blocks.csv"=Blokkadatok exportálása a "(világ mappa)/blocks.csv" fájl <paletta> oszlopába
Export node texture data to "(world directory)/blockimgs.csv"=Textúraadatok exportálása a "(világ mappa)/blockimgs.csv" fájlba
Unknown mtsedit command=Ismeretlen mtsedit parancs

View File

@ -0,0 +1,22 @@
# textdomain: mtsedit
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=Podaj <palette> (jak „Mineclone2”, „Minetest Game” itp.)
Unable to write @1=Nie można napisać @1
@1 saved.=@1 zapisane.
Specify <schematic> file=Podaj plik <schematyczny>
Failed to load @1=Nie udało się załadować @1
Schematic loaded, use right click with the placement tool in your inventory=Załadowany schemat, kliknij prawym przyciskiem myszy narzędzie do rozmieszczania w ekwipunku
Select an area first by left clicking with the placement tool=Najpierw wybierz obszar, klikając lewym przyciskiem myszy za pomocą narzędzia rozmieszczania
Area=Powierzchnia
Specify <delta> value=Podaj wartość <delta>
Place the loaded structure=Umieść załadowaną strukturę
Failed to place the schematic @1=Nie udało się umieścić schematu @1
First use the "/mtsedit load" chat command to load a schematic=Najpierw użyj polecenia czatu „/mtsedit load”, aby załadować schemat
Load and save MTS files easily or export MTSEdit block data=Łatwe ładowanie i zapisywanie plików MTS lub eksport danych bloku MTSEdit
[load|list|save|export|imgs|help] [file]=[load|list|save|export|imgs|help] [plik]
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=Załaduj plik MTS z „(światowy katalog)/schems/<schematyczny>.mts” na świat
Show available schematic files=Pokaż dostępne pliki schematów
Save the selected area into an MTS file=Zapisz wybrany obszar w pliku MTS
Grow or shrink the selected area=Powiększ lub zmniejsz wybrany obszar
Export node data to <palette> column of "(world directory)/blocks.csv"=Eksportuj dane węzła do kolumny <palette> w katalogu „(światowy katalog)/blocks.csv”
Export node texture data to "(world directory)/blockimgs.csv"=Eksportuj dane tekstury węzła do „(światowy katalog)/blockimgs.csv”
Unknown mtsedit command=Nieznane mtsedit polecenie

View File

@ -0,0 +1,22 @@
# textdomain: mtsedit
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=Укажите <palette> (например, «Mineclone2», «Minetest Game» и т. Д.)
Unable to write @1=Невозможно написать @1
@1 saved.=@1 сохранено.
Specify <schematic> file=Укажите файл <схематический>
Failed to load @1=Не удалось загрузить @1
Schematic loaded, use right click with the placement tool in your inventory=Схема загружена, используйте правую кнопку мыши с инструментом размещения в вашем инвентаре
Select an area first by left clicking with the placement tool=Сначала выберите область, щелкнув левой кнопкой мыши с помощью инструмента размещения
Area=Площадь
Specify <delta> value=Укажите значение <delta>
Place the loaded structure=Поместите загруженную структуру
Failed to place the schematic @1=Не удалось разместить схему @1
First use the "/mtsedit load" chat command to load a schematic=Сначала используйте команду чата "/mtsedit load", чтобы загрузить схему
Load and save MTS files easily or export MTSEdit block data=Легко загружайте и сохраняйте файлы MTS или экспортируйте данные блока MTSEdit
[load|list|save|export|imgs|help] [file]=[load|list|save|export|imgs|help] [файл]
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=Загрузите файл MTS из "(мировой каталог)/schems/<схематический>.mts" в мир
Show available schematic files=Показать доступные файлы схемы
Save the selected area into an MTS file=Сохранить выбранную область в файл MTS
Grow or shrink the selected area=Расти или уменьшай выделенную область
Export node data to <palette> column of "(world directory)/blocks.csv"=Экспорт данных узла в столбец <palette> в "(мировой каталог)/blocks.csv"
Export node texture data to "(world directory)/blockimgs.csv"=Экспорт данных текстуры узла в "(мировой каталог)/blockimgs.csv"
Unknown mtsedit command=Неизвестная mtsedit команда

View File

@ -1,19 +1,22 @@
# textdomain: mtsedit
Load and save MTS files easily or export MTSEdit block data=
[load|export|imgs|help] [file]=
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=
Show available schematic files=
Save the selected area into an MTS file=
Export node data to <palette> column of "(world directory)/blocks.csv"=
Export node texture data to "(world directory)/blockimgs.csv"=
Unknown mtsedit command=
Specify <palette> (like "Mineclone2", "Minetest Game" etc.)=
Unable to write @1=
@1 saved.=
Specify <schematic> file=
Failed to load @1=
Schematic loaded, use the placement tool in your inventory=
Schematic loaded, use right click with the placement tool in your inventory=
Select an area first by left clicking with the placement tool=
Area=
Specify <delta> value=
Place the loaded structure=
Failed to place the schematic @1=
First use the "/mtsedit load" chat command to load a schematic=
Select an area first by left clicking with the placement tool
Area=
Load and save MTS files easily or export MTSEdit block data=
[load|list|save|export|imgs|help] [file]=
Load an MTS file from "(world directory)/schems/<schematic>.mts" into the world=
Show available schematic files=
Save the selected area into an MTS file=
Grow or shrink the selected area=
Export node data to <palette> column of "(world directory)/blocks.csv"=
Export node texture data to "(world directory)/blockimgs.csv"=
Unknown mtsedit command=

View File

@ -1,12 +1,20 @@
TARGET = mtsedit
# --- set these according to your configuration ---
MINGWSDL = ../..
MACSDL = /Library/Frameworks/SDL2.framework/Headers
# -------------------------------------------------
TARGET = mtsedit
SRCS = $(wildcard *.c)
CFLAGS = -Wall -Wextra -ansi -pedantic -g
# MacOSX
ifneq ("$(wildcard /Library/Frameworks/SDL*)","")
CFLAGS += -I/usr/include/SDL2
ifneq ("$(wildcard $(MACSDL)/SDL.h)","")
CFLAGS += -I/usr/include/SDL2 -I$(MACSDL)
LIBS = -framework SDL
else
ifneq ("$(wildcard ~/Libraru/Frameworks/SDL2.framework/Headers/SDL2/SDL.h)","")
CFLAGS += -I/usr/include/SDL2 -I~/Libraru/Frameworks/SDL2.framework/Headers/SDL2
LIBS = -framework SDL
else
# Linux
@ -22,6 +30,7 @@ LIBS = -lSDL2 -lcomdlg32 -luser32
endif
endif
endif
endif
OBJS = icons.o font.o $(SRCS:.c=.o)
@ -29,7 +38,9 @@ all: configure $(OBJS) $(TARGET)
configure:
ifeq ("$(LIBS)","")
@echo "No ui driver can be detected. Install libsdl2-dev."
@echo "No headers found, ui driver cannot be detected. Install libsdl2-dev."
@echo "Also check if the header files are in MINGSDL or MACSDL paths."
@echo "Try to run 'find / -name SDL.h' in a terminal to find the header."
@false
endif

View File

@ -126,14 +126,15 @@ void parseblocks()
{
stbi__context sc;
stbi__result_info ri;
int w, h, l;
unsigned int numfiles = 0, i, j, k;
int w, h, l, r;
unsigned int numfiles = 0, i, j, k, m, *tmp;
char **files = NULL, *used, c, *s, *e;
DIR *dir;
struct dirent *de;
unsigned int size;
unsigned char *img;
char *data = (char*)readfile("blocks.csv", &size);
char *tr, trname[16], *t, **trl = NULL;
if(!data || !size) error(lang[ERR_CSV]);
@ -159,6 +160,22 @@ void parseblocks()
if(!used) error(lang[ERR_MEM]);
memset(used, 0, numfiles);
/* read block name dictionary if exists */
sprintf(trname, "blocks_%c%c.txt", lang[-1][0], lang[-1][1]);
tr = (char*)readfile(trname, &size);
if(tr) {
for(e = tr, i = 0; *e; e++) {
while(*e == '\r' || *e == '\n' || *e == ' ' || *e == '\t') e++;
trl = (char**)realloc(trl, (i+2) * sizeof(char*));
if(!trl) error(lang[ERR_MEM]);
trl[i++] = e;
while(*e && *e != '\r' && *e != '\n') e++;
if(!*e) break;
*e = 0;
}
if(trl && i) trl[i] = NULL;
}
/* parse header */
for(e = data, i = j = 0; *e && *e != '\r' && *e != '\n' && i < 3; e++) {
if(*e == '\"') j ^= 1;
@ -187,9 +204,12 @@ void parseblocks()
blocks = (mtsblock_t*)realloc(blocks, numblocks * sizeof(mtsblock_t));
if(!blocks) error(lang[ERR_MEM]);
memset(&blocks[0], 0, sizeof(mtsblock_t));
blocks[0].name = (char*)malloc(4);
for(m = 0, t = NULL; trl && trl[m]; m++)
if(!memcmp(trl[m], "Air=", 4)) { t = trl[m] + 4; break; }
if(!t) t = lang[AIR];
blocks[0].name = (char*)malloc(strlen(t)+1);
if(!blocks[0].name) error(lang[ERR_MEM]);
memcpy(blocks[0].name, "Air", 4);
strcpy(blocks[0].name, t);
blocks[0].blocknames = (char**)malloc((numpalettes + 1) * sizeof(char*));
if(!blocks[0].blocknames) error(lang[ERR_MEM]);
blocks[0].blocknames[0] = NULL;
@ -214,15 +234,18 @@ void parseblocks()
blocks = (mtsblock_t*)realloc(blocks, numblocks * sizeof(mtsblock_t));
if(!blocks) error(lang[ERR_MEM]);
memset(&blocks[j], 0, sizeof(mtsblock_t));
blocks[j].name = (char*)malloc(e - s + 1);
if(!blocks[j].name) error(lang[ERR_MEM]);
blocks[j].blocknames = (char**)malloc((numpalettes + 1) * sizeof(char*));
if(!blocks[j].blocknames) error(lang[ERR_MEM]);
memset(blocks[j].blocknames, 0, (numpalettes + 1) * sizeof(char*));
for(i = 0; s + i < e; i++) {
blocks[j].name[i] = s[i] == '_' ? ' ' : s[i];
if(s[i] == ' ' || s[i] == '\'') s[i] = '_';
}
for(k = 0; s + k < e; k++)
if(s[k] == ' ' || s[k] == '\'') s[k] = '_';
/* translate block name */
for(m = 0, t = s; trl && trl[m]; m++)
if(!memcmp(trl[m], s, k) && trl[m][k] == '=') { t = trl[m] + k + 1; k = strlen(t); break; }
blocks[j].name = (char*)malloc(k + 1);
if(!blocks[j].name) error(lang[ERR_MEM]);
for(i = 0; i < k; i++)
blocks[j].name[i] = t[i] == '_' ? ' ' : t[i];
blocks[j].name[i] = 0;
/* get block images and possible param2 values */
memset(blocks[j].img, 0, sizeof(blocks[j].img));
@ -236,10 +259,31 @@ void parseblocks()
sc.img_buffer = sc.img_buffer_original = img;
sc.img_buffer_end = sc.img_buffer_original_end = img + size;
ri.bits_per_channel = 8;
blocks[j].img[k] = (unsigned char*)stbi__png_load(&sc, &w, &h, &l, 0, &ri);
blocks[j].img[k] = (unsigned char*)stbi__png_load(&sc, &w, &h, &r, 0, &ri);
if(blocks[j].img[k]) {
if(r != 4) {
tmp = (unsigned int *)malloc(32 * 32 * 4);
if(!tmp) error(lang[ERR_MEM]);
for(m = 0; m < 32 * 32; m++)
switch(r) {
case 1:
tmp[m] = 0xFF000000 | (blocks[j].img[k][m] << 16) | (blocks[j].img[k][m] << 8)
| (blocks[j].img[k][m]);
break;
case 2:
tmp[m] = (blocks[j].img[k][(m<<1)+1] << 24) | (blocks[j].img[k][m<<1] << 16) |
(blocks[j].img[k][m<<1] << 8) | (blocks[j].img[k][m<<1]);
break;
case 3:
tmp[m] = 0xFF000000 | (blocks[j].img[k][m*3+2] << 16) | (blocks[j].img[k][m*3+1] << 8)
| (blocks[j].img[k][m*3]);
break;
}
free(blocks[j].img[k]);
blocks[j].img[k] = (unsigned char*)tmp;
}
l++;
if(!dx || !dz || !memcmp(blocks[j].name, "Cobblestone", 12)) {
if(!dx || !dz || (!memcmp(s, "Cobblestone", 11) && s[11] != '_' && s[11] != ' ')) {
detcube(32, 32, blocks[j].img[k]);
dx = x1 - x0;
dz = y1 - y0;
@ -249,9 +293,8 @@ void parseblocks()
}
}
}
if(!l && verbose)
fprintf(stderr, "mtsedit: blocks.csv(%d): %s '%s'\r\n", j+1, lang[ERR_IMG], blocks[j].name);
while(*e && *e != ',' && *e != ';' && *e != '\t' && *e != '\r' && *e != '\n') e++;
if(!l && verbose) { *e = 0; fprintf(stderr, "mtsedit: blocks.csv(%d): %s '%s'\r\n", j+1, lang[ERR_IMG], s); }
while(*e == ' ') e++;
if(*e != ',' && *e != ';' && *e != '\t') errorcsv(j+1);
e++;
@ -298,6 +341,8 @@ void parseblocks()
fprintf(stderr, "mtsedit: '%s'?\r\n", files[i]);
free(files[i]);
}
if(tr) free(tr);
if(trl) free(trl);
free(files);
free(used);
free(data);

400
src/brush.c Normal file
View File

@ -0,0 +1,400 @@
/*
* mtsedit/brush.c
*
* Copyright (C) 2019 bzt (bztsrc@gitlab)
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* @brief Select Brush window and other brush functions
*
*/
#include "main.h"
#define BRUSHTYPEMAX 7
#define BRUSHCOORDMAX 127
int brush_type = 0, brush_hollow = 0, brush_x = 1, brush_y = 1, brush_z = 1;
int brushfld = 0, brushmax = 0;
char brushmask[BRUSHCOORDMAX*BRUSHCOORDMAX/8], brushmaskmax[BRUSHCOORDMAX];
/**
* Set the selected brush's mask. Only needed for globe really
*/
void brush_setmask(int needmax)
{
int i, x, y = 0, r, err;
memset(brushmask, 0, sizeof(brushmask));
if(needmax) memset(brushmaskmax, 0, sizeof(brushmaskmax));
if(brush_type && brush_type < 4 && brush_x >= 1) {
brush_x--;
/* one might think that it would be enough to solve the circle's equation, but they couldn't be more wrong. There are
* problems with rounding and accumulated errors, also there are spurious pixels. So we draw into a bitmask instead. */
x = -brush_x; err = 2 - 2 * brush_x;
do {
if(needmax && brushmaskmax[y] < -x) brushmaskmax[y] = -x;
if(brush_hollow)
brushmask[(y<<4)|((-x)>>3)] |= 1<<((-x)&7);
else
for(i = 0; i <= -x; i++)
brushmask[(y<<4)|(i>>3)] |= 1<<(i&7);
r = err;
if (r <= y) err += ++y * 2 + 1;
if (r > x || err > y) err += ++x * 2 + 1;
} while (x <= 0);
brush_x++;
}
}
/**
* Insert a brush at cursor position
*/
void brush_place(int blk)
{
int x, z, y, i, j;
switch(brush_type) {
case 0:
/* single node */
hist_prepare(HIST_NODE, 0);
edit_placenode(currlayer, cz, cx, blk);
break;
case 1:
/* globe */
hist_prepare(HIST_BRUSH, 2 * brush_x * 2 * brush_x * 2 * brush_x);
i = brush_x;
for(y = 0; brushmaskmax[y]; y++) {
if(brushmaskmax[y] + 1 != brush_x) {
brush_x = brushmaskmax[y] + 1;
brush_setmask(0);
}
for(z = 0; z <= brush_x; z++)
for(x = 0; x <= brush_x; x++)
if(brushmask[(z<<4)|(x>>3)] & (1<<(x&7))) {
edit_placenode(currlayer + y, cz - z, cx + x, blk);
edit_placenode(currlayer + y, cz + z, cx + x, blk);
edit_placenode(currlayer + y, cz - z, cx - x, blk);
edit_placenode(currlayer + y, cz + z, cx - x, blk);
edit_placenode(currlayer - y, cz - z, cx + x, blk);
edit_placenode(currlayer - y, cz + z, cx + x, blk);
edit_placenode(currlayer - y, cz - z, cx - x, blk);
edit_placenode(currlayer - y, cz + z, cx - x, blk);
if(brush_hollow) {
edit_placenode(currlayer + x, cz - z, cx + y, blk);
edit_placenode(currlayer + x, cz + z, cx + y, blk);
edit_placenode(currlayer + x, cz - z, cx - y, blk);
edit_placenode(currlayer + x, cz + z, cx - y, blk);
edit_placenode(currlayer - x, cz - z, cx + y, blk);
edit_placenode(currlayer - x, cz + z, cx + y, blk);
edit_placenode(currlayer - x, cz - z, cx - y, blk);
edit_placenode(currlayer - x, cz + z, cx - y, blk);
}
}
}
brush_x = i;
brush_setmask(0);
break;
case 2:
/* dome */
hist_prepare(HIST_BRUSH, 2 * brush_x * 2 * brush_x * (brush_x + 1));
i = brush_x;
for(y = 0; brushmaskmax[y]; y++) {
if(brushmaskmax[y] + 1 != brush_x) {
brush_x = brushmaskmax[y] + 1;
brush_setmask(0);
}
for(z = 0; z <= brush_x; z++)
for(x = 0; x <= brush_x; x++)
if(brushmask[(z<<4)|(x>>3)] & (1<<(x&7))) {
edit_placenode(currlayer + y, cz - z, cx + x, blk);
edit_placenode(currlayer + y, cz + z, cx + x, blk);
edit_placenode(currlayer + y, cz - z, cx - x, blk);
edit_placenode(currlayer + y, cz + z, cx - x, blk);
if(brush_hollow) {
edit_placenode(currlayer + x, cz - z, cx + y, blk);
edit_placenode(currlayer + x, cz + z, cx + y, blk);
edit_placenode(currlayer + x, cz - z, cx - y, blk);
edit_placenode(currlayer + x, cz + z, cx - y, blk);
}
}
}
brush_x = i;
brush_setmask(0);
break;
case 3:
/* cylinder */
hist_prepare(HIST_BRUSH, brush_x * brush_x * brush_x);
for(y = 0; y < brush_z; y++)
for(z = 0; z <= brush_x; z++)
for(x = 0; x <= brush_x; x++)
if(brushmask[(z<<4)|(x>>3)] & (1<<(x&7))) {
edit_placenode(currlayer + y, cz - z, cx + x, blk);
edit_placenode(currlayer + y, cz + z, cx + x, blk);
edit_placenode(currlayer + y, cz - z, cx - x, blk);
edit_placenode(currlayer + y, cz + z, cx - x, blk);
}
break;
case 4:
/* cuboid */
hist_prepare(HIST_BRUSH, brush_x * brush_x * brush_x);
for(y = 0; y < brush_y; y++)
for(z = 0; z < brush_z; z++)
for(x = 0; x < brush_x; x++)
if(!brush_hollow || (brush_y > 1 && (!y || y == brush_y - 1)) ||
!x || !z || x == brush_x - 1 || z == brush_z - 1)
edit_placenode(currlayer + y, cz - z, cx + x, blk);
break;
case 5:
/* pyramid */
hist_prepare(HIST_BRUSH, brush_x * brush_x * brush_x);
for(y = 0; y <= brush_y; y++) {
i = (brush_z - 1) * y / brush_y;
j = (brush_x - 1) * y / brush_y;
for(z = i; z < brush_z - i; z++)
for(x = j; x < brush_x - j; x++)
if(!brush_hollow || !y || x == j || z == i || x == brush_x - j - 1 || z == brush_z - i - 1)
edit_placenode(currlayer + y, cz - z, cx + x, blk);
}
break;
case 6:
/* upside-down pyramid */
hist_prepare(HIST_BRUSH, brush_x * brush_x * brush_x);
for(y = 0; y <= brush_y; y++) {
i = (brush_z - 1) * y / brush_y;
j = (brush_x - 1) * y / brush_y;
for(z = i; z < brush_z - i; z++)
for(x = j; x < brush_x - j; x++)
if(!brush_hollow || !y || x == j || z == i || x == brush_x - j - 1 || z == brush_z - i - 1)
edit_placenode(currlayer - y, cz - z, cx + x, blk);
}
break;
case 7:
/* roof / tent */
hist_prepare(HIST_BRUSH, brush_x * brush_x * brush_x);
for(y = 0; y <= brush_y; y++) {
j = (brush_x - 1) * y / brush_y;
for(z = 0; z < brush_z; z++)
for(x = j; x < brush_x - j; x++)
if(!brush_hollow || !y || x == j || !z || x == brush_x - j - 1 || z == brush_z - 1)
edit_placenode(currlayer + y, cz - z, cx + x, blk);
}
break;
}
hist_commit();
}
/**
* Reentrant filler
*/
void brush_dofill(int y, int z, int x, int old, int blk)
{
if(x >= 0 && x < 256 && y >= 0 && y < 256 && z >=0 && z < 256 && nodes[y][z][x].param0 == old) {
edit_placenode(y, z, x, blk);
nodes[y][z][x].param2 = 0;
brush_dofill(y - 1, z, x, old, blk);
brush_dofill(y + 1, z, x, old, blk);
brush_dofill(y, z - 1, x, old, blk);
brush_dofill(y, z + 1, x, old, blk);
brush_dofill(y, z, x - 1, old, blk);
brush_dofill(y, z, x + 1, old, blk);
}
}
/**
* Replace an entire area of the same block
*/
void brush_floodfill(int blk)
{
if(nodes[currlayer][cz][cx].param0 && blk != nodes[currlayer][cz][cx].param0 && nodes[currlayer][cz][cx].param0) {
hist_prepare(HIST_BRUSH, 1024);
brush_dofill(currlayer, cz, cx, nodes[currlayer][cz][cx].param0, blk);
hist_commit();
}
}
/**
* Return brush's height
*/
int brush_height()
{
return !brush_type ? 1 : (brush_type < 2 ? brush_x : (brush_type == 2 ? brush_z : brush_y));
}
/**
* Returns true if coordinates are inside the brush or on the edge (if hollow)
*/
int brush_selected(int x, int z)
{
int X = x - cx, Z = cz - z;
if(!brush_type || activetool != -1) return (!X && !Z);
if(brush_type && brush_type < 4) {
if(X < 0) X = -X;
if(Z < 0) Z = -Z;
return X > brush_x || Z > brush_x ? 0 : brushmask[(Z<<4)|(X>>3)] & (1<<(X&7));
}
return x < cx || z > cz || X >= brush_x || Z >= brush_z ? 0 :
(brush_hollow ? (!X || X == brush_x - 1 || !Z || Z == brush_z - 1) : 1);
}
/**
* Decrease one of the brush parameters
*/
void brush_dec()
{
switch(brushfld) {
case 0: if(brush_type) brush_type--; else brush_type = BRUSHTYPEMAX; break;
case 1: brush_hollow ^= 1; break;
case 2: if(brush_x > 1) brush_x--; break;
case 3: if(brush_z > 1) brush_z--; break;
case 4: if(brush_y > 1) brush_y--; break;
}
}
/**
* Increase one of the brush parameters
*/
void brush_inc()
{
switch(brushfld) {
case 0: if(brush_type < BRUSHTYPEMAX) brush_type++; else brush_type = 0; break;
case 1: brush_hollow ^= 1; break;
case 2: if(brush_x < BRUSHCOORDMAX) brush_x++; break;
case 3: if(brush_z < BRUSHCOORDMAX) brush_z++; break;
case 4: if(brush_y < BRUSHCOORDMAX) brush_y++; break;
}
}
/**
* Redraw the Select Brush window
*/
void brush_redraw()
{
char str[8] = "\xC2\x80\xC2\x80";
SDL_Rect src, dst;
brushmax = !brush_type ? 1 : (brush_type < 3 ? 3 : (brush_type == 3 ? 4 : 5));
src.x = src.y = dst.y = 0; dst.x = 36; src.w = dst.w = bg->w; src.h = dst.h = bg->h;
SDL_BlitSurface(bg, &src, screen, &dst);
SDL_BlitSurface(cl, &src, screen, &dst);
SDL_BlitSurface(fg, &src, screen, &dst);
dst.x = 38; dst.h = brushmax * (font->height + 2) + 6; dst.y = 84 + (3 * 36); dst.w = 128 + 6 * font->width + 6;
src.x = dst.x + 128; src.h = font->height;
SDL_FillRect(screen, &dst, theme[THEME_BG]);
strmaxw = 34 + dst.w; dst.y += 4;
sdlprint(dst.x + 4, dst.y, THEME_FG, THEME_BG, lang[TYPE]);
src.y = dst.y;
src.w = 4 * font->width + 4;
SDL_FillRect(screen, &src, theme[THEME_INPBG]);
sdlprint(src.x, dst.y, THEME_BG, !brushfld ? THEME_INPUT : THEME_FG, "\033");
strsep = 0;
str[1] = 0x80 + (4*brush_type) + (2*brush_hollow);
str[3] = 0x81 + (4*brush_type) + (2*brush_hollow);
sdlprint(src.x + font->width + font->width/2 + 1, dst.y, !brushfld ? THEME_INPUT : THEME_FG, THEME_INPBG, str);
sdlprint(src.x + 4*font->width + 4, dst.y, THEME_BG, !brushfld ? THEME_INPUT : THEME_FG, "\032");
strsep = 1; dst.y += font->height + 2;
if(brush_type) {
sdlprint(dst.x + 4, dst.y, THEME_FG, THEME_BG, lang[HOLLOW]);
src.y = dst.y;
src.w = font->width + font->width/2 + 2;
SDL_FillRect(screen, &src, theme[THEME_INPBG]);
sdlprint(src.x + font->width/4 + 1, src.y, brushfld == 1 ? THEME_INPUT : THEME_FG, THEME_INPBG, brush_hollow ? "x" : " ");
dst.y += font->height + 2;
sdlprint(dst.x + 4, dst.y, THEME_FG, THEME_BG, brush_type < 4 ? lang[RADIUS] : lang[WIDTH]);
src.y = dst.y;
src.w = 4 * font->width + 4;
SDL_FillRect(screen, &src, theme[THEME_INPBG]);
sprintf(str, "%3d", brush_x);
sdlprint(src.x, dst.y, THEME_BG, brushfld == 2 ? THEME_INPUT : THEME_FG, "-");
sdlprint(src.x + font->width + 1, dst.y, brushfld == 2 ? THEME_INPUT : THEME_FG, THEME_INPBG, str);
sdlprint(src.x + 4*font->width + 4, dst.y, THEME_BG, brushfld == 2 ? THEME_INPUT : THEME_FG, "+");
dst.y += font->height + 2;
if(brush_type > 2) {
sdlprint(dst.x + 4, dst.y, THEME_FG, THEME_BG, brush_type == 3 ? lang[HEIGHT] : lang[LENGTH]);
src.y = dst.y;
src.w = 4 * font->width + 4;
SDL_FillRect(screen, &src, theme[THEME_INPBG]);
sprintf(str, "%3d", brush_z);
sdlprint(src.x, dst.y, THEME_BG, brushfld == 3 ? THEME_INPUT : THEME_FG, "-");
sdlprint(src.x + font->width + 1, dst.y, brushfld == 3 ? THEME_INPUT : THEME_FG, THEME_INPBG, str);
sdlprint(src.x + 4*font->width + 4, dst.y, THEME_BG, brushfld == 3 ? THEME_INPUT : THEME_FG, "+");
dst.y += font->height + 2;
if(brush_type > 3) {
sdlprint(dst.x + 4, dst.y, THEME_FG, THEME_BG, lang[HEIGHT]);
src.y = dst.y;
src.w = 4 * font->width + 4;
SDL_FillRect(screen, &src, theme[THEME_INPBG]);
sprintf(str, "%3d", brush_y);
sdlprint(src.x, dst.y, THEME_BG, brushfld == 4 ? THEME_INPUT : THEME_FG, "-");
sdlprint(src.x + font->width + 1, dst.y, brushfld == 4 ? THEME_INPUT : THEME_FG, THEME_INPBG, str);
sdlprint(src.x + 4*font->width + 4, dst.y, THEME_BG, brushfld == 4 ? THEME_INPUT : THEME_FG, "+");
dst.y += font->height + 2;
}
}
}
}
/**
* Select Brush window mouse down event handler
*/
int brush_mousedown(SDL_Event *event)
{
if(event->button.x > 38 + 128 + 6 * (int)font->width + 6 || event->button.y < 84 + (3 * 36) ||
event->button.y > brushmax * ((int)font->height + 2) + 8 + 84 + (3 * 36)) {
brush_setmask(1);
return 0;
}
brushfld = (event->button.y - 84 - (3 * 36) - 4) / (font->height + 2);
if(event->button.x >= 38+128 && event->button.x < 38+128 + 2 * (int)font->width) brush_dec();
else if(event->button.x >= 38+128 + 2 * (int)font->width) brush_inc();
brush_redraw();
return 1;
}
/**
* Select Brush window keypress event handler
*/
void brush_key(SDL_Event *event)
{
switch(event->type) {
case SDL_KEYUP:
switch (event->key.keysym.sym) {
case SDLK_UP: if(!brushfld) brushfld = brushmax - 1; else brushfld--; break;
case SDLK_DOWN: if(brushfld == brushmax - 1) brushfld = 0; else brushfld++; break;
case SDLK_LEFT: brush_dec(); break;
case SDLK_RIGHT: brush_inc(); break;
case SDLK_SPACE: brush_hollow ^= 1; break;
default:
brush_setmask(1);
sdldo(-1);
break;
}
break;
}
}

View File

@ -29,70 +29,35 @@
#include "main.h"
int dx = 0, dz = 0, cx = 0, cz = 0, ox = 0, oy = 0, up = 0;
int histcurr = 0, histmax = 0;
hist_t history[HISTORYMAX];
int dx = 0, dz = 0, cx = 0, cz = 0, ox = 0, oy = 0, up = 0, zoom = 32;
char dstr[32];
/**
* Add to history
*/
void edit_addhistory(int y, int z, int x, unsigned short op0, unsigned char op2, unsigned short np0, unsigned char np2)
{
if(op0 == np0 && op2 == np2) return;
if(histcurr != 0) {
memcpy(&history[0], &history[histcurr], (histmax - histcurr) * sizeof(hist_t));
histmax -= histcurr;
if(histmax < 0) histmax = 0;
}
if(histmax)
memmove(&history[1], &history[0], histmax * sizeof(hist_t));
if(histmax + 1< HISTORYMAX) histmax++;
history[0].x = x;
history[0].y = y;
history[0].z = z;
history[0].oldparam0 = op0;
history[0].oldparam2 = op2;
history[0].newparam0 = np0;
history[0].newparam2 = np2;
histcurr = 0;
}
/**
* Undo from history
*/
void edit_undo()
{
if(histcurr < histmax) {
nodes[history[histcurr].y][history[histcurr].z][history[histcurr].x].param0 = history[histcurr].oldparam0;
nodes[history[histcurr].y][history[histcurr].z][history[histcurr].x].param2 = history[histcurr].oldparam2;
if(currlayer == history[histcurr].y && cz == history[histcurr].z && cx == history[histcurr].x)
status = history[histcurr].oldparam0 ? blocks[history[histcurr].oldparam0].name : NULL;
histcurr++;
}
}
/**
* Redo from history
*/
void edit_redo()
{
if(histcurr) {
histcurr--;
nodes[history[histcurr].y][history[histcurr].z][history[histcurr].x].param0 = history[histcurr].newparam0;
nodes[history[histcurr].y][history[histcurr].z][history[histcurr].x].param2 = history[histcurr].newparam2;
if(currlayer == history[histcurr].y && cz == history[histcurr].z && cx == history[histcurr].x)
status = history[histcurr].newparam0 ? blocks[history[histcurr].newparam0].name : NULL;
}
}
/**
* Place a node
*/
void edit_placenode(int y, int z, int x, int i)
{
if(i != nodes[y][z][x].param0) {
edit_addhistory(y, z, x, nodes[y][z][x].param0, nodes[y][z][x].param2, i, nodes[y][z][x].param2);
int j, k;
if(x >= 0 && x < 256 && y >= 0 && y < 256 && z >=0 && z < 256 && i != nodes[y][z][x].param0) {
mts_getbounds(0, NULL, NULL);
hist_add(y, z, x, nodes[y][z][x].param0, nodes[y][z][x].param2, i, nodes[y][z][x].param2);
if(i) {
if(x < mix) mix = x;
if(x > max) max = x;
if(y < miy) miy = y;
if(y > may) may = y;
if(z < miz) miz = z;
if(z > maz) maz = z;
if(nodes[y][z][x].param0) {
for(k = 0, j = 1; j < 15; j++)
if(palette[j] == nodes[y][z][x].param0) { k = j; break; }
if(!k) {
for(j = 15; j > activeblock + 1; j--) palette[j] = palette[j - 1];
palette[activeblock + 1] = nodes[y][z][x].param0;
}
}
}
blocks[nodes[y][z][x].param0].numref--;
blocks[i].numref++;
nodes[y][z][x].param0 = i;
@ -104,196 +69,122 @@ void edit_placenode(int y, int z, int x, int i)
/**
* Redraw the Edit Area
*/
void edit_redraw()
void edit_redraw(int full)
{
int i, j, k = 160, l, X, Z, x, y, z, sx, sy, mx;
unsigned char *b = (uint8_t*)&theme[THEME_TABBG];
SDL_Rect dst, src;
if(!dx || !dz) {
dst.x = 36; dst.y = 0; dst.w = screen->w - 36; dst.h = screen->h - font->height;
SDL_FillRect(screen, &dst, theme[THEME_TABBG]);
return;
}
mx = ((bg->w / 2 / dx) + (bg->h / 2 / dz)) /2;
sx = bg->w / 2;
sy = bg->h / 2;
dst.x = dst.y = 0; dst.w = bg->w; dst.h = bg->h;
SDL_FillRect(bg, &dst, theme[THEME_TABBG]);
src.x = 0; src.y = 4 * 32; dst.x = bg->w - 32; dst.y = bg->h - 32;
src.w = src.h = dst.w = dst.h = 32;
SDL_BlitSurface(icons, &src, bg, &dst);
memset(fg->pixels, 0, bg->pitch * fg->h);
src.w = src.h = dst.w = dst.h = 32; src.x = src.y = 0;
for(y = mx > currlayer ? 0 : currlayer - mx; y < currlayer; y++) {
for(z = -mx; z < mx; z++) {
for(x = -mx; x < mx; x++) {
dst.x = sx + dx * (x - z);
dst.y = sy + dz * (z + x + 2*(currlayer - y));
X = 127 + x + oy + ox;
Z = 127 + z + oy - ox;
if(X < 0 || X > 255 || Z < 0 || Z > 255 ||
dst.x + 32 < 0 || dst.x > bg->w || dst.y + 32 < 0 || dst.y > bg->h) continue;
i = nodes[y][Z][X].param0;
j = nodes[y][Z][X].param2 & 0x1F;
if(i) {
if(!blocks[i].dr[j]) {
blocks[i].dr[j] = (unsigned char *)malloc(32 * 32 * 4);
if(!blocks[i].dr[j]) error(lang[ERR_MEM]);
memcpy(blocks[i].dr[j], blocks[i].img[j] ? blocks[i].img[j] : (blocks[i].img[0] ? blocks[i].img[0] :
(uint8_t*)icons->pixels + 32 * icons->pitch), 32 * 32 * 4);
for(l = 0; l < 32 * 32 * 4; l += 4) {
blocks[i].dr[j][l+0] = (b[0]*k + (256 - k)*blocks[i].dr[j][l+0])>>8;
blocks[i].dr[j][l+1] = (b[0]*k + (256 - k)*blocks[i].dr[j][l+1])>>8;
blocks[i].dr[j][l+2] = (b[0]*k + (256 - k)*blocks[i].dr[j][l+2])>>8;
if(full) {
dst.x = dst.y = 0; dst.w = bg->w; dst.h = bg->h;
SDL_FillRect(bg, &dst, theme[THEME_TABBG]);
src.x = 0; src.y = 4 * 32; dst.x = bg->w - 32; dst.y = bg->h - 32;
src.w = src.h = dst.w = dst.h = 32;
SDL_BlitSurface(icons, &src, bg, &dst);
src.x = src.y = 0;
/* background, layers below */
for(y = mx > currlayer ? 0 : currlayer - mx; y < currlayer; y++) {
for(z = -mx; z < mx; z++) {
for(x = -mx; x < mx; x++) {
dst.x = sx + dx * (x - z);
dst.y = sy + dz * (z + x + 2*(currlayer - y));
X = 127 + x + oy + ox;
Z = 127 + z + oy - ox;
if(X < 0 || X > 255 || Z < 0 || Z > 255 ||
dst.x + 32 < 0 || dst.x > bg->w || dst.y + 32 < 0 || dst.y > bg->h) continue;
i = nodes[y][Z][X].param0;
j = nodes[y][Z][X].param2 & 0x1F;
if(i) {
if(!blocks[i].dr[j]) {
blocks[i].dr[j] = (unsigned char *)malloc(32 * 32 * 4);
if(!blocks[i].dr[j]) error(lang[ERR_MEM]);
memcpy(blocks[i].dr[j], blocks[i].img[j] ? blocks[i].img[j] : (blocks[i].img[0] ? blocks[i].img[0] :
(uint8_t*)icons->pixels + 32 * icons->pitch), 32 * 32 * 4);
for(l = 0; l < 32 * 32 * 4; l += 4) {
blocks[i].dr[j][l+0] = (b[0]*k + (256 - k)*blocks[i].dr[j][l+0])>>8;
blocks[i].dr[j][l+1] = (b[0]*k + (256 - k)*blocks[i].dr[j][l+1])>>8;
blocks[i].dr[j][l+2] = (b[0]*k + (256 - k)*blocks[i].dr[j][l+2])>>8;
}
}
blk->pixels = blocks[i].dr[j];
SDL_BlitSurface(blk, &src, bg, &dst);
}
blk->pixels = blocks[i].dr[j];
SDL_BlitSurface(blk, &src, bg, &dst);
}
}
}
/* foreground, layers above */
memset(fg->pixels, 0, fg->pitch * fg->h);
if(up > mx) up = mx;
for(y = currlayer + 1; y < (currlayer + mx < 255 ? currlayer + mx : 255); y++) {
for(z = -mx; z < mx; z++) {
for(x = -mx; x < mx; x++) {
dst.x = sx + dx * (x - z);
dst.y = sy + dz * (z + x + (currlayer - y - 1) - mx + up);
X = 127 + x + oy + ox;
Z = 127 + z + oy - ox;
if(X < 0 || X > 255 || Z < 0 || Z > 255 ||
dst.x + 32 < 36 || dst.x > fg->w || dst.y + 32 < 0 || dst.y > fg->h) continue;
i = nodes[y][Z][X].param0;
j = nodes[y][Z][X].param2 & 0x1F;
if(i) {
if(!blocks[i].tr[j]) {
blocks[i].tr[j] = (unsigned char *)malloc(32 * 32 *4);
if(!blocks[i].tr[j]) error(lang[ERR_MEM]);
memcpy(blocks[i].tr[j], blocks[i].img[j] ? blocks[i].img[j] : (blocks[i].img[0] ? blocks[i].img[0] :
(uint8_t*)icons->pixels + 32 * icons->pitch), 32 * 32 * 4);
for(l = 0; l < 32 * 32 * 4; l += 4) blocks[i].tr[j][l+3] >>= 2;
}
blk->pixels = blocks[i].tr[j];
SDL_BlitSurface(blk, &src, fg, &dst);
}
}
}
}
for(i = 0; i < fg->pitch * fg->h; i += 4) ((uint8_t*)fg->pixels)[i + 3] >>= 1;
}
/* current layer */
memset(cl->pixels, 0, cl->pitch * cl->h);
for(z = -mx; z < mx; z++) {
for(x = -mx; x < mx; x++) {
src.w = src.h = dst.w = dst.h = 32; src.x = src.y = 0;
dst.x = sx + dx * (x - z);
dst.y = sy + dz * (z + x);
X = 127 + x + oy + ox;
Z = 127 + z + oy - ox;
if(X < 0 || X > 255 || Z < 0 || Z > 255 ||
dst.x + 32 < 0 || dst.x > bg->w || dst.y + 32 < 0 || dst.y > bg->h) continue;
dst.x + 32 < 0 || dst.x > cl->w || dst.y + 32 < 0 || dst.y > cl->h) continue;
if(dst.x < 0) { src.x = -dst.x; src.w += dst.x; dst.w += dst.x; dst.x = 0; }
if(dst.y < 0) { src.y = -dst.y; src.h += dst.y; dst.h += dst.y; dst.y = 0; }
i = nodes[currlayer][Z][X].param0;
j = nodes[currlayer][Z][X].param2 & 0x1F;
if((X == cx && Z == cz) || brush_selected(X, Z)) {
blk->pixels = (uint8_t*)icons->pixels + 64 * icons->pitch;
SDL_BlitSurface(blk, &src, cl, &dst);
}
if(i) {
blk->pixels = blocks[i].img[j] ? blocks[i].img[j] : (blocks[i].img[0] ? blocks[i].img[0] :
(uint8_t*)icons->pixels + 32 * icons->pitch);
SDL_BlitSurface(blk, &src, bg, &dst);
SDL_BlitSurface(blk, &src, cl, &dst);
}
}
}
if(up > mx) up = mx;
for(y = currlayer + 1; y < (currlayer + mx < 255 ? currlayer + mx : 255); y++) {
for(z = -mx; z < mx; z++) {
for(x = -mx; x < mx; x++) {
dst.x = sx + dx * (x - z);
dst.y = sy + dz * (z + x + (currlayer - y - 1) - mx + up);
X = 127 + x + oy + ox;
Z = 127 + z + oy - ox;
if(X < 0 || X > 255 || Z < 0 || Z > 255 ||
dst.x + 32 < 36 || dst.x > fg->w || dst.y + 32 < 0 || dst.y > fg->h) continue;
i = nodes[y][Z][X].param0;
j = nodes[y][Z][X].param2 & 0x1F;
if(i) {
if(!blocks[i].tr[j]) {
blocks[i].tr[j] = (unsigned char *)malloc(32 * 32 *4);
if(!blocks[i].tr[j]) error(lang[ERR_MEM]);
memcpy(blocks[i].tr[j], blocks[i].img[j] ? blocks[i].img[j] : (blocks[i].img[0] ? blocks[i].img[0] :
(uint8_t*)icons->pixels + 32 * icons->pitch), 32 * 32 * 4);
for(l = 0; l < 32 * 32 * 4; l += 4) blocks[i].tr[j][l+3] >>= 2;
}
blk->pixels = blocks[i].tr[j];
SDL_BlitSurface(blk, &src, fg, &dst);
}
if((X == cx && Z == cz) || brush_selected(X, Z)) {
blk->pixels = (uint8_t*)icons->pixels + 96 * icons->pitch;
SDL_BlitSurface(blk, &src, cl, &dst);
}
}
}
src.x = src.y = dst.y = 0; dst.x = 36; src.w = dst.w = bg->w; src.h = dst.h = bg->h;
SDL_BlitSurface(bg, &src, screen, &dst);
SDL_BlitSurface(fg, &src, screen, &dst);
edit_showcursor(0);
}
/**
* Hide the block cursor
*/
void edit_hidecursor()
{
SDL_Rect src, dst;
int z = cz - 127 - oy + ox, x = cx - 127 - oy - ox;
src.x = dst.x = ((screen->w - 36) / 2) + dx * (x - z);
src.y = dst.y = ((screen->h - font->height) / 2) + dz * (z + x);
dst.x += 36; src.w = dst.w = src.h = dst.h = 32;
if(src.y < 0) { src.h += src.y; dst.h += src.y; src.y = dst.y = 0; }
SDL_BlitSurface(bg, &src, screen, &dst);
SDL_BlitSurface(fg, &src, screen, &dst);
}
/**
* Generate the block cursor
*/
void edit_gencursor(int onlybg)
{
SDL_Rect src, dst;
SDL_Surface *surface = onlybg ? bg : screen;
int i, j, x, z, sx = bg->w / 2, sy = bg->h / 2;
src.w = dst.w = src.h = dst.h = 32;
src.x = src.y = 0;
dst.x = sx + dx * ((cx - 127 - oy - ox) - (cz - 127 - oy + ox)) + (!onlybg ? 36 : 0);
dst.y = sy + dz * ((cz - 127 - oy + ox) + (cx - 127 - oy - ox));
SDL_SetClipRect(surface, &dst);
if(onlybg) {
SDL_FillRect(surface, &dst, theme[THEME_TABBG]);
if(currlayer > 0)
for(z = cz - 2; z <= cz + 2; z++) {
for(x = cx - 2; x <= cx + 2; x++) {
dst.w = dst.h = 32; src.y = 0;
dst.x = sx + dx * ((x - 127 - oy - ox) - (z - 127 - oy + ox)) + (!onlybg ? 36 : 0);
dst.y = sy + dz * ((z - 127 - oy + ox) + (x - 127 - oy - ox) + 2);
if(dst.y < 0) { src.y = -dst.y; dst.y = 0; }
if(x < 0 || x > 255 || z < 0 || z > 255 || dst.x + 32 < 0 || dst.x > surface->w || dst.y > surface->h)
continue;
i = nodes[currlayer-1][z][x].param0;
j = nodes[currlayer-1][z][x].param2 & 0x1F;
if(i) {
blk->pixels = blocks[i].dr[j];
SDL_BlitSurface(blk, &src, surface, &dst);
}
}
}
}
/* display 5 x 5 surrounding of the cursor block */
for(z = cz - 2; z <= cz + 2; z++) {
for(x = cx - 2; x <= cx + 2; x++) {
dst.w = dst.h = 32; src.y = 0;
dst.x = sx + dx * ((x - 127 - oy - ox) - (z - 127 - oy + ox)) + (!onlybg ? 36 : 0);
dst.y = sy + dz * ((z - 127 - oy + ox) + (x - 127 - oy - ox));
if(dst.y < 0) { src.y = -dst.y; dst.y = 0; }
if(x < 0 || x > 255 || z < 0 || z > 255 || dst.x + 32 < 0 || dst.x > surface->w || dst.y > surface->h) continue;
i = nodes[currlayer][z][x].param0;
j = nodes[currlayer][z][x].param2 & 0x1F;
if(!onlybg && z == cz && x == cx) {
blk->pixels = (uint8_t*)icons->pixels + 64 * icons->pitch;
SDL_BlitSurface(blk, &src, surface, &dst);
}
if(i) {
blk->pixels = blocks[i].img[j] ? blocks[i].img[j] : (blocks[i].img[0] ? blocks[i].img[0] :
(uint8_t*)icons->pixels + 32 * icons->pitch);
SDL_BlitSurface(blk, &src, surface, &dst);
}
if(!onlybg && z == cz && x == cx) {
blk->pixels = (uint8_t*)icons->pixels + 96 * icons->pitch;
SDL_BlitSurface(blk, &src, surface, &dst);
}
}
}
SDL_SetClipRect(surface, NULL);
}
/**
* Show the block cursor
*/
void edit_showcursor(int painting)
{
SDL_Rect src, dst, rect;
int z = cz - 127 - oy + ox, x = cx - 127 - oy - ox;
src.w = dst.w = src.h = dst.h = rect.w = rect.h = 32;
src.x = dst.x = ((screen->w - 36) / 2) + dx * (x - z);
src.y = dst.y = ((screen->h - font->height) / 2) + dz * (z + x);
rect.x = rect.y = 0; dst.x += 36;
if(src.y < 0) { src.h += src.y; dst.h += src.y; src.y = dst.y = 0; }
/* save back to the background when we're placing new blocks */
if(painting) edit_gencursor(1);
SDL_BlitSurface(bg, &src, screen, &dst);
edit_gencursor(0);
SDL_BlitSurface(cl, &src, screen, &dst);
SDL_BlitSurface(fg, &src, screen, &dst);
}
@ -326,13 +217,14 @@ void edit_scroll(SDL_Event *event)
*/
void edit_mouseover(SDL_Event *event)
{
int l, k;
int l, k, x, y, X = cx, Z = cz;
x = event->type == SDL_MOUSEMOTION ? event->motion.x : event->button.x;
y = event->type == SDL_MOUSEMOTION ? event->motion.y : event->button.y;
edit_hidecursor();
l = (int)(event->motion.y - (bg->h / 2));
l = (int)(y - (bg->h / 2));
if(l < 0) l -= dz;
l /= dz; l--;
k = (int)(event->motion.x - 36 - (bg-> w / 2) - dx/2);
k = (int)(x - 36 - (bg-> w / 2) - dx/2);
if(k < 0) k -= dx;
k -= (l & 1 ? dx/2 : 0);
k /= dx;
@ -340,24 +232,20 @@ void edit_mouseover(SDL_Event *event)
cx = l - cz;
cz += 127 + oy - ox;
cx += 127 + oy + ox;
if(event->motion.state)
edit_placenode(currlayer, cz, cx, event->motion.state == 1 ? palette[activeblock] : 0);
if((cx != X || cz != Z) && event->type == SDL_MOUSEMOTION && event->motion.state)
brush_place(event->motion.state == 1 ? palette[activeblock] : 0);
status = nodes[currlayer][cz][cx].param0 ? blocks[nodes[currlayer][cz][cx].param0].name : NULL;
edit_showcursor(event->button.button == 1);
}
/**
* Edit Area mouse down event handler
*/
void edit_mousedown(_unused SDL_Event *event)
void edit_mousedown(SDL_Event *event)
{
if(event->button.button != 1)
edit_rotate(currlayer, cz, cx, 1 - shift);
else {
edit_hidecursor();
edit_placenode(currlayer, cz, cx, palette[activeblock]);
edit_showcursor(1);
}
else
brush_place(palette[activeblock]);
}
/**
@ -368,10 +256,10 @@ void edit_key(SDL_Event *event)
switch (event->key.keysym.sym) {
case SDLK_ESCAPE:
case SDLK_q: quitting = 1; break;
case SDLK_s: if(!shift) sdldosave(); break;
case SDLK_l: sdldoload(); break;
case SDLK_p: sdldopreview(); break;
case SDLK_r: sdldorotate(1 - shift); break;
case SDLK_l: sdldo(0); break;
case SDLK_s: if(!shift) sdldo(1); break;
case SDLK_p: sdldo(2); break;
case SDLK_r: sdldo(4 - shift); break;
case SDLK_g: gndlayer = currlayer; break;
case SDLK_PLUS: case SDLK_EQUALS: mts_layerprob(+1); break;
case SDLK_MINUS: mts_layerprob(-1); break;
@ -383,6 +271,9 @@ void edit_key(SDL_Event *event)
if(palette[event->key.keysym.sym - SDLK_0])
activeblock = event->key.keysym.sym - SDLK_0;
break;
case SDLK_x: sdldo(6 + ctrl); break;
case SDLK_c: sdldo(8 + ctrl); break;
case SDLK_v: sdldo(10 + ctrl); break;
case SDLK_h: dx--; sprintf(dstr, "dx %d dz %d", dx, dz); status = dstr; break;
case SDLK_k: dx++; sprintf(dstr, "dx %d dz %d", dx, dz); status = dstr; break;
case SDLK_u: dz--; sprintf(dstr, "dx %d dz %d", dx, dz); status = dstr; break;
@ -434,10 +325,11 @@ void edit_key(SDL_Event *event)
case SDLK_BACKSPACE:
case SDLK_DELETE:
case SDLK_SPACE:
edit_placenode(currlayer, cz, cx, event->key.keysym.sym == SDLK_SPACE && !shift ? palette[activeblock] : 0);
brush_place(event->key.keysym.sym == SDLK_SPACE && !shift ? palette[activeblock] : 0);
break;
case SDLK_z: edit_undo(); break;
case SDLK_y: edit_redo(); break;
case SDLK_RETURN: brush_floodfill(!shift ? palette[activeblock] : 0); break;
case SDLK_z: hist_undo(); break;
case SDLK_y: hist_redo(); break;
}
}
@ -491,5 +383,5 @@ void edit_rotate(int y, int z, int x, int ccw)
if(!blocks[nodes[y][z][x].param0].img[nodes[y][z][x].param2])
nodes[y][z][x].param2 = nodes[y][z][x].param2 == 3 && blocks[nodes[y][z][x].param0].img[1] ? 1 : 0;
if(oldparam2 != nodes[y][z][x].param2)
edit_addhistory(y, x, z, nodes[y][z][x].param0, oldparam2, nodes[y][z][x].param0, nodes[y][z][x].param2);
hist_add(y, x, z, nodes[y][z][x].param0, oldparam2, nodes[y][z][x].param0, nodes[y][z][x].param2);
}

Binary file not shown.

380
src/hist.c Normal file
View File

@ -0,0 +1,380 @@
/*
* mtsedit/hist.c
*
* Copyright (C) 2019 bzt (bztsrc@gitlab)
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use, copy,
* modify, merge, publish, distribute, sublicense, and/or sell copies
* of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* @brief History (undo / redo) functions
*
*/
#include "main.h"
#define HISTORYMAX 256
int histtop = 0, histmax = 0, histcapacity = 0;
histlist_t history[HISTORYMAX];
histlist_t histcurr;
/**
* Prepare for a history transaction
*/
void hist_prepare(int type, int volume)
{
int i, x, y, z;
if(histcurr.type != HIST_EMPTY) hist_commit();
if(type > HIST_NODE)
mts_getbounds(0, NULL, NULL);
switch(type) {
case HIST_NODE: volume = 0; break;
case HIST_BRUSH:
if(volume < 1) volume = (may - miy + 1) * (maz - miz + 1) * (max - mix + 1);
histcurr.data.multiple.entry = (hist_t*)malloc(volume * sizeof(hist_t));
if(!histcurr.data.multiple.entry) error(lang[ERR_MEM]);
break;
case HIST_ADDY:
case HIST_DELY:
histcurr.y = volume;
histcurr.x = mix;
histcurr.z = miz;
histcurr.data.bulk.pitch = max - mix + 1;
histcurr.data.bulk.numentry = volume = (maz - miz + 1) * (max - mix + 1);
histcurr.data.bulk.entry = (node_t*)malloc(volume * sizeof(hist_t));
if(!histcurr.data.bulk.entry) error(lang[ERR_MEM]);
if(type == HIST_DELY) {
for(i = 0, z = miz; z <= maz; z++)
for(x = mix; x <= max; x++, i++)
memcpy(&histcurr.data.bulk.entry[i], &nodes[currlayer][z][x], sizeof(node_t));
}
break;
case HIST_ADDZ:
case HIST_DELZ:
histcurr.z = volume;
histcurr.x = mix;
histcurr.y = miy;
histcurr.data.bulk.pitch = max - mix + 1;
histcurr.data.bulk.numentry = volume = (may - miy + 1) * (max - mix + 1);
histcurr.data.bulk.entry = (node_t*)malloc(volume * sizeof(hist_t));
if(!histcurr.data.bulk.entry) error(lang[ERR_MEM]);
if(type == HIST_DELZ) {
for(i = 0, y = miy; y <= may; y++)
for(x = mix; x <= max; x++, i++)
memcpy(&histcurr.data.bulk.entry[i], &nodes[y][cz][x], sizeof(node_t));
}
break;
case HIST_ADDX:
case HIST_DELX:
histcurr.x = volume;
histcurr.y = miy;
histcurr.z = miz;
histcurr.data.bulk.pitch = maz - miz + 1;
histcurr.data.bulk.numentry = volume = (may - miy + 1) * (maz - miz + 1);
histcurr.data.bulk.entry = (node_t*)malloc(volume * sizeof(hist_t));
if(!histcurr.data.bulk.entry) error(lang[ERR_MEM]);
if(type == HIST_DELX) {
for(i = 0, y = miy; y <= may; y++)
for(z = miz; z <= maz; z++, i++)
memcpy(&histcurr.data.bulk.entry[i], &nodes[y][z][cx], sizeof(node_t));
}
break;
}
histcurr.type = type;
histcapacity = volume;
}
/**
* Commit a history transaction
*/
void hist_commit()
{
int i, j, x, y, z, op0, op2, np0, np2;
if(histcurr.type > HIST_BRUSH && !histcurr.data.bulk.numentry) {
if(histcurr.data.bulk.entry) free(histcurr.data.bulk.entry);
memset(&histcurr, 0, sizeof(histlist_t));
histcapacity = 0;
return;
}
if(histcurr.type == HIST_BRUSH) {
if(!histcurr.data.multiple.numentry) {
if(histcurr.data.multiple.entry) free(histcurr.data.multiple.entry);
memset(&histcurr, 0, sizeof(histlist_t));
histcapacity = 0;
return;
}
/* if there's only one node in the list, convert it to single node to save memory */
if(histcurr.data.multiple.numentry == 1) {
histcurr.x = histcurr.data.multiple.entry[0].x;
histcurr.y = histcurr.data.multiple.entry[0].y;
histcurr.z = histcurr.data.multiple.entry[0].z;
op0 = histcurr.data.multiple.entry[0].oldparam0;
op2 = histcurr.data.multiple.entry[0].oldparam2;
np0 = histcurr.data.multiple.entry[0].newparam0;
np2 = histcurr.data.multiple.entry[0].newparam2;
free(histcurr.data.multiple.entry);
histcurr.data.node.oldparam0 = op0;
histcurr.data.node.oldparam2 = op2;
histcurr.data.node.newparam0 = np0;
histcurr.data.node.newparam2 = np2;
} else
if(histcurr.data.multiple.numentry != histcapacity) {
histcurr.data.multiple.entry = (hist_t*)realloc(histcurr.data.multiple.entry,
histcurr.data.multiple.numentry * sizeof(hist_t));
if(!histcurr.data.multiple.entry) error(lang[ERR_MEM]);
}
}
if(histcurr.type == HIST_EMPTY || (histcurr.type == HIST_NODE &&
histcurr.data.node.oldparam0 == histcurr.data.node.newparam0 &&
histcurr.data.node.oldparam2 == histcurr.data.node.newparam2)) {
memset(&histcurr, 0, sizeof(histlist_t));
return;
}
if(histcurr.type == HIST_ADDY) {
for(i = j = 0, z = miz; z <= maz; z++)
for(x = mix; x <= max; x++, i++)
if(nodes[currlayer][z][x].param0) {
memcpy(&histcurr.data.bulk.entry[i], &nodes[currlayer][z][x], sizeof(node_t));
j++;
}
if(!j) {
free(histcurr.data.bulk.entry);
histcurr.data.bulk.entry = NULL;
histcurr.data.bulk.numentry = 0;
}
}
if(histcurr.type == HIST_ADDZ) {
for(i = j = 0, y = miy; y <= may; y++)
for(x = mix; x <= max; x++, i++)
if(nodes[y][cz][x].param0) {
memcpy(&histcurr.data.bulk.entry[i], &nodes[y][cz][x], sizeof(node_t));
j++;
}
if(!j) {
free(histcurr.data.bulk.entry);
histcurr.data.bulk.entry = NULL;
histcurr.data.bulk.numentry = 0;
}
}
if(histcurr.type == HIST_ADDX) {
for(i = j = 0, y = miy; y <= may; y++)
for(z = miz; z <= maz; z++, i++)
if(nodes[y][z][cx].param0) {
memcpy(&histcurr.data.bulk.entry[i], &nodes[y][z][cx], sizeof(node_t));
j++;
}
if(!j) {
free(histcurr.data.bulk.entry);
histcurr.data.bulk.entry = NULL;
histcurr.data.bulk.numentry = 0;
}
}
if(histtop != 0) {
hist_free(0, histtop);
memcpy(&history[0], &history[histtop], (histmax - histtop) * sizeof(histlist_t));
histmax -= histtop;
if(histmax < 0) histmax = 0;
}
hist_free(HISTORYMAX-1, HISTORYMAX);
if(histmax)
memmove(&history[1], &history[0], histmax * sizeof(histlist_t));
if(histmax + 1 < HISTORYMAX) histmax++;
memcpy(&history[0], &histcurr, sizeof(histlist_t));
memset(&histcurr, 0, sizeof(histlist_t));
histcapacity = 0;
histtop = 0;
}
/**
* Add to history
*/
void hist_add(int y, int z, int x, unsigned short op0, unsigned char op2, unsigned short np0, unsigned char np2)
{
int i;
if(histcurr.type == HIST_NODE) {
if(op0 == np0 && op2 == np2) histcurr.type = HIST_EMPTY;
else {
histcurr.x = x;
histcurr.y = y;
histcurr.z = z;
histcurr.data.node.oldparam0 = op0;
histcurr.data.node.oldparam2 = op2;
histcurr.data.node.newparam0 = np0;
histcurr.data.node.newparam2 = np2;
}
} else if(histcurr.type != HIST_EMPTY && (op0 != np0 || op2 != np2)) {
i = histcurr.data.multiple.numentry++;
if(histcurr.data.multiple.numentry >= histcapacity) {
histcapacity += 1024;
histcurr.data.multiple.entry = (hist_t*)realloc(histcurr.data.multiple.entry, histcapacity * sizeof(hist_t));
if(!histcurr.data.multiple.entry) error(lang[ERR_MEM]);
}
histcurr.data.multiple.entry[i].x = x;
histcurr.data.multiple.entry[i].y = y;
histcurr.data.multiple.entry[i].z = z;
histcurr.data.multiple.entry[i].oldparam0 = op0;
histcurr.data.multiple.entry[i].oldparam2 = op2;
histcurr.data.multiple.entry[i].newparam0 = np0;
histcurr.data.multiple.entry[i].newparam2 = np2;
}
}
/**
* Undo from history
*/
void hist_undo()
{
int i, j, x, y, z;
if(histtop < histmax) {
switch(history[histtop].type) {
case HIST_NODE:
nodes[history[histtop].y][history[histtop].z][history[histtop].x].param0 = history[histtop].data.node.oldparam0;
nodes[history[histtop].y][history[histtop].z][history[histtop].x].param2 = history[histtop].data.node.oldparam2;
break;
case HIST_BRUSH:
for(i = 0; i < history[histtop].data.multiple.numentry; i++) {
nodes[history[histtop].data.multiple.entry[i].y]
[history[histtop].data.multiple.entry[i].z]
[history[histtop].data.multiple.entry[i].x].param0 = history[histtop].data.multiple.entry[i].oldparam0;
nodes[history[histtop].data.multiple.entry[i].y]
[history[histtop].data.multiple.entry[i].z]
[history[histtop].data.multiple.entry[i].x].param2 = history[histtop].data.multiple.entry[i].oldparam2;
}
break;
case HIST_DELY:
x = history[histtop].x;
y = history[histtop].y;
z = history[histtop].z;
mts_addy(y, 0);
for(i = j = 0; i < history[histtop].data.bulk.numentry; i++, j++, x++) {
if(j >= history[histtop].data.bulk.pitch) { j = 0; z++; x = history[histtop].x; }
memcpy(&nodes[y][z][x], &history[histtop].data.bulk.entry[i], sizeof(node_t));
}
break;
case HIST_ADDY: mts_dely(history[histtop].y); break;
case HIST_DELZ:
x = history[histtop].x;
y = history[histtop].y;
z = history[histtop].z;
mts_addz(z, 0);
for(i = j = 0; i < history[histtop].data.bulk.numentry; i++, j++, x++) {
if(j >= history[histtop].data.bulk.pitch) { j = 0; y++; x = history[histtop].x; }
memcpy(&nodes[y][z][x], &history[histtop].data.bulk.entry[i], sizeof(node_t));
}
break;
case HIST_ADDZ: mts_delz(history[histtop].z); break;
case HIST_DELX:
x = history[histtop].x;
y = history[histtop].y;
z = history[histtop].z;
mts_addx(x, 0);
for(i = j = 0; i < history[histtop].data.bulk.numentry; i++, j++, z++) {
if(j >= history[histtop].data.bulk.pitch) { j = 0; y++; z = history[histtop].z; }
memcpy(&nodes[y][z][x], &history[histtop].data.bulk.entry[i], sizeof(node_t));
}
break;
case HIST_ADDX: mts_delx(history[histtop].x); break;
}
histtop++;
status = nodes[currlayer][cz][cx].param0 ? blocks[nodes[currlayer][cz][cx].param0].name : NULL;
}
}
/**
* Redo from history
*/
void hist_redo()
{
int i, j, x, y, z;
if(histtop) {
histtop--;
switch(history[histtop].type) {
case HIST_NODE:
nodes[history[histtop].y][history[histtop].z][history[histtop].x].param0 = history[histtop].data.node.newparam0;
nodes[history[histtop].y][history[histtop].z][history[histtop].x].param2 = history[histtop].data.node.newparam2;
break;
case HIST_BRUSH:
for(i = 0; i < history[histtop].data.multiple.numentry; i++) {
nodes[history[histtop].data.multiple.entry[i].y]
[history[histtop].data.multiple.entry[i].z]
[history[histtop].data.multiple.entry[i].x].param0 = history[histtop].data.multiple.entry[i].newparam0;
nodes[history[histtop].data.multiple.entry[i].y]
[history[histtop].data.multiple.entry[i].z]
[history[histtop].data.multiple.entry[i].x].param2 = history[histtop].data.multiple.entry[i].newparam2;
}
break;
case HIST_ADDY:
x = history[histtop].x;
y = history[histtop].y;
z = history[histtop].z;
mts_addy(y, 0);
for(i = j = 0; i < history[histtop].data.bulk.numentry; i++, j++, x++) {
if(j >= history[histtop].data.bulk.pitch) { j = 0; z++; x = history[histtop].x; }
memcpy(&nodes[y][z][x], &history[histtop].data.bulk.entry[i], sizeof(node_t));
}
break;
case HIST_DELY: mts_dely(history[histtop].y); break;
case HIST_ADDZ:
x = history[histtop].x;
y = history[histtop].y;
z = history[histtop].z;
mts_addz(z, 0);
for(i = j = 0; i < history[histtop].data.bulk.numentry; i++, j++, x++) {
if(j >= history[histtop].data.bulk.pitch) { j = 0; y++; x = history[histtop].x; }
memcpy(&nodes[y][z][x], &history[histtop].data.bulk.entry[i], sizeof(node_t));
}
break;
case HIST_DELZ: mts_delz(history[histtop].z); break;
case HIST_ADDX:
x = history[histtop].x;
y = history[histtop].y;
z = history[histtop].z;
mts_addx(x, 0);
for(i = j = 0; i < history[histtop].data.bulk.numentry; i++, j++, z++) {
if(j >= history[histtop].data.bulk.pitch) { j = 0; y++; z = history[histtop].z; }
memcpy(&nodes[y][z][x], &history[histtop].data.bulk.entry[i], sizeof(node_t));
}
break;
case HIST_DELX: mts_delx(history[histtop].x); break;
}
status = nodes[currlayer][cz][cx].param0 ? blocks[nodes[currlayer][cz][cx].param0].name : NULL;
}
}
/**
* Free history
*/
void hist_free(int s, int e)
{
int i;
if(s == -1) { s = 0; e = histmax; }
for(i = s; i < e; i++)
if(history[i].type == HIST_BRUSH && history[i].data.multiple.entry)
free(history[i].data.multiple.entry);
else if(history[i].type > HIST_BRUSH && history[i].data.bulk.entry)
free(history[i].data.bulk.entry);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -35,10 +35,12 @@
char *dict[NUMLANGS][NUMTEXTS + 1] = {
{
"en",
"verbose output",
"dump layers to output",
"save preview",
"save preview, cut structure in half",
"generate slab and stairs from block image",
"generate block images from texture data",
"replace block type mapping",
"output to file",
"Loading...",
@ -65,6 +67,18 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Save",
"Save Preview",
"Change Orientation",
"Flip Structure",
"Insert Y layer",
"Remove Y layer",
"Insert X layer",
"Remove X layer",
"Insert Z layer",
"Remove Z layer",
"Undo",
"Redo",
"Zoom in",
"Zoom out",
"Select Brush",
"All Blocks",
"Layer Up",
"Layer Down",
@ -74,14 +88,28 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Filename:",
"Mapping:",
"Biome type:",
"Save"
"Save",
"Type:",
"Hollow:",
"Radius:",
"Width:",
"Length:",
"Height:",
"Air",
"Select block from palette",
"Flood fill",
"Paint with block",
"Scroll",
"(for all the shortcuts, read docs/usage.md)"
},
{
"hu",
"részletes kimenet",
"kidumpolja a rétegeket a kimenetre",
"előnézeti képet ment",
"előnézet félbevágott struktúráról",
"palló és lépcső generálás blokk képből",
"blokk képek generálása textúra adatokból",
"lecseréli a palettát",
"kimenet lementése",
"Betöltés...",
@ -108,6 +136,18 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Mentés",
"Előnézet mentés",
"Elforgatás",
"Tükrözés",
"Y réteg beszúrása",
"Y réteg eltávolítása",
"X réteg beszúrása",
"X réteg eltávolítása",
"Z réteg beszúrása",
"Z réteg eltávolítása",
"Visszavonás",
"Újra",
"Nagyítás",
"Kicsinyítés",
"Ecset alakja",
"Minden blokk",
"Réteg fel",
"Réteg le",
@ -117,14 +157,28 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Fájlnév:",
"Paletta:",
"Biom típus:",
"Elment"
"Elment",
"Típus:",
"Üreges:",
"Sugár:",
"Szélesség:",
"Hosszúság:",
"Magasság:",
"Levegő",
"Blokk kiválasztása a palettáról",
"Kitöltés",
"Rajzolás",
"Szkrollozás",
"(az összes gyorsbillentyűt lásd a docs/usage.md fájlban)"
},
{
"es",
"salida detallada",
"volcar capas a la salida",
"guardar vista previa",
"guardar vista previa, cortar la estructura por la mitad",
"generar losas y escaleras desde la imagen de bloque",
"generar imágenes de bloque a partir de datos de textura",
"reemplazar el mapeo de tipo de bloque",
"salida a archivo",
"Cargando...",
@ -151,6 +205,18 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Salvar",
"Guardar vista previa",
"Cambiar orientación",
"Flip Estructura",
"Insertar capa Y",
"Eliminar capa Y",
"Insertar capa X",
"Eliminar capa X",
"Insertar capa Z",
"Eliminar la capa Z",
"Deshacer",
"Rehacer",
"Acercarse",
"Disminuir el zoom",
"Seleccionar pincel",
"Todos los bloques",
"Capa arriba",
"Capa abajo",
@ -160,14 +226,28 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Nombre:",
"Cartografía:",
"Utilizar bioma:",
"Salvar"
"Salvar",
"Tipo:",
"Hueco:",
"Radio:",
"Anchura:",
"Longitud:",
"Altura:",
"Aire",
"Seleccionar bloque de paleta",
"Inundación con bloque",
"Pintar con bloque",
"Voluta",
"para todos los accesos directos, lea docs/usage.md",
},
{
"fr",
"sortie prolixe",
"vider les couches à la sortie",
"enregistrer l'aperçu",
"enregistrer l'aperçu, couper la structure en deux",
"générer une dalle et des escaliers à partir d'une image de bloc",
"générer des images de bloc à partir de données de texture",
"remplacer la correspondance de type de bloc",
"sortie dans un fichier",
"Chargement...",
@ -194,6 +274,18 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Sauver",
"Enregistrer l'aperçu",
"Changer d'orientation",
"Flip Structure",
"Insérer le calque Y",
"Supprimer la couche Y",
"Insérer un calque X",
"Supprimer la couche X",
"Insérer un calque Z",
"Supprimer la couche Z",
"annuler",
"Refaire",
"Agrandir",
"Dézoomer",
"Sélectionnez le pinceau",
"Tous les blocs",
"Couche vers le haut",
"Couche vers le bas",
@ -203,14 +295,28 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Nom de fichier:",
"Cartographie:",
"Utiliser biome:",
"Sauver"
"Sauver",
"Type:",
"Creux:",
"Rayon:",
"Largeur:",
"Longueur:",
"Tailleur:",
"Air",
"Sélectionner un bloc de la palette",
"Remplir inondé avec un bloc",
"Peindre avec un bloc",
"Faire défiler",
"pour tous les raccourcis, lisez docs/usage.md",
},
{
"de",
"ausführliche Ausgabe",
"Dump Layeren zu Konsole",
"Vorschau speichern",
"Vorschau speichern, Struktur halbieren",
"Erzeugen von Platten und Treppen aus dem Blockbild",
"Blockbilder aus Texturdaten erzeugen",
"Blocktypzuordnung ersetzen",
"speichern Datei",
"Wird geladen...",
@ -237,6 +343,18 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"speichern",
"Vorschau speichern",
"Ändern Sie die Ausrichtung",
"Flip-Struktur",
"Y-Ebene einfügen",
"Y-Schicht entfernen",
"X-Ebene einfügen",
"X-Ebene entfernen",
"Z-Ebene einfügen",
"Z-Schicht entfernen",
"Rückgängig machen",
"Redo",
"Hineinzoomen",
"Rauszoomen",
"Wählen Sie Pinsel",
"Alle Blöcke",
"Ebene hoch",
"Schicht nach unten",
@ -246,14 +364,28 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Dateiname:",
"Kartierung:",
"Verwenden Biome:",
"Einspeichern"
"Einspeichern",
"Typ:",
"Hohl:",
"Radius:",
"Breite:",
"Länge:",
"Höhe:",
"Luft",
"Block aus der Palette auswählen",
"Fülle es mit Block",
"Malen Sie mit Block",
"Scrollen",
"Lesen Sie für alle Verknüpfungen docs/usage.md",
},
{
"pl",
"gadatliwe wyjście",
"zrzuć warstwy na wyjście",
"zapisz podgląd",
"zapisz podgląd, wytnij strukturę na pół",
"generuj płytę i schody z obrazu bloku",
"generować obrazy bloków z danych tekstury",
"zastąpić mapowanie typów bloków",
"wyjście do pliku",
"Ładuję...",
@ -280,23 +412,49 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Zapisać",
"Zapisz podgląd",
"Zmień orientację",
"Odwróć strukturę",
"Wstaw warstwę Y.",
"Usuń warstwę Y.",
"Wstaw warstwę X.",
"Usuń warstwę X.",
"Wstaw warstwę Z.",
"Usuń warstwę Z.",
"Cofnij",
"Przerobić",
"Zbliżenie",
"Oddal",
"Wybierz pędzel",
"Wszystkie bloki",
"Layer Up",
"Layer Down",
"Ułóż się",
"Połóż się",
"Dodaj bloki do palety",
"Szukaj:",
"Zapisz schemat do pliku",
"Nazwa pliku:",
"Mapowanie:",
"Użyj biomu:",
"Zapisać"
"Zapisać",
"Rodzaj:",
"Wydrążony:",
"Promień:",
"Szerokość:",
"Długość:",
"Wysokość:",
"Powietrze",
"Wybierz blok z palety",
"Wypełnienie blokiem",
"Maluj blokiem",
"Zwój",
"dla wszystkich skrótów przeczytaj docs/usage.md",
},
{
"ru",
"подробный вывод",
"выгрузить слои на вывод",
"сохранить предварительный просмотр",
"сохранить предварительный просмотр, разрезать структуру пополам",
"генерировать плиты и лестницы из изображения блока",
"генерировать блочные изображения из данных текстуры",
"заменить отображение типа блока",
"вывод в файл",
"Загрузка ...",
@ -323,6 +481,18 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Сохранить",
"Сохранить предварительный просмотр",
"Изменить ориентацию",
"Флип структура",
"Вставить слой Y",
"Удалить слой Y",
"Вставить слой X",
"Удалить слой X",
"Вставить слой Z",
"Удалить слой Z",
"Отменить",
"Заново делать",
"Увеличить",
"Уменьшить",
"Выберите кисть",
"Все блоки",
"Слой вверх",
"Слой вниз",
@ -332,7 +502,19 @@ char *dict[NUMLANGS][NUMTEXTS + 1] = {
"Имя файла:",
"Отображение:",
"Используйте Биом:",
"Сохранить"
"Сохранить",
"Тип:",
"Пустотелый:",
"Радиус:",
"ширина:",
"Длина:",
"Рост:",
"Воздуха",
"Выберите блок из палитры",
"Заливка с блоком",
"Краска с блоком",
"Манускрипт",
"для всех ярлыков, прочитайте docs/usage.md",
}
};

View File

@ -28,10 +28,12 @@
*/
enum {
INF_DUMP = 0,
INF_VERB = 0,
INF_DUMP,
INF_PRE1,
INF_PRE2,
INF_GEN,
INF_BLK,
INF_MAP,
INF_OUT,
LOADING,
@ -58,6 +60,18 @@ enum {
SAVE,
SAVEPREVIEW,
CHANGEORIENT,
MIRROR,
ADDY,
DELY,
ADDX,
DELX,
ADDZ,
DELZ,
UNDO,
REDO,
ZOOMIN,
ZOOMOUT,
BRUSH,
ALLBLOCKS,
LAYERUP,
LAYERDOWN,
@ -68,6 +82,18 @@ enum {
MAPPING,
BIOMETYPE,
SAVEBTN,
TYPE,
HOLLOW,
RADIUS,
WIDTH,
LENGTH,
HEIGHT,
AIR,
SELBLOCK,
FILL,
PAINT,
SCROLL,
HELP,
/* must be the last */
NUMTEXTS

View File

@ -181,9 +181,10 @@ int main(int argc, char** argv, char** envp)
if(argc < 2) {
printf("MineTest Schematics Editor by bzt Copyright (C) 2019 MIT license\r\n\r\n"
"./mtsedit [-v] [-d|-p|-P|-g] [-m map] <.mts|.schematic> [out.mts]\r\n\r\n -d: %s\r\n -p: %s\r\n -P: %s\r\n"
" -g: %s\r\n -m map: %s\r\n out.mts: %s\r\n",
lang[INF_DUMP], lang[INF_PRE1], lang[INF_PRE2], lang[INF_GEN], lang[INF_MAP], lang[INF_OUT]);
"./mtsedit [-v] [-d|-p|-P|-g|-i] [-m map] <.mts|.schematic> [out.mts]\r\n\r\n -v: %s\r\n -d: %s"
"\r\n -p: %s\r\n -P: %s\r\n -g: %s\r\n -i: %s\r\n -m map: %s\r\n out.mts: %s\r\n",
lang[INF_VERB], lang[INF_DUMP], lang[INF_PRE1], lang[INF_PRE2], lang[INF_GEN], lang[INF_BLK],
lang[INF_MAP], lang[INF_OUT]);
exit(0);
}
i = 1;
@ -195,7 +196,8 @@ int main(int argc, char** argv, char** envp)
case 'p': opt = 2; break;
case 'P': opt = 3; break;
case 'g': opt = 4; break;
case 'm': if(!opt) { opt = 5; } newmap = argv[++j]; break;
case 'i': opt = 5; break;
case 'm': if(!opt) { opt = 6; } newmap = argv[++j]; break;
}
} else {
i = j; break;
@ -206,7 +208,7 @@ int main(int argc, char** argv, char** envp)
tmpblk = (unsigned char*)malloc(32 * 32 * 4);
if(!tmpblk) error(lang[ERR_MEM]);
if(argv[i+1] && !opt) opt = 5;
if(argv[i+1] && !opt) opt = 6;
if(opt && opt != 4) {
parseblocks();
readschem();
@ -228,8 +230,8 @@ int main(int argc, char** argv, char** envp)
case 2:
case 3: ret = mts_view(opt-2); break;
case 4: ret = stairgen(); break;
case 5: break;
default:
case 5: /* todo: generate block images */ break;
case 0:
/* start the main user interface */
sdlmain();
break;

View File

@ -54,6 +54,16 @@
#define THEME_SAVEACT 9
#define THEME_SAVEINACT 10
#define HIST_EMPTY 0
#define HIST_NODE 1
#define HIST_BRUSH 2
#define HIST_ADDY 3
#define HIST_DELY 4
#define HIST_ADDZ 5
#define HIST_DELZ 6
#define HIST_ADDX 7
#define HIST_DELX 8
#include <stdio.h>
#include <string.h>
#include <limits.h>
@ -64,8 +74,6 @@
#define MAXPATHLEN 1024
#endif
#define HISTORYMAX 1024
#ifdef __WIN32__
extern char binary_icons_png_start;
extern char binary_icons_png_end;
@ -99,9 +107,9 @@ typedef struct {
unsigned char *tr[32];
} mtsblock_t;
extern int numpalettes, lenpalettes, palette[16], strmaxw, savelen, savepos, savepal, savebiome, numresults, *results;
extern int currlayer, gndlayer, mts_x, mts_y, mts_z, min_x, min_y, min_z, dx, dz, cx, cz, ox, oy, up;
extern int shift, ctrl, activeblock, quitting, verbose, x0, x1, y0, y1;
extern int numpalettes, lenpalettes, palette[16], strmaxw, strsep, savelen, savepos, savepal, savebiome, numresults, *results;
extern int currlayer, gndlayer, mts_x, mts_y, mts_z, mix, miy, miz, max, may, maz, bound_valid, dx, dz, cx, cz, ox, oy, up;
extern int shift, ctrl, activetool, activeblock, quitting, verbose, x0, x1, y0, y1, brush_type, brush_hollow;
extern char **palettes, layerprob[256];
extern int numblocks;
extern mtsblock_t *blocks;
@ -123,6 +131,36 @@ typedef struct {
unsigned char z;
} hist_t;
typedef struct {
unsigned char type;
unsigned char x;
unsigned char y;
unsigned char z;
union {
struct multiple_s {
int numentry;
hist_t *entry;
} multiple;
struct bulk_s {
unsigned short numentry;
unsigned char pitch;
node_t *entry;
} bulk;
struct node_s {
unsigned short oldparam0;
unsigned char oldparam2;
unsigned short newparam0;
unsigned char newparam2;
} node;
} data;
} histlist_t;
extern histlist_t histcurr;
typedef struct {
char text;
char *key;
} help_t;
/* PC Screen Font as used by Linux Console */
typedef struct {
unsigned int magic;
@ -141,7 +179,7 @@ extern uint32_t theme[];
extern char *path, *fn, mtsfile[MAXPATHLEN], *status, **lang;
extern unsigned char *tmpblk;
extern SDL_Window *window;
extern SDL_Surface *screen, *icons, *blk, *fg, *bg, *cursor;
extern SDL_Surface *screen, *icons, *blk, *fg, *cl, *bg;
/* util.c */
unsigned char *readfile(char *file, unsigned int *size);
@ -164,30 +202,41 @@ void schem_load(unsigned char *data, unsigned int size);
void mts_load(unsigned char *data, unsigned int size);
int mts_save();
int mts_view(int type);
int mts_dump();
int mts_getbounds(int sanitize, unsigned short *tr, unsigned short *tr2);
void mts_layerprob(int diff);
void mts_rotate(int ccw);
void mts_flip();
int mts_dump();
void mts_addy(int y, int copy);
void mts_dely(int y);
void mts_addz(int z, int copy);
void mts_delz(int z);
void mts_addx(int x, int copy);
void mts_delx(int x);
/* sdl.c */
void sdlprint(int x, int y, int fg, int bg, char *s);
void sdlredraw();
void sdldosave();
void sdldoload();
void sdldopreview();
void sdldorotate(int ccw);
void sdldo(int opt);
void sdlmain();
/* edit.c */
void edit_redraw();
void edit_hidecursor();
void edit_showcursor(int painting);
void edit_placenode(int y, int z, int x, int i);
void edit_redraw(int full);
void edit_scroll(SDL_Event *event);
void edit_mouseover(SDL_Event *event);
void edit_mousedown(_unused SDL_Event *event);
void edit_key(SDL_Event *event);
void edit_rotate(int y, int z, int x, int ccw);
/* hist.c */
void hist_prepare(int type, int volume);
void hist_commit();
void hist_add(int y, int z, int x, unsigned short op0, unsigned char op2, unsigned short np0, unsigned char np2);
void hist_undo();
void hist_redo();
void hist_free(int s, int e);
/* save.c */
void save_redraw();
void save_scroll(SDL_Event *event);
@ -200,3 +249,13 @@ void search_scroll(SDL_Event *event);
void search_mousedown(SDL_Event *event);
void search_mouseover(SDL_Event *event);
void search_key(SDL_Event *event);
/* brush.c */
void brush_setmask(int needmax);
int brush_selected(int x, int z);
void brush_place(int blk);
void brush_floodfill(int blk);
int brush_height();
void brush_redraw();
int brush_mousedown(_unused SDL_Event *event);
void brush_key(SDL_Event *event);

245
src/mts.c
View File

@ -44,7 +44,7 @@ char layerprob[256];
node_t nodes[256][256][256];
/* generated properties */
int mix = 255, max = 0, miy = 255, may = 0, miz = 255, maz = 0;
int mix = 255, max = 0, miy = 255, may = 0, miz = 255, maz = 0, bound_valid = 0;
/**
* Get schematic bounding cube and node id translation tables
@ -53,6 +53,8 @@ int mts_getbounds(int sanitize, unsigned short *tr, unsigned short *tr2)
{
int x, y, z, j;
if(!sanitize && !tr && bound_valid) return 0;
/* get boundind box and block ID translation tables, sanitize probability values */
j = 1; mix = 255; max = 0; miy = 255; may = 0; miz = 255; maz = 0;
for(y = 0; y < 256; y++) {
@ -77,6 +79,7 @@ int mts_getbounds(int sanitize, unsigned short *tr, unsigned short *tr2)
if(sanitize)
for(y = miy; y <= may; y++)
if(!layerprob[y]) layerprob[y] = 127;
bound_valid = 1;
return j;
}
@ -394,63 +397,6 @@ int mts_view(int type)
return 1;
}
/**
* Change layer probability
*/
void mts_layerprob(int diff)
{
if(diff < 0 && (int)layerprob[currlayer] > 0) layerprob[currlayer]--;
if(diff > 0 && (int)layerprob[currlayer] < 127) layerprob[currlayer]++;
}
/**
* Rotate the entire MTS structure
*/
void mts_rotate(int ccw)
{
int nx, nz, x, y, z;
node_t layer[256][256];
mts_getbounds(0, NULL, NULL);
if(mix > max) return;
for(y = miy; y <= may; y++) {
memcpy(layer, nodes[y], sizeof(node_t)*256*256);
memset(nodes[y], 0, sizeof(node_t)*256*256);
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++) {
if(ccw) { nz = 255-x; nx = z; } else { nz = x; nx = 255-z; }
memcpy(&nodes[y][nz][nx], &layer[z][x], sizeof(node_t));
if(nodes[y][nz][nx].param0)
edit_rotate(y, nz, nx, ccw);
}
}
}
/**
* Flip the entire MTS structure along the Z axis
*/
void mts_flip()
{
int x, y, z;
node_t layer[256][256];
mts_getbounds(0, NULL, NULL);
if(mix > max) return;
for(y = miy; y <= may; y++) {
memcpy(layer, nodes[y], sizeof(node_t)*256*256);
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++) {
memcpy(&nodes[y][z][x], &layer[maz-z+miz][x], sizeof(node_t));
if(nodes[y][z][x].param0) {
edit_rotate(y, z, x, 0);
edit_rotate(y, z, x, 0);
}
}
}
}
/**
* Dump structure
*/
@ -500,3 +446,186 @@ int mts_dump()
free(tr2);
return 0;
}
/**
* Change layer probability
*/
void mts_layerprob(int diff)
{
if(diff < 0 && (int)layerprob[currlayer] > 0) layerprob[currlayer]--;
if(diff > 0 && (int)layerprob[currlayer] < 127) layerprob[currlayer]++;
}
/**
* Rotate the entire MTS structure
*/
void mts_rotate(int ccw)
{
int nx, nz, x, y, z;
node_t layer[256][256];
mts_getbounds(0, NULL, NULL);
if(mix > max) return;
for(y = miy; y <= may; y++) {
memcpy(layer, nodes[y], sizeof(node_t)*256*256);
memset(nodes[y], 0, sizeof(node_t)*256*256);
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++) {
if(ccw) { nz = 255-x; nx = z; } else { nz = x; nx = 255-z; }
memcpy(&nodes[y][nz][nx], &layer[z][x], sizeof(node_t));
if(nodes[y][nz][nx].param0)
edit_rotate(y, nz, nx, ccw);
}
}
x = max; max = maz; maz = x;
x = mix; mix = miz; miz = x;
}
/**
* Flip the entire MTS structure along the Z axis
*/
void mts_flip()
{
int x, y, z;
node_t layer[256][256];
mts_getbounds(0, NULL, NULL);
if(mix > max) return;
for(y = miy; y <= may; y++) {
memcpy(layer, nodes[y], sizeof(node_t)*256*256);
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++) {
memcpy(&nodes[y][z][x], &layer[maz-z+miz][x], sizeof(node_t));
if(nodes[y][z][x].param0) {
edit_rotate(y, z, x, 0);
edit_rotate(y, z, x, 0);
}
}
}
x = maz; maz = miz; miz = x;
}
/**
* Insert an Y layer
*/
void mts_addy(int y, int copy)
{
int x, Y, z;
mts_getbounds(0, NULL, NULL);
if(miy > may) return;
for(Y = miy-1 < 0 ? 0 : miy-1; Y < y; Y++)
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++)
memcpy(&nodes[Y][z][x], &nodes[Y+1][z][x], sizeof(node_t));
if(!copy)
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++)
memset(&nodes[y][z][x], 0, sizeof(node_t));
if(miy) miy--;
}
/**
* Remove an Y layer
*/
void mts_dely(int y)
{
int x, Y, z;
mts_getbounds(0, NULL, NULL);
if(miy > may) return;
for(Y = y; Y >= miy; Y--)
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++)
memcpy(&nodes[Y][z][x], &nodes[Y-1][z][x], sizeof(node_t));
for(z = miz; z <= maz; z++)
for(x = mix; x <= max; x++)
memset(&nodes[miy][z][x], 0, sizeof(node_t));
if(miy < y) miy++;
}
/**
* Insert an X layer
*/
void mts_addx(int x, int copy)
{
int X, y, z;
mts_getbounds(0, NULL, NULL);
if(mix > max) return;
for(y = miy; y <= may; y++)
for(z = miz; z <= maz; z++)
for(X = max+1 > 255 ? 255 : max+1; X > x ; X--)
memcpy(&nodes[y][z][X], &nodes[y][z][X-1], sizeof(node_t));
if(!copy)
for(y = miy; y <= may; y++)
for(z = miz; z <= maz; z++)
memset(&nodes[y][z][x], 0, sizeof(node_t));
if(max < 255) max++;
}
/**
* Remove an X layer
*/
void mts_delx(int x)
{
int X, y, z;
mts_getbounds(0, NULL, NULL);
if(mix > max) return;
for(y = miy; y <= may; y++)
for(z = miz; z <= maz; z++)
for(X = x; X <= max; X++)
memcpy(&nodes[y][z][X], &nodes[y][z][X+1], sizeof(node_t));
for(y = miy; y <= may; y++)
for(z = miz; z <= maz; z++)
memset(&nodes[y][z][max], 0, sizeof(node_t));
if(max > x) max--;
}
/**
* Insert a Z layer
*/
void mts_addz(int z, int copy)
{
int x, y, Z;
mts_getbounds(0, NULL, NULL);
if(miz > maz) return;
for(y = miy; y <= may; y++)
for(Z = miz-1 < 0 ? 0 : miz-1; Z < z; Z++)
for(x = mix; x <= max; x++)
memcpy(&nodes[y][Z][x], &nodes[y][Z+1][x], sizeof(node_t));
if(!copy)
for(y = miy; y <= may; y++)
for(x = mix; x <= max; x++)
memset(&nodes[y][z][x], 0, sizeof(node_t));
if(miz) miz--;
}
/**
* Remove a Z layer
*/
void mts_delz(int z)
{
int x, y, Z;
mts_getbounds(0, NULL, NULL);
if(miz > maz) return;
for(y = miy; y <= may; y++)
for(Z = z; Z >= miz; Z--)
for(x = mix; x <= max; x++)
memcpy(&nodes[y][Z][x], &nodes[y][Z-1][x], sizeof(node_t));
for(y = miy; y <= may; y++)
for(x = mix; x <= max; x++)
memset(&nodes[y][miz][x], 0, sizeof(node_t));
if(miz < z) miz++;
}

View File

@ -41,6 +41,9 @@ void save_redraw()
int k, l;
SDL_Rect rect;
rect.x = 36; rect.y = 0; rect.w = screen->w - 36; rect.h = screen->h - font->height;
SDL_FillRect(screen, &rect, theme[THEME_BG]);
strmaxw = screen->w - 5;
sdlprint((screen->w - 47 - strlen(lang[SAVEAS]) * (font->width+1)) / 2 + 47, 4, THEME_INPUT, THEME_BG, lang[SAVEAS]);
rect.y = 12 + font->height;
@ -148,7 +151,7 @@ void save_mousedown(SDL_Event *event)
savebiome ^= 1;
biomepos = 0;
}
if(event->button.y >= i && event->button.y < (int)(i + font->height)) sdldosave();
if(event->button.y >= i && event->button.y < (int)(i + font->height)) sdldo(1);
else if(savebiome && event->button.y >= (int)(24 + 4*font->height) && event->button.y < i) {
biomepos = biomescr + (event->button.y - (24 + 4*font->height)) / font->height;
if(savefld != 4) savefld = 4;
@ -230,7 +233,7 @@ void save_key(SDL_Event *event)
if(savepal + 1 >= numpalettes) savepal = 0; else savepal++;
}
break;
case SDLK_RETURN: sdldosave(); break;
case SDLK_RETURN: sdldo(1); break;
default:
if(savefld == 1) savefld = 2; else if(savefld == 2) savefld = 1;
if(savefld == 3) { savebiome ^= 1; biomepos = 0; }

317
src/sdl.c
View File

@ -32,21 +32,48 @@
uint32_t theme[] = { 0xFFF0F0F0, 0xFFF4F4F4, 0xFFBEBEBE, 0xFF808080, 0xFF5C5C5C, 0xFF4C4C4C, 0xFF454545, 0xFF383838, 0xFF303030,
0xFFC00000, 0xFF800000 };
int quitting = 0, activetool = -1, overtool = -1, activeblock = 0, overblock = -1, palette[16], strmaxw, shift = 0, ctrl = 0;
int systemcursor = 0;
int quitting = 0, activetool = -1, overtool = -1, activeblock = 0, overblock = -1, palette[16], strmaxw, strsep = 1;
int shift = 0, ctrl = 0, help = 0, systemcursor = 0;
char *status = NULL;
unsigned char *tmpblk = NULL;
SDL_Window *window = NULL;
SDL_Surface *icons = NULL;
SDL_Surface *screen = NULL;
SDL_Surface *cursor = NULL;
SDL_Surface *fg = NULL;
SDL_Surface *cl = NULL;
SDL_Surface *bg = NULL;
SDL_Surface *blk = NULL;
SDL_Cursor *working, *pointer;
psf_t *font = NULL;
/* help strings */
help_t helpkeys[] = {
{ ADDBLOCKS, " TAB \001 / \001 M " },
{ SELBLOCK, " 0 \001 .. \001 9 " },
{ FILL, " Enter " },
{ PAINT, " " },
{ LOAD, " L " },
{ SAVE, " S " },
{ SAVEAS, " Shift \001 + \001 S " },
{ SAVEPREVIEW, " P " },
{ CHANGEORIENT, " R " },
{ MIRROR, " F " },
{ ADDY, " X " },
{ DELY, " Ctrl \001 + \001 X " },
{ ADDZ, " C " },
{ DELZ, " Ctrl \001 + \001 C " },
{ ADDX, " V " },
{ DELX, " Ctrl \001 + \001 V " },
{ UNDO, " Z " },
{ REDO, " Y " },
{ BRUSH, " B " },
{ GROUNDLEVEL, " G " },
{ LAYERUP, " PgUp " },
{ LAYERDOWN, " PgDn " },
{ SCROLL, " Ctrl \001 + \001\033\001 \001\030\001 \001\031\001 \001\032" }
};
/**
* Print string to screen
*/
@ -63,6 +90,7 @@ void sdlprint(int x, int y, int fg, int bg, char *s)
else c = 0;
} else c = *s;
s++;
if(c == 1) { fg += bg; bg = fg - bg; fg -= bg; continue; }
glyph = (unsigned char*)font + font->headersize + (c < font->numglyph ? c : 0) * font->bytesperglyph;
offs = (y * screen->pitch) + (x * 4);
for(j = 0; j < font->height; j++){
@ -76,10 +104,35 @@ void sdlprint(int x, int y, int fg, int bg, char *s)
glyph += bytesperline;
offs += screen->pitch;
}
x += font->width + 1;
x += font->width + strsep;
}
}
/**
* Draw help window
*/
void sdlhelp()
{
int i;
SDL_Rect rect;
i = screen->w * 3 / 4;
rect.w = strlen(lang[HELP]) * (font->width+1) + 8;
if(i > rect.w) rect.w = i;
rect.h = ((int)(sizeof(helpkeys)/sizeof(helpkeys[0])) + 1) * (font->height + 4) + 8;
rect.x = (screen->w - rect.w)/2;
rect.y = (screen->h - rect.h)/2;
SDL_FillRect(screen, &rect, theme[THEME_BG]);
rect.x += 4; rect.y += 4; strmaxw = rect.x + rect.w - 8;
for(i = 0; i < (int)(sizeof(helpkeys)/sizeof(helpkeys[0])); i++) {
strsep = 0; sdlprint(rect.x, rect.y, THEME_BG, THEME_FG, helpkeys[i].key); strsep = 1;
sdlprint(rect.x + 136, rect.y, THEME_FG, THEME_BG, lang[(int)helpkeys[i].text]);
rect.y += font->height + 4;
}
sdlprint(rect.x + (rect.w - strlen(lang[HELP]) * (font->width+1)) / 2, rect.y, THEME_INACT, THEME_BG, lang[HELP]);
}
/**
* Redraw the toolbar
*/
@ -89,22 +142,25 @@ void sdltoolbar()
char *s = status, str[5];
SDL_Rect src, dst;
strmaxw = screen->w - 5;
dst.x = dst.y = 0; dst.w = 36; dst.h = screen->h;
SDL_FillRect(screen, &dst, theme[THEME_BG]);
dst.x = 2; dst.y = 4 + 5*36; dst.w = 32; dst.h = screen->h - 3*font->height - 2*37 - dst.y;
dst.x = 2; dst.y = 4 + 5*36 + 84; dst.w = 32; dst.h = screen->h - 3*font->height - 4 - 2*37 - dst.y;
SDL_FillRect(screen, &dst, theme[THEME_TABBG]);
/* layer up and down */
src.w = src.h = dst.w = dst.h = 32; src.x = 0; dst.x = 2;
dst.y = screen->h - 3*font->height - 2*37;
for(i = 5; i < 7; i++, dst.y += 36) {
src.y = (i+6) * 32;
for(i = 0; i < 2; i++, dst.y += 36) {
src.y = (i+14) * 32;
dst.x--; dst.y--; dst.w += 2; dst.h += 2;
SDL_FillRect(screen, &dst, theme[i == activetool ? THEME_FG : (i == overtool ? THEME_INACT : THEME_BG)]);
SDL_FillRect(screen, &dst, theme[(i+17) == activetool ? THEME_FG : ((i+17) == overtool ? THEME_INACT : THEME_BG)]);
dst.x++; dst.y++; dst.w -= 2; dst.h -= 2;
SDL_BlitSurface(icons, &src, screen, &dst);
}
/* load, save, preview */
dst.y = 2;
for(i = 0; i < 5; i++) {
for(i = 0; i < 3; i++) {
src.y = (i+5) * 32;
dst.y = 4 + (i * 36);
dst.x--; dst.y--; dst.w += 2; dst.h += 2;
@ -112,8 +168,28 @@ void sdltoolbar()
dst.x++; dst.y++; dst.w -= 2; dst.h -= 2;
SDL_BlitSurface(icons, &src, screen, &dst);
}
src.y = 10 * 32; dst.x = 2; dst.y = 4 + 5 * 36;
m = screen->h - 3*font->height - 2*37;
/* rotate, flip, insert, remove, undo, redo, zoom */
dst.w = dst.h = 16;
for(i = 0; i < 10; i++) {
dst.x = 2 + (i & 1)*16;
dst.y = 4 + (3 * 36) + (i >> 1) * 16;
SDL_FillRect(screen, &dst, theme[(i+3) == activetool ? THEME_FG : ((i+3) == overtool ? THEME_INACT : THEME_BG)]);
}
src.y = 8 * 32; dst.x = 2; dst.y = 4 + (3 * 36); dst.w = 32; src.h = dst.h = 80;
SDL_BlitSurface(icons, &src, screen, &dst);
/* brush shape, all blocks (search blocks to add to palette) */
dst.w = dst.h = src.h = 32;
for(i = 0; i < 2; i++) {
src.y = (i+11) * 32;
dst.y = 88 + ((i+3) * 36);
dst.x--; dst.y--; dst.w += 2; dst.h += 2;
SDL_FillRect(screen, &dst, theme[(i + 15) == activetool ? THEME_FG : ((i + 15) == overtool ? THEME_INACT : THEME_BG)]);
dst.x++; dst.y++; dst.w -= 2; dst.h -= 2;
SDL_BlitSurface(icons, &src, screen, &dst);
}
/* blocks palette */
src.y = 13 * 32; dst.x = 2; dst.y = 4 + 5*36 + 84;
m = screen->h - 3*font->height - 2*37 - 4;
SDL_FillRect(screen, &dst, theme[!activeblock ? THEME_INACT : (!overblock ? THEME_INPBG : THEME_TABBG)]);
SDL_BlitSurface(icons, &src, screen, &dst);
src.y = 0; dst.y += 32;
@ -129,16 +205,28 @@ void sdltoolbar()
if((activetool == -1 && overtool < -1) || overtool >= 0) s = lang[LOAD + overtool];
if(overblock != -1 && (!overblock || palette[overblock])) s = blocks[palette[overblock]].name;
}
/* ground layer */
dst.x = 2; dst.y = screen->h - 3*font->height; dst.w = 32; dst.h = font->height;
i = currlayer == gndlayer ? THEME_FG : THEME_TABBG;
SDL_FillRect(screen, &dst, theme[i]);
sdlprint(5, screen->h - 3*font->height, THEME_INACT, i, lang[GND]);
/* current layer */
dst.x = 2; dst.y = screen->h - 2*font->height; dst.w = 32; dst.h = font->height;
SDL_FillRect(screen, &dst, theme[THEME_BG]);
sprintf(str, "%4d", currlayer - gndlayer);
/* probability */
sdlprint(0, screen->h - 2*font->height, THEME_INACT, THEME_BG, str);
sprintf(str, "%3d%%", layerprob[currlayer] * 100 / 127);
sdlprint(2, screen->h - font->height, THEME_INACT, THEME_BG, str);
/* status bar */
sprintf(str, "%3d", brush_height());
sdlprint(screen->w - 5 * font->width - 8, screen->h - font->height, THEME_FG, THEME_BG, str);
memcpy(str, "\xC2\x80\xC2\x80", 5);
strsep = 0;
str[1] = 0x80 + (4*brush_type) + (2*brush_hollow);
str[3] = 0x81 + (4*brush_type) + (2*brush_hollow);
sdlprint(screen->w - 2 * font->width - 4, screen->h - font->height, THEME_FG, THEME_BG, str);
strsep = 1;
if(s)
sdlprint(42, screen->h - font->height, THEME_FG, THEME_BG, s);
}
@ -148,81 +236,50 @@ void sdltoolbar()
*/
void sdlredraw()
{
SDL_Rect rect;
/* main window area */
strmaxw = screen->w;
rect.x = 36; rect.y = 0; rect.w = screen->w - 36; rect.h = screen->h - font->height;
SDL_FillRect(screen, &rect, theme[activetool == 1 || activetool == 4 ? THEME_BG : THEME_TABBG]);
switch(activetool) {
case 1: save_redraw(); break;
case 4: search_redraw(); break;
default: if(dx && dz) edit_redraw(); break;
case 15: edit_redraw(1); brush_redraw(); break;
case 16: search_redraw(); break;
default: edit_redraw(1); break;
}
/* toolbar and status bar */
sdltoolbar();
if(help) sdlhelp();
/* flush the window */
SDL_UpdateWindowSurface(window);
}
/**
* UI for saving
* UI for various MTS operations
*/
void sdldosave()
{
SDL_SetCursor(working);
mts_save();
SDL_SetCursor(pointer);
activetool = -1; activeblock = 0;
sdlredraw();
}
/**
* UI for loading
*/
void sdldoload()
{
SDL_SetCursor(working);
readschem();
SDL_SetCursor(pointer);
activetool = -1; activeblock = 0;
sdlredraw();
}
/**
* UI for preview
*/
void sdldopreview()
{
SDL_SetCursor(working);
mts_view(shift);
SDL_SetCursor(pointer);
sdlredraw();
}
/**
* UI for rotating
*/
void sdldorotate(int ccw)
void sdldo(int opt)
{
int i;
SDL_ShowCursor(1); systemcursor = 1;
SDL_SetCursor(working);
mts_rotate(ccw);
i = cx;
if(ccw) { cx = cz; cz = 255 - i; } else { cx = 255 - cz; cz = i; }
SDL_SetCursor(pointer);
}
/**
* UI for fliping
*/
void sdldoflip()
{
SDL_SetCursor(working);
mts_flip();
switch(opt) {
case -1: activetool = -1; break;
case 0: readschem(); activetool = -1; activeblock = 0; break;
case 1: mts_save(); activetool = -1; activeblock = 0; break;
case 2: mts_view(shift); break;
case 3:
case 4: mts_rotate(4-opt); i = cx; if(opt == 3) { cx = cz; cz = 255 - i; } else { cx = 255 - cz; cz = i; } break;
case 5: mts_flip(); break;
case 6: hist_prepare(HIST_ADDY, currlayer); mts_addy(currlayer, shift); hist_commit(); break;
case 7: hist_prepare(HIST_DELY, currlayer); mts_dely(currlayer); hist_commit(); break;
case 8: hist_prepare(HIST_ADDZ, cz); mts_addz(cz, shift); hist_commit(); break;
case 9: hist_prepare(HIST_DELZ, cz); mts_delz(cz); hist_commit(); break;
case 10: hist_prepare(HIST_ADDX, cx); mts_addx(cx, shift); hist_commit(); break;
case 11: hist_prepare(HIST_DELX, cx); mts_delx(cx); hist_commit(); break;
}
SDL_SetCursor(pointer);
SDL_ShowCursor(0); systemcursor = 0;
sdlredraw();
}
/**
@ -238,8 +295,8 @@ void sdlmain()
SDL_Event event;
/* get our font */
font = (psf_t*)stbi_zlib_decode_malloc_guesssize_headerflag((const char*)&font_start, (char*)&font_end - (char*)&font_start,
32768, &len, 1);
font = (psf_t*)stbi_zlib_decode_malloc_guesssize_headerflag((const char*)&font_start + 10,
(char*)&font_end - (char*)&font_start - 10, 32768, &len, 0);
if(!font) error(lang[ERR_MEM]);
/* initialize SDL */
@ -255,7 +312,7 @@ void sdlmain()
working = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_WAITARROW);
pointer = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_ARROW);
/* get icons */
/* get icons and surfaces */
s.read_from_callbacks = 0;
s.img_buffer = s.img_buffer_original = (unsigned char *)&icons_start;
s.img_buffer_end = s.img_buffer_original_end = (unsigned char *)&icons_end;
@ -267,8 +324,10 @@ void sdlmain()
icons = SDL_CreateRGBSurfaceFrom((uint32_t*)icondata, iw, ih, 32, iw*4, 0xFF, 0xFF00, 0xFF0000, 0xFF000000);
blk = SDL_CreateRGBSurfaceFrom(NULL, 32, 32, 32, 32*4, 0xFF, 0xFF00, 0xFF0000, 0xFF000000);
fg = SDL_CreateRGBSurface(0, screen->w - 36, screen->h - font->height, 32, 0xFF, 0xFF00, 0xFF0000, 0xFF000000);
cl = SDL_CreateRGBSurface(0, screen->w - 36, screen->h - font->height, 32, 0xFF, 0xFF00, 0xFF0000, 0xFF000000);
bg = SDL_CreateRGBSurface(0, screen->w - 36, screen->h - font->height, 32, 0xFF, 0xFF00, 0xFF0000, 0xFF000000);
cursor = SDL_CreateRGBSurface(0, 32, 32, 32, 0xFF, 0xFF00, 0xFF0000, 0xFF000000);
memset(&histcurr, 0, sizeof(histlist_t));
dx = dz = 0;
/* draw window and loading message */
memset(palette, 0, sizeof(palette));
@ -292,9 +351,9 @@ void sdlmain()
if(!nodes[i][j][k].param0) nodes[i][j][k].param1 = 0;
/* repaint window with the loaded MTS */
sdlredraw();
SDL_SetCursor(pointer);
SDL_ShowCursor(0);
sdlredraw();
SDL_StartTextInput();
/* main loop */
@ -314,6 +373,8 @@ void sdlmain()
screen = SDL_GetWindowSurface(window);
fg = SDL_CreateRGBSurface(0, screen->w - 36, screen->h - font->height, 32,
0xFF, 0xFF00, 0xFF0000, 0xFF000000);
cl = SDL_CreateRGBSurface(0, screen->w - 36, screen->h - font->height, 32,
0xFF, 0xFF00, 0xFF0000, 0xFF000000);
bg = SDL_CreateRGBSurface(0, screen->w - 36, screen->h - font->height, 32,
0xFF, 0xFF00, 0xFF0000, 0xFF000000);
sdlredraw();
@ -335,22 +396,30 @@ void sdlmain()
}
if(event.motion.x < 36) {
/* toolbar */
if(event.motion.y < 4 + 5 * 36) {
if(event.motion.y < 4 + 3 * 36) {
i = (event.motion.y > 3 ? event.motion.y - 4 : event.motion.y) / 36;
} else
if(event.motion.y < 4 + 3 * 36 + 80) {
i = 3 + ((((event.motion.y - 4 - 3 * 36) / 16) << 1) | (event.motion.x >= 18 ? 1 : 0));
} else
if(event.motion.y < 4 + 5 * 36 + 84) {
i = 15 + ((event.motion.y - 4 - 3 * 36 - 84) / 36);
} else
if(event.motion.y >= (int)(screen->h - font->height)) i = -3; else
if(event.motion.y >= (int)(screen->h - 2*font->height)) i = -4; else
if(event.motion.y >= (int)(screen->h - 3*font->height)) i = -2; else
if(event.motion.y >= (int)(screen->h - 3*font->height - 36)) i = 6; else
if(event.motion.y >= (int)(screen->h - 3*font->height - 2*36)) i = 5; else
if(event.motion.y < (int)(screen->h - 3*font->height - 2*36)) j = (event.motion.y - (4 + 5 * 36)) / 32;
if(event.motion.y >= (int)(screen->h - 3*font->height - 36)) i = 18; else
if(event.motion.y >= (int)(screen->h - 3*font->height - 2*36)) i = 17; else
if(event.motion.y < (int)(screen->h - 3*font->height - 2*36))
j = (event.motion.y - 4 - 5 * 36 - 88) / 32;
} else
if(activetool == 4) search_mouseover(&event); else
if(activetool == 16) search_mouseover(&event); else
if(activetool == -1) {
if(event.motion.x > screen->w - 32 && event.motion.y >= (int)(screen->h - font->height - 32)) i = -5;
k = cx; l = cz;
edit_mouseover(&event);
if(k != cx || l != cz) {
edit_redraw(0);
sdltoolbar();
SDL_UpdateWindowSurface(window);
}
@ -376,19 +445,40 @@ void sdlmain()
sdltoolbar();
SDL_UpdateWindowSurface(window);
}
if(activetool == 1) save_mousedown(&event); else
if(activetool == 4) search_mousedown(&event);
switch(activetool) {
case 1: save_mousedown(&event); break;
case 15:
if(event.motion.x > 36) {
if(!brush_mousedown(&event)) {
edit_mouseover(&event);
edit_redraw(0);
SDL_ShowCursor(0); systemcursor = 0; activetool = -1;
}
SDL_UpdateWindowSurface(window);
}
break;
case 16: search_mousedown(&event); break;
}
break;
case SDL_MOUSEBUTTONUP:
if(activetool != -1 && activetool == overtool) {
switch(activetool) {
case 0: sdldoload(); break;
case 2: sdldopreview(); break;
case 3: sdldorotate(shift || event.button.button != 1 ? 0 : 1); break;
case 5: if(currlayer < 255) currlayer++; break;
case 6: if(currlayer > 0) currlayer--; break;
default: if(activetool != 1 && activetool != 4) activetool = -1; break;
case 0: sdldo(0); break;
case 2: sdldo(2); break;
case 3: sdldo(shift || event.button.button != 1 ? 4 : 3); break;
case 4: sdldo(5); break;
case 5: sdldo(6); break;
case 6: sdldo(7); break;
case 7: sdldo(8); break;
case 8: sdldo(9); break;
case 9: sdldo(10); break;
case 10: sdldo(11); break;
case 11: hist_undo(); break;
case 12: hist_redo(); break;
case 17: if(currlayer < 255) currlayer++; break;
case 18: if(currlayer > 0) currlayer--; break;
}
if(activetool != 1 && activetool != 15 && activetool != 16) activetool = -1;
}
sdlredraw();
break;
@ -396,7 +486,7 @@ void sdlmain()
if(overtool == -3) mts_layerprob(event.wheel.y); else
switch(activetool) {
case 1: save_scroll(&event); break;
case 4: search_scroll(&event); break;
case 16: search_scroll(&event); break;
case -1: edit_scroll(&event); break;
}
sdlredraw();
@ -407,33 +497,47 @@ void sdlmain()
status = NULL;
if(event.key.keysym.sym == SDLK_LSHIFT || event.key.keysym.sym == SDLK_RSHIFT) shift = 1;
if(event.key.keysym.sym == SDLK_LCTRL || event.key.keysym.sym == SDLK_RCTRL) ctrl = 1;
if(activetool != -1 && event.key.keysym.sym == SDLK_ESCAPE) {
SDL_ShowCursor(0);
systemcursor = 0;
activetool = -1;
} else
if(activetool != 1 && activetool != 4) edit_key(&event);
if(!help) {
if(activetool != -1 && event.key.keysym.sym == SDLK_ESCAPE) {
if(activetool == 15) brush_setmask(1);
SDL_ShowCursor(0);
systemcursor = 0;
activetool = -1;
} else
if(activetool != 1 && activetool != 15 && activetool != 16) edit_key(&event);
}
break;
case SDL_TEXTINPUT:
case SDL_KEYUP:
if(event.key.keysym.sym == SDLK_LSHIFT || event.key.keysym.sym == SDLK_RSHIFT) shift = 0;
if(event.key.keysym.sym == SDLK_LCTRL || event.key.keysym.sym == SDLK_RCTRL) ctrl = 0;
if(activetool == 1) save_key(&event); else
if(activetool == 4) {
if(event.key.keysym.sym == SDLK_TAB) {
SDL_ShowCursor(0);
systemcursor = 0;
activetool = -1;
} else search_key(&event);
if(event.key.keysym.sym == SDLK_F1) { help ^= 1; sdlredraw(); break; }
if(!help) {
i = 0;
switch(activetool) {
case 1: save_key(&event); break;
case 15: brush_key(&event); break;
case 16: search_key(&event); break;
default:
if(event.key.keysym.sym == SDLK_f) sdldo(5); else
if(event.key.keysym.sym == SDLK_m || event.key.keysym.sym == SDLK_TAB) activetool = 16;
if(event.key.keysym.sym == SDLK_b) activetool = 15;
if(shift && event.key.keysym.sym == SDLK_s) activetool = 1;
break;
}
if(!i) sdlredraw();
else {
edit_redraw(0);
sdltoolbar();
SDL_UpdateWindowSurface(window);
}
} else {
if(event.key.keysym.sym == SDLK_f) sdldoflip(); else
if(event.key.keysym.sym == SDLK_m || event.key.keysym.sym == SDLK_TAB) activetool = 4;
help = 0;
sdlredraw();
}
if(shift && event.key.keysym.sym == SDLK_s) activetool = 1;
sdlredraw();
break;
}
if(activetool != -1 || SDL_GetCursor() == working) {
if(activetool != -1 || overtool != -1 || SDL_GetCursor() == working) {
if(!systemcursor) SDL_ShowCursor(1);
systemcursor = 1;
}
@ -447,9 +551,10 @@ void sdlmain()
SDL_FreeSurface(icons);
SDL_FreeSurface(blk);
SDL_FreeSurface(fg);
SDL_FreeSurface(cl);
SDL_FreeSurface(bg);
SDL_FreeSurface(cursor);
SDL_Quit();
hist_free(-1, -1);
free(icondata);
free(font);
freeblocks();

View File

@ -41,6 +41,9 @@ void search_redraw()
int i;
SDL_Rect rect;
rect.x = 36; rect.y = 0; rect.w = screen->w - 36; rect.h = screen->h - font->height;
SDL_FillRect(screen, &rect, theme[THEME_BG]);
strmaxw = screen->w - 5;
sdlprint((screen->w - 47 - strlen(lang[ADDBLOCKS]) * (font->width+1)) / 2 + 47, 4, THEME_INPUT, THEME_BG, lang[ADDBLOCKS]);
rect.y = 12 + font->height;
@ -101,6 +104,8 @@ void search_mousedown(_unused SDL_Event *event)
{
if(overblk != -1 && overblk < numresults) {
search_addblock(overblk);
status = overblk < 0 || overblk >= numresults || results[overblk] < 0 || results[overblk] >= numblocks ? NULL :
blocks[results[overblk]].name;
sdlredraw();
}
}
@ -163,6 +168,8 @@ void search_key(SDL_Event *event)
case SDLK_DOWN: searchpos = searchlen; break;
case SDLK_LEFT: if(searchpos) searchpos--; break;
case SDLK_RIGHT: if(searchpos < searchlen) searchpos++; break;
case SDLK_TAB:
case SDLK_RETURN: sdldo(-1); break;
}
if(ctrl && event->key.keysym.sym >= SDLK_1 && event->key.keysym.sym <= SDLK_9)
search_addblock(event->key.keysym.sym - SDLK_1);