diff --git a/_de/items/creating_textures.md b/_de/items/creating_textures.md index c5a208a..ec9d73b 100644 --- a/_de/items/creating_textures.md +++ b/_de/items/creating_textures.md @@ -4,7 +4,7 @@ layout: default root: ../.. idx: 2.2 description: Eine Einführung in die Erstellung von Texturen mit dem Editor Ihrer Wahl und eine Anleitung zu GIMP. -redirect_from: /en/chapters/creating_textures.html +redirect_from: /de/chapters/creating_textures.html --- ## Einleitung diff --git a/_de/items/node_drawtypes.md b/_de/items/node_drawtypes.md new file mode 100644 index 0000000..0712a58 --- /dev/null +++ b/_de/items/node_drawtypes.md @@ -0,0 +1,446 @@ +--- +title: Block Zeichnungstypen +layout: default +root: ../.. +idx: 2.3 +description: Ratgeber für alle Zeichnungstypen, einschließlich node boxes/nodeboxes und mesh nodes. +redirect_from: /de/chapters/node_drawtypes.html +--- + +## Einleitung + +Die Methode, mit der ein Block gezeichnet wird, wird als *Zeichnungstyp* bezeichnet. Es gibt viele +verfügbare Zeichnungstypen. Das Verhalten eines Zeichnungstyp kann gesteuert werden +durch Angabe von Eigenschaften in der Blocktypdefinition gesteuert werden. Diese Eigenschaften +sind für alle Instanzen dieses Knotens festgelegt. Es ist möglich, einige Eigenschaften +pro Knoten zu steuern, indem man etwas namens `param2` verwendet. + +Im vorigen Kapitel wurde das Konzept der Blöcke und Items eingeführt, aber eine +vollständige Definition eines Blockes wurde nicht gegeben. Die Minetest-Welt ist ein 3D-Gitter aus +Positionen. Jede Position wird als Block bezeichnet und besteht aus dem Blocktyp +(Name) und zwei Parametern (param1 und param2). Die Funktion +`minetest.register_node` (übersetzt `minetest.registriere_Block`)ist ein wenig irreführend, da sie nicht wirklich +einen Knoten registriert - sie registriert einen neuen *Typ* von Block. + +Die Blockparameter werden verwendet, um zu steuern, wie ein Block individuell gerendert wird. +`param1` wird verwendet, um die Beleuchtung eines Blockes zu speichern, und die Bedeutung von +`param2` hängt von der Eigenschaft `paramtype2` der Blocktypdefinition ab. + +- [Würfelförmiger Block: Normale und Allflächen](#würfelförmiger-block-normale-und-allflächen) +- [Glasslike Nodes](#glasslike-nodes) + - [Glasslike_Framed](#glasslike_framed) +- [Airlike Nodes](#airlike-nodes) +- [Lighting and Sunlight Propagation](#lighting-and-sunlight-propagation) +- [Liquid Nodes](#liquid-nodes) +- [Node Boxes](#node-boxes) + - [Wallmounted Node Boxes](#wallmounted-node-boxes) +- [Mesh Nodes](#mesh-nodes) +- [Signlike Nodes](#signlike-nodes) +- [Plantlike Nodes](#plantlike-nodes) +- [Firelike Nodes](#firelike-nodes) +- [More Drawtypes](#more-drawtypes) + + +## Würfelförmiger Block: Normale und Allflächen + +
+ Normaler Zeichnungstyp +
+ Normaler Zeichnungstyp +
+
+ +Der Zeichnungstyp normal wird normalerweise zum Rendern eines Würfelförmigen Blockes verwendet. +Wenn die Seite eines normalen Blockes an einer festen Seite anliegt, wird diese Seite nicht gerendert, +was zu einem großen Leistungsgewinn führt. + +Im Gegensatz dazu wird der Zeichnungstyp allfaces immer noch die Innenseite darstellen, wenn er auf einen +soliden Block ist. Dies ist gut für Blöcke mit teilweise transparenten Seiten, wie z.B. den +Blatt-Block. Sie können den allfaces_optional drawtype verwenden, um den Benutzern die Möglichkeit zu geben, die +langsamere Zeichnen auszuschalten, in diesem Fall verhält er sich wie ein normaler Block. + +```lua +minetest.register_node("meinemod:diamant", { + description = "Alien Diamant", + tiles = {"meinemod_diamant.png"}, + groups = {cracky = 3}, +}) + +minetest.register_node("default:leaves", { + description = "Blätter", + drawtype = "allfaces_optional", + tiles = {"default_leaves.png"} +}) +``` + +Hinweis: Der normale Zeichentyp ist der Standard-Zeichentyp, Sie müssen ihn also nicht explizit +angeben. + + +## Glasslike Nodes + +The difference between glasslike and normal nodes is that placing a glasslike node +next to a normal node won't cause the side of the normal node to be hidden. +This is useful because glasslike nodes tend to be transparent, and so using a normal +drawtype would result in the ability to see through the world. + +
+ Glasslike's Edges +
+ Glasslike's Edges +
+
+ +```lua +minetest.register_node("default:obsidian_glass", { + description = "Obsidian Glass", + drawtype = "glasslike", + tiles = {"default_obsidian_glass.png"}, + paramtype = "light", + is_ground_content = false, + sunlight_propagates = true, + sounds = default.node_sound_glass_defaults(), + groups = {cracky=3,oddly_breakable_by_hand=3}, +}) +``` + +### Glasslike_Framed + +This makes the node's edge go around the whole thing with a 3D effect, rather +than individual nodes, like the following: + +
+ Glasslike_framed's Edges +
+ Glasslike_Framed's Edges +
+
+ +You can use the glasslike_framed_optional drawtype to allow the user to *opt-in* +to the framed appearance. + +```lua +minetest.register_node("default:glass", { + description = "Glass", + drawtype = "glasslike_framed", + tiles = {"default_glass.png", "default_glass_detail.png"}, + inventory_image = minetest.inventorycube("default_glass.png"), + paramtype = "light", + sunlight_propagates = true, -- Sunlight can shine through block + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_glass_defaults() +}) +``` + + +## Airlike Nodes + +These nodes are not rendered and thus have no textures. + +```lua +minetest.register_node("myair:air", { + description = "MyAir (you hacker you!)", + drawtype = "airlike", + paramtype = "light", + sunlight_propagates = true, + + walkable = false, -- Would make the player collide with the air node + pointable = false, -- You can't select the node + diggable = false, -- You can't dig the node + buildable_to = true, -- Nodes can be replace this node. + -- (you can place a node and remove the air node + -- that used to be there) + + air_equivalent = true, + drop = "", + groups = {not_in_creative_inventory=1} +}) +``` + + +## Lighting and Sunlight Propagation + +The lighting of a node is stored in param1. In order to work out how to shade +a node's side, the light value of the neighbouring node is used. +Because of this, solid nodes don't have light values because they block light. + +By default, a node type won't allow light to be stored in any node instances. +It's usually desirable for some nodes such as glass and air to be able to +let light through. To do this, there are two properties which need to be defined: + +```lua +paramtype = "light", +sunlight_propagates = true, +``` + +The first line means that param1 does, in fact, store the light level. +The second line means that sunlight should go through this node without decreasing in value. + + +## Liquid Nodes + +
+ Liquid Drawtype +
+ Liquid Drawtype +
+
+ +Each type of liquid requires two node definitions - one for the liquid source, and +another for flowing liquid. + +```lua +-- Some properties have been removed as they are beyond +-- the scope of this chapter. +minetest.register_node("default:water_source", { + drawtype = "liquid", + paramtype = "light", + + inventory_image = minetest.inventorycube("default_water.png"), + -- ^ this is required to stop the inventory image from being animated + + tiles = { + { + name = "default_water_source_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 2.0 + } + } + }, + + special_tiles = { + -- New-style water source material (mostly unused) + { + name = "default_water_source_animated.png", + animation = {type = "vertical_frames", aspect_w = 16, + aspect_h = 16, length = 2.0}, + backface_culling = false, + } + }, + + -- + -- Behavior + -- + walkable = false, -- The player falls through + pointable = false, -- The player can't highlight it + diggable = false, -- The player can't dig it + buildable_to = true, -- Nodes can be replace this node + + alpha = 160, + + -- + -- Liquid Properties + -- + drowning = 1, + liquidtype = "source", + + liquid_alternative_flowing = "default:water_flowing", + -- ^ when the liquid is flowing + + liquid_alternative_source = "default:water_source", + -- ^ when the liquid is a source + + liquid_viscosity = WATER_VISC, + -- ^ how fast + + liquid_range = 8, + -- ^ how far + + post_effect_color = {a=64, r=100, g=100, b=200}, + -- ^ colour of screen when the player is submerged +}) +``` + +Flowing nodes have a similar definition, but with a different name and animation. +See default:water_flowing in the default mod in minetest_game for a full example. + + +## Node Boxes + +
+ Nodebox drawtype +
+ Nodebox drawtype +
+
+ +Node boxes allow you to create a node which is not cubic, but is instead made out +of as many cuboids as you like. + +```lua +minetest.register_node("stairs:stair_stone", { + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + } +}) +``` + +The most important part is the node box table: + +```lua +{-0.5, -0.5, -0.5, 0.5, 0, 0.5}, +{-0.5, 0, 0, 0.5, 0.5, 0.5} +``` + +Each row is a cuboid which are joined to make a single node. +The first three numbers are the co-ordinates, from -0.5 to 0.5 inclusive, of +the bottom front left most corner, the last three numbers are the opposite corner. +They are in the form X, Y, Z, where Y is up. + +You can use the [NodeBoxEditor](https://forum.minetest.net/viewtopic.php?f=14&t=2840) to +create node boxes by dragging the edges, it is more visual than doing it by hand. + + +### Wallmounted Node Boxes + +Sometimes you want different nodeboxes for when it is placed on the floor, wall, or ceiling like with torches. + +```lua +minetest.register_node("default:sign_wall", { + drawtype = "nodebox", + node_box = { + type = "wallmounted", + + -- Ceiling + wall_top = { + {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125} + }, + + -- Floor + wall_bottom = { + {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125} + }, + + -- Wall + wall_side = { + {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375} + } + }, +}) +``` + +## Mesh Nodes + +Whilst node boxes are generally easier to make, they are limited in that +they can only consist of cuboids. Node boxes are also unoptimised; +Inner faces will still be rendered even when they're completely hidden. + +A face is a flat surface on a mesh. An inner face occurs when the faces of two +different node boxes overlap, causing parts of the node box model to be +invisible but still rendered. + +You can register a mesh node as so: + +```lua +minetest.register_node("mymod:meshy", { + drawtype = "mesh", + + -- Holds the texture for each "material" + tiles = { + "mymod_meshy.png" + }, + + -- Path to the mesh + mesh = "mymod_meshy.b3d", +}) +``` + +Make sure that the mesh is available in a `models` directory. +Most of the time the mesh should be in your mod's folder, however, it's okay to +share a mesh provided by another mod you depend on. For example, a mod that +adds more types of furniture may want to share the model provided by a basic +furniture mod. + + +## Signlike Nodes + +Signlike nodes are flat nodes with can be mounted on the sides of other nodes. + +Despite the name of this drawtype, signs don't actually tend to use signlike but +instead use the `nodebox` drawtype to provide a 3D effect. The `signlike` drawtype +is, however, commonly used by ladders. + +```lua +minetest.register_node("default:ladder_wood", { + drawtype = "signlike", + + tiles = {"default_ladder_wood.png"}, + + -- Required: store the rotation in param2 + paramtype2 = "wallmounted", + + selection_box = { + type = "wallmounted", + }, +}) +``` + + +## Plantlike Nodes + +
+ Plantlike Drawtype +
+ Plantlike Drawtype +
+
+ +Plantlike nodes draw their tiles in an X like pattern. + +```lua +minetest.register_node("default:papyrus", { + drawtype = "plantlike", + + -- Only one texture used + tiles = {"default_papyrus.png"}, + + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, + }, +}) +``` + +## Firelike Nodes + +Firelike is similar to plantlike, except that it is designed to "cling" to walls +and ceilings. + +
+ Firelike nodes +
+ Firelike nodes +
+
+ +```lua +minetest.register_node("mymod:clingere", { + drawtype = "firelike", + + -- Only one texture used + tiles = { "mymod:clinger" }, +}) +``` + +## More Drawtypes + +This is not a comprehensive list, there are more types including: + +* Fencelike +* Plantlike rooted - for underwater plants +* Raillike - for cart tracks +* Torchlike - for 2D wall/floor/ceiling nodes. + The torches in Minetest Game actually use two different node definitions of + mesh nodes (default:torch and default:torch_wall). + +As always, read the [Lua API documentation](https://minetest.gitlab.io/minetest/nodes/#node-drawtypes) +for the complete list.