From f0a67cf749e4b71d189389cdc7d9ca8ef451d035 Mon Sep 17 00:00:00 2001 From: j1233 Date: Mon, 5 Apr 2021 09:19:05 +0000 Subject: [PATCH] add whirlpools --- mods/CORE/mcl_bubble_column/init.lua | 227 +++++++++++++++++++++++++-- 1 file changed, 211 insertions(+), 16 deletions(-) diff --git a/mods/CORE/mcl_bubble_column/init.lua b/mods/CORE/mcl_bubble_column/init.lua index 05cf80cd9..756e365e2 100644 --- a/mods/CORE/mcl_bubble_column/init.lua +++ b/mods/CORE/mcl_bubble_column/init.lua @@ -10,8 +10,8 @@ if minetest.features.use_texture_alpha_string_modes then WATER_ALPHA = nil end -minetest.register_node("mcl_bubble_column:water_flowing", { - description = S("Bubble Column Flowing Water"), +minetest.register_node("mcl_bubble_column:water_flowing_up", { + description = S("Bubble Column Flowing Water (up)"), _doc_items_create_entry = false, wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", drawtype = "flowingliquid", @@ -41,8 +41,8 @@ minetest.register_node("mcl_bubble_column:water_flowing", { drop = "", drowning = 4, liquidtype = "flowing", - liquid_alternative_flowing = "mcl_bubble_column:water_flowing", - liquid_alternative_source = "mcl_bubble_column:water_source", + liquid_alternative_flowing = "mcl_bubble_column:water_flowing_up", + liquid_alternative_source = "mcl_bubble_column:water_source_up", liquid_viscosity = WATER_VISC, liquid_range = 7, post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, @@ -52,7 +52,7 @@ minetest.register_node("mcl_bubble_column:water_flowing", { _mcl_hardness = -1, }) -minetest.register_node("mcl_bubble_column:water_source", { +minetest.register_node("mcl_bubble_column:water_source_up", { description = S("Bubble Column Water Source"), _doc_items_entry_name = S("Water"), _doc_items_longdesc = S("Boosts you up"), @@ -81,8 +81,8 @@ minetest.register_node("mcl_bubble_column:water_source", { drop = "", drowning = 4, liquidtype = "source", - liquid_alternative_flowing = "mcl_bubble_column:water_flowing", - liquid_alternative_source = "mcl_bubble_column:water_source", + liquid_alternative_flowing = "mcl_bubble_column:water_flowing_up", + liquid_alternative_source = "mcl_bubble_column:water_source_up", liquid_viscosity = WATER_VISC, liquid_range = 7, post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, @@ -93,30 +93,44 @@ minetest.register_node("mcl_bubble_column:water_source", { _mcl_hardness = -1, }) - minetest.register_globalstep(function() for _,player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() local pos = player:get_pos() local node = minetest.get_node(pos) - if node.name == "mcl_bubble_column:water_source" then + if node.name == "mcl_bubble_column:water_source_up" then local velocity = player:get_player_velocity() - local velocityadd = {x = 0, y = 2, z = 0} + local velocityadd = {x = 0, y = 3, z = 0} player:add_player_velocity(velocityadd) end end end) +minetest.register_abm{ + label = "entities go up", + nodenames = {"mcl_bubble_column:water_source_up"}, + interval = 0.05, + chance = 1, + action = function(pos) + for _,entity in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do + local pos = entity:get_pos() + local velocity = entity:get_velocity() + local velocityadd = {x = 0, y = 2, z = 0} + entity:add_velocity(velocityadd) + end + end, +} + minetest.register_abm{ label = "bubbles go up", - nodenames = {"mcl_bubble_column:water_source"}, + nodenames = {"mcl_bubble_column:water_source_up"}, interval = 1, chance = 1, action = function(pos) local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) local upposnode = minetest.get_node(uppos) if upposnode.name == "mcl_core:water_source" then - minetest.set_node(uppos, {name = "mcl_bubble_column:water_source"}) + minetest.set_node(uppos, {name = "mcl_bubble_column:water_source_up"}) end end, } @@ -130,14 +144,14 @@ minetest.register_abm{ local downpos = vector.add(pos, {x = 0, y = 1, z = 0}) local downposnode = minetest.get_node(downpos) if downposnode.name == "mcl_core:water_source" then - minetest.set_node(downpos, {name = "mcl_bubble_column:water_source"}) + minetest.set_node(downpos, {name = "mcl_bubble_column:water_source_up"}) end end, } minetest.register_abm{ label = "stop bubble column", - nodenames = {"mcl_bubble_column:water_source"}, + nodenames = {"mcl_bubble_column:water_source_up"}, interval = 1, chance = 1, action = function(pos) @@ -149,8 +163,8 @@ minetest.register_abm{ end, } minetest.register_abm{ - label = "bubbles", - nodenames = {"mcl_bubble_column:water_source"}, + label = "bubbles up", + nodenames = {"mcl_bubble_column:water_source_up"}, interval = 1, chance = 1, action = function(pos) @@ -172,3 +186,184 @@ minetest.register_abm{ }) end, } +--whirlpools(take you down) + + +minetest.register_node("mcl_bubble_column:water_flowing_down", { + description = S("Bubble Column Flowing Water(down)"), + _doc_items_create_entry = false, + wield_image = "default_water_flowing_animated.png^[verticalframe:64:0", + drawtype = "flowingliquid", + tiles = {"default_water_flowing_animated.png^[verticalframe:64:0"}, + special_tiles = { + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + { + image="default_water_flowing_animated.png", + backface_culling=false, + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=4.0} + }, + }, + sounds = mcl_sounds.node_sound_water_defaults(), + is_ground_content = false, + alpha = WATER_ALPHA, + use_texture_alpha = USE_TEXTURE_ALPHA, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + drowning = 4, + liquidtype = "flowing", + liquid_alternative_flowing = "mcl_bubble_column:water_flowing_down", + liquid_alternative_source = "mcl_bubble_column:water_source_down", + liquid_viscosity = WATER_VISC, + liquid_range = 7, + post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, + groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1, dig_by_piston=1}, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, +}) + +minetest.register_node("mcl_bubble_column:water_source_down", { + description = S("Whirlpool Water Source"), + _doc_items_entry_name = S("Water"), + _doc_items_longdesc = S("Takes you down!"), + _doc_items_hidden = false, + drawtype = "liquid", + tiles = { + {name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.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=5.0}, + backface_culling = false, + } + }, + sounds = mcl_sounds.node_sound_water_defaults(), + is_ground_content = false, + alpha = WATER_ALPHA, + use_texture_alpha = USE_TEXTURE_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + drowning = 4, + liquidtype = "source", + liquid_alternative_flowing = "mcl_bubble_column:water_flowing_down", + liquid_alternative_source = "mcl_bubble_column:water_source_down", + liquid_viscosity = WATER_VISC, + liquid_range = 7, + post_effect_color = {a=209, r=0x03, g=0x3C, b=0x5C}, + stack_max = 64, + groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, dig_by_piston=1}, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, +}) + + +minetest.register_globalstep(function() + for _,player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local pos = player:get_pos() + local node = minetest.get_node(pos) + if node.name == "mcl_bubble_column:water_source_down" then + local velocity = player:get_player_velocity() + local velocityadd = {x = 0, y = -0.5, z = 0} + player:add_player_velocity(velocityadd) + end + end +end) + + +minetest.register_abm{ + label = "entities go down", + nodenames = {"mcl_bubble_column:water_source_down"}, + interval = 0.05, + chance = 1, + action = function(pos) + for _,entity in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do + local pos = entity:get_pos() + local velocity = entity:get_velocity() + local velocityadd = {x = 0, y = -3, z = 0} + entity:add_velocity(velocityadd) + end + end, +} + +minetest.register_abm{ + label = "whirlpools go up", + nodenames = {"mcl_bubble_column:water_source_down"}, + interval = 1, + chance = 1, + action = function(pos) + local uppos = vector.add(pos, {x = 0, y = 1, z = 0}) + local upposnode = minetest.get_node(uppos) + if upposnode.name == "mcl_core:water_source" then + minetest.set_node(uppos, {name = "mcl_bubble_column:water_source_down"}) + end + end, +} + +minetest.register_abm{ + label = "start whirlpool", + nodenames = {"mcl_nether:magma"}, + interval = 1, + chance = 1, + action = function(pos) + local downpos = vector.add(pos, {x = 0, y = 1, z = 0}) + local downposnode = minetest.get_node(downpos) + if downposnode.name == "mcl_core:water_source" then + minetest.set_node(downpos, {name = "mcl_bubble_column:water_source_down"}) + end + end, +} + +minetest.register_abm{ + label = "stop whirlpool", + nodenames = {"mcl_bubble_column:water_source_down"}, + interval = 1, + chance = 1, + action = function(pos) + local downpos = vector.add(pos, {x = 0, y = -1, z = 0}) + local downposnode = minetest.get_node(downpos) + if downposnode.name == "mcl_core:water_source" then + minetest.set_node(pos, {name = "mcl_core:water_source"}) + end + end, +} +minetest.register_abm{ + label = "bubbles down", + nodenames = {"mcl_bubble_column:water_source_down"}, + interval = 1, + chance = 1, + action = function(pos) + minetest.add_particlespawner({ + amount = 10, + time = 0.15, + minpos = vector.add(pos, { x = -0.25, y = 0, z = -0.25 }), + maxpos = vector.add(pos, { x = 0.25, y = 0, z = 0.75 }), + attached = player, + minvel = {x = -0.2, y = 0, z = -0.2}, + maxvel = {x = 0.5, y = 0, z = 0.5}, + minacc = {x = -0.4, y = -4, z = -0.4}, + maxacc = {x = 0.5, y = -1, z = 0.5}, + minexptime = 0.3, + maxexptime = 0.8, + minsize = 0.7, + maxsize = 2.4, + texture = "mcl_particles_bubble.png" + }) + end, +}