Browse Source

Allow "liquid" and "flowingliquid" drawtypes even if liquidtype=none (#10737)

Wuzzy 3 years ago
parent
commit
7f25823bd4

+ 54 - 53
games/devtest/mods/testnodes/drawtypes.lua

@@ -350,68 +350,72 @@ minetest.register_node("testnodes:plantlike_rooted_degrotate", {
 })
 
 -- Demonstrative liquid nodes, source and flowing form.
-minetest.register_node("testnodes:liquid", {
-	description = S("Source Liquid Drawtype Test Node"),
-	drawtype = "liquid",
-	paramtype = "light",
-	tiles = {
-		"testnodes_liquidsource.png",
-	},
-	special_tiles = {
-		{name="testnodes_liquidsource.png", backface_culling=false},
-		{name="testnodes_liquidsource.png", backface_culling=true},
-	},
-	use_texture_alpha = true,
-
-
-	walkable = false,
-	liquidtype = "source",
-	liquid_range = 1,
-	liquid_viscosity = 0,
-	liquid_alternative_flowing = "testnodes:liquid_flowing",
-	liquid_alternative_source = "testnodes:liquid",
-	groups = { dig_immediate = 3 },
-})
-minetest.register_node("testnodes:liquid_flowing", {
-	description = S("Flowing Liquid Drawtype Test Node"),
-	drawtype = "flowingliquid",
-	paramtype = "light",
-	paramtype2 = "flowingliquid",
-	tiles = {
-		"testnodes_liquidflowing.png",
-	},
-	special_tiles = {
-		{name="testnodes_liquidflowing.png", backface_culling=false},
-		{name="testnodes_liquidflowing.png", backface_culling=false},
-	},
-	use_texture_alpha = true,
+-- DRAWTYPE ONLY, NO LIQUID PHYSICS!
+-- Liquid ranges 0 to 8
+for r = 0, 8 do
+	minetest.register_node("testnodes:liquid_"..r, {
+		description = S("Source Liquid Drawtype Test Node, Range @1", r),
+		drawtype = "liquid",
+		paramtype = "light",
+		tiles = {
+			"testnodes_liquidsource_r"..r..".png^[colorize:#FFFFFF:100",
+		},
+		special_tiles = {
+			{name="testnodes_liquidsource_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=false},
+			{name="testnodes_liquidsource_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=true},
+		},
+		use_texture_alpha = true,
+
+
+		walkable = false,
+		liquid_range = r,
+		liquid_viscosity = 0,
+		liquid_alternative_flowing = "testnodes:liquid_flowing_"..r,
+		liquid_alternative_source = "testnodes:liquid_"..r,
+		groups = { dig_immediate = 3 },
+	})
+	minetest.register_node("testnodes:liquid_flowing_"..r, {
+		description = S("Flowing Liquid Drawtype Test Node, Range @1", r),
+		drawtype = "flowingliquid",
+		paramtype = "light",
+		paramtype2 = "flowingliquid",
+		tiles = {
+			"testnodes_liquidflowing_r"..r..".png^[colorize:#FFFFFF:100",
+		},
+		special_tiles = {
+			{name="testnodes_liquidflowing_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=false},
+			{name="testnodes_liquidflowing_r"..r..".png^[colorize:#FFFFFF:100", backface_culling=false},
+		},
+		use_texture_alpha = true,
+
+
+		walkable = false,
+		liquid_range = r,
+		liquid_viscosity = 0,
+		liquid_alternative_flowing = "testnodes:liquid_flowing_"..r,
+		liquid_alternative_source = "testnodes:liquid_"..r,
+		groups = { dig_immediate = 3 },
+	})
 
+end
 
-	walkable = false,
-	liquidtype = "flowing",
-	liquid_range = 1,
-	liquid_viscosity = 0,
-	liquid_alternative_flowing = "testnodes:liquid_flowing",
-	liquid_alternative_source = "testnodes:liquid",
-	groups = { dig_immediate = 3 },
-})
+-- Waving liquid test (drawtype only)
 minetest.register_node("testnodes:liquid_waving", {
 	description = S("Waving Source Liquid Drawtype Test Node"),
 	drawtype = "liquid",
 	paramtype = "light",
 	tiles = {
-		"testnodes_liquidsource.png^[brighten",
+		"testnodes_liquidsource.png^[colorize:#0000FF:127",
 	},
 	special_tiles = {
-		{name="testnodes_liquidsource.png^[brighten", backface_culling=false},
-		{name="testnodes_liquidsource.png^[brighten", backface_culling=true},
+		{name="testnodes_liquidsource.png^[colorize:#0000FF:127", backface_culling=false},
+		{name="testnodes_liquidsource.png^[colorize:#0000FF:127", backface_culling=true},
 	},
 	use_texture_alpha = true,
 	waving = 3,
 
 
 	walkable = false,
-	liquidtype = "source",
 	liquid_range = 1,
 	liquid_viscosity = 0,
 	liquid_alternative_flowing = "testnodes:liquid_flowing_waving",
@@ -424,18 +428,17 @@ minetest.register_node("testnodes:liquid_flowing_waving", {
 	paramtype = "light",
 	paramtype2 = "flowingliquid",
 	tiles = {
-		"testnodes_liquidflowing.png^[brighten",
+		"testnodes_liquidflowing.png^[colorize:#0000FF:127",
 	},
 	special_tiles = {
-		{name="testnodes_liquidflowing.png^[brighten", backface_culling=false},
-		{name="testnodes_liquidflowing.png^[brighten", backface_culling=false},
+		{name="testnodes_liquidflowing.png^[colorize:#0000FF:127", backface_culling=false},
+		{name="testnodes_liquidflowing.png^[colorize:#0000FF:127", backface_culling=false},
 	},
 	use_texture_alpha = true,
 	waving = 3,
 
 
 	walkable = false,
-	liquidtype = "flowing",
 	liquid_range = 1,
 	liquid_viscosity = 0,
 	liquid_alternative_flowing = "testnodes:liquid_flowing_waving",
@@ -443,8 +446,6 @@ minetest.register_node("testnodes:liquid_flowing_waving", {
 	groups = { dig_immediate = 3 },
 })
 
-
-
 -- Invisible node
 minetest.register_node("testnodes:airlike", {
 	description = S("Airlike Drawtype Test Node"),

+ 0 - 8
games/devtest/mods/testnodes/liquids.lua

@@ -12,8 +12,6 @@ for d=0, 8 do
 		alpha = 192,
 		paramtype = "light",
 		walkable = false,
-		pointable = false,
-		diggable = false,
 		buildable_to = true,
 		is_ground_content = false,
 		liquidtype = "source",
@@ -34,8 +32,6 @@ for d=0, 8 do
 		paramtype = "light",
 		paramtype2 = "flowingliquid",
 		walkable = false,
-		pointable = false,
-		diggable = false,
 		buildable_to = true,
 		is_ground_content = false,
 		liquidtype = "flowing",
@@ -56,8 +52,6 @@ for d=0, 8 do
 		alpha = 192,
 		paramtype = "light",
 		walkable = false,
-		pointable = false,
-		diggable = false,
 		buildable_to = true,
 		is_ground_content = false,
 		liquidtype = "source",
@@ -78,8 +72,6 @@ for d=0, 8 do
 		paramtype = "light",
 		paramtype2 = "flowingliquid",
 		walkable = false,
-		pointable = false,
-		diggable = false,
 		buildable_to = true,
 		is_ground_content = false,
 		liquidtype = "flowing",

+ 0 - 2
games/devtest/mods/testnodes/properties.lua

@@ -118,7 +118,6 @@ minetest.register_node("testnodes:liquid_nojump", {
 	paramtype = "light",
 	pointable = false,
 	liquids_pointable = true,
-	diggable = false,
 	buildable_to = true,
 	is_ground_content = false,
 	post_effect_color = {a = 70, r = 255, g = 0, b = 200},
@@ -148,7 +147,6 @@ minetest.register_node("testnodes:liquidflowing_nojump", {
 	paramtype2 = "flowingliquid",
 	pointable = false,
 	liquids_pointable = true,
-	diggable = false,
 	buildable_to = true,
 	is_ground_content = false,
 	post_effect_color = {a = 70, r = 255, g = 0, b = 200},

+ 2 - 2
src/client/content_mapblock.cpp

@@ -513,10 +513,10 @@ f32 MapblockMeshGenerator::getCornerLevel(int i, int k)
 			count++;
 		} else if (content == CONTENT_AIR) {
 			air_count++;
-			if (air_count >= 2)
-				return -0.5 * BS + 0.2;
 		}
 	}
+	if (air_count >= 2)
+		return -0.5 * BS + 0.2;
 	if (count > 0)
 		return sum / count;
 	return 0;

+ 1 - 3
src/nodedef.cpp

@@ -788,14 +788,12 @@ void ContentFeatures::updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc
 		solidness = 0;
 		break;
 	case NDT_LIQUID:
-		assert(liquid_type == LIQUID_SOURCE);
 		if (tsettings.opaque_water)
 			alpha = 255;
 		solidness = 1;
 		is_liquid = true;
 		break;
 	case NDT_FLOWINGLIQUID:
-		assert(liquid_type == LIQUID_FLOWING);
 		solidness = 0;
 		if (tsettings.opaque_water)
 			alpha = 255;
@@ -1596,7 +1594,7 @@ static void removeDupes(std::vector<content_t> &list)
 void NodeDefManager::resolveCrossrefs()
 {
 	for (ContentFeatures &f : m_content_features) {
-		if (f.liquid_type != LIQUID_NONE) {
+		if (f.liquid_type != LIQUID_NONE || f.drawtype == NDT_LIQUID || f.drawtype == NDT_FLOWINGLIQUID) {
 			f.liquid_alternative_flowing_id = getId(f.liquid_alternative_flowing);
 			f.liquid_alternative_source_id = getId(f.liquid_alternative_source);
 			continue;