Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
url = https://github.com/fluxionary/minetest-futil
[submodule "mods/stubes"]
path = mods/stubes
url = https://github.com/TheEt1234/luanti-stubes
url = https://codeberg.org/skyblock_zero/stubes
[submodule "mods/extended_placement"]
path = mods/extended_placement
url = https://github.com/gamefreq0/extended_placement
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# Release 42
- Added a setting that toggles the welcome message
- Seperated submodule contributions from sbz contributions in credits, so that people that have nothing to do with sbz don't get confused
- Added wormholes
- Fix crash with questbooks in node breakers
- Stubes (still hidden):
- Moved to codeberg
- Added the ability to put items and take away items by a player
- (Hopefully) fixed a crash

# Release 40
- Development resumed again!
- We are still looking for contributors, if you enjoy SBZ and want to contribute, please do so!
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,9 @@ The following licenses are used within this work.
| fakelib | <https://github.com/OgelGames/fakelib> | MIT | N/A | ❌ |
| modlib | <https://github.com/appgurueu/modlib> | MIT | N/A | ❌ |
| sethome | <https://github.com/minetest-game/sethome/> | MIT | N/A | ❌ |
| stubes | <https://github.com/TheEt1234/luanti-stubes/> | MIT | Unspecified/Same as Code License | ❌ |
| stubes | <https://codeberg.org/Skyblock_zero/stubes> | MIT | Unspecified/Same as Code License | ❌ |
| visible_wielditem | <https://github.com/appgurueu/visible_wielditem/> | MIT | N/A | ❌ |
| extended_placement | <https://github.com/gamefreq0/extended_placement/> | MIT | CC BY-SA 3.0 | ❌|
| hotbar_switching | <https://github.com/TheEt1234/hotbar_switching/> | 0BSD | N/A | ❌ |

- 🔴 means the mod features risky/improper licensing of a category of work. e.g. images licensed as GPL-3.0 make little sense is generally risky to use.
Expand Down
5 changes: 0 additions & 5 deletions docs/areas.txt

This file was deleted.

9 changes: 0 additions & 9 deletions docs/for server owners/anticheat.txt

This file was deleted.

6 changes: 0 additions & 6 deletions docs/for server owners/clearobjects.txt

This file was deleted.

10 changes: 0 additions & 10 deletions docs/for server owners/corrupted machine.txt

This file was deleted.

13 changes: 0 additions & 13 deletions docs/for server owners/monitoring.txt

This file was deleted.

1 change: 0 additions & 1 deletion docs/for server owners/recomended mods.txt

This file was deleted.

1 change: 0 additions & 1 deletion docs/for server owners/skinsdb.txt

This file was deleted.

33 changes: 0 additions & 33 deletions docs/quests.md

This file was deleted.

6 changes: 4 additions & 2 deletions mods/sbz_area_containers/COPYRIGHT.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,12 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.

`textures/room_container.png` Copyright (C) 2026 The4spaceconstants. CC-BY 4.0.

`textures/room_container_wall_small.png` Copyright (C) 2026 The4spaceconstants. CC-BY 4.0.

`textures/room_container_exit.png` Copyright (C) 2026 TheEt1234. CC-BY 4.0. Derivative of `textures/room_container_wall_small.png`.

`textures/room_container_power_io.png` Copyright (C) 2026 TheEt1234. CC-BY 4.0. Derivative of `textures/room_container_wall_small.png`.

`textures/room_container_wall_small.png` Copyright (C) 2026 The4spaceconstants. CC-BY 4.0.
`textures/room_container_wall.png` Copyright (C) 2026 TheEt1234. CC-BY 4.0. Derivative of `textures/room_container_wall_small.png`

`textures/room_container_wall.png` Copyright (C) 2026 TheEt1234. CC-BY 4.0. Derivative of `textures/room_container_wall_small.png`
`textures/room_container_entry_point.png` Copyright (C) 2026 TheEt1234. CC-BY 4.0. Derivative of `textures/room_container_wall_small.png`
60 changes: 52 additions & 8 deletions mods/sbz_area_containers/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ local function load()
local data_file, errmsg = io.open(data_file_path)
if not data_file then
-- both should be available, not one or the other.
core.log('error', 'Failed to open '..data_file_path..': '..errmsg)
core.log('error', 'Failed to open ' .. data_file_path .. ': ' .. errmsg)
return
end
local data = core.deserialize(data_file:read '*a')
Expand Down Expand Up @@ -200,6 +200,20 @@ function sbz_area_containers.teleport_to_room(player, id)
local room = room_areastore:get_area(id, true, false)
if not room then return end

local entrypoints_in_room = core.find_nodes_in_area(room.min, room.max, 'sbz_area_containers:entry_point')
if #entrypoints_in_room > 0 then
for _, pos in pairs(entrypoints_in_room) do
if
sbz_api.is_air(vector.add(pos, vector.new(0, 1, 0)))
and sbz_api.is_air(vector.add(pos, vector.new(0, 2, 0)))
and sbz_api.is_air(vector.add(pos, vector.new(0, 3, 0)))
then
player:set_pos(vector.add(pos, vector.new(0, 1, 0)))
return
end
end
end

local relative_spawn_pos, i, success = room_spawn_pos, 0, false
local room_min_pos = room.min

Expand All @@ -217,6 +231,16 @@ function sbz_area_containers.teleport_to_room(player, id)
player:set_pos(vector.add(room_min_pos, relative_spawn_pos))
end

function sbz_area_containers.exit_room(pos, player)
local ids = room_areastore:get_areas_for_pos(pos, true, false)
if not next(ids) then return end
local id = next(ids) -- if there are multiple ids the code has a problem, i won't concern myself with such things hovewer

local pos = core.get_position_from_hash(room_container_links[id])
if not pos then return end
player:set_pos(vector.add(pos, vector.new(0, 1, 0)))
end

----=============----
--- === NODES === ---
----=============----
Expand Down Expand Up @@ -244,13 +268,7 @@ core.register_node(
groups = { not_in_creative_inventory = 1 },

on_rightclick = function(pos, _, clicker)
local ids = room_areastore:get_areas_for_pos(pos, true, false)
if not next(ids) then return end
local id = next(ids) -- if there are multiple ids the code has a problem, i won't concern myself with such things hovewer

local pos = core.get_position_from_hash(room_container_links[id])
if not pos then return end
clicker:set_pos(vector.add(pos, vector.new(0, 1, 0)))
sbz_area_containers.exit_room(pos, clicker)
end,
}
)
Expand Down Expand Up @@ -278,6 +296,22 @@ core.register_node(
}
)

core.register_node(
'sbz_area_containers:entry_point',
unifieddyes.def {
description = 'Room Container Entry Point',
info_extra = 'This block decides where you spawn in a room.\nRight-click to exit a room.\nIf you have multiple of these in a room, one of them will be chosen.', -- block not node hehe, im a little rebel :3
paramtype = 'light',
light_source = 14,
groups = { matter = 1 },
paramtype2 = 'color',
tiles = { 'room_container_entry_point.png' },
on_rightclick = function(pos, _, clicker)
sbz_area_containers.exit_room(pos, clicker)
end,
}
)

core.register_node('sbz_area_containers:room_container', {
description = 'Room Container',
tiles = { 'room_container.png' },
Expand Down Expand Up @@ -330,6 +364,16 @@ core.register_craft {
},
}

core.register_craft {
output = 'sbz_area_containers:entry_point',
recipe = {
{ 'sbz_resources:black_sand', 'sbz_resources:matter_blob', 'sbz_resources:black_sand' },
{ 'sbz_resources:matter_blob', 'sbz_bio:warpshroom', 'sbz_resources:matter_blob' },
{ 'sbz_resources:black_sand', 'sbz_resources:matter_blob', 'sbz_resources:black_sand' },
},
}

mesecon.register_mvps_stopper('sbz_area_containers:wall')
mesecon.register_mvps_stopper('sbz_area_containers:power_input')
mesecon.register_mvps_stopper('sbz_area_containers:room_exit')
-- entry point does not need to be a stopper
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified mods/sbz_area_containers/textures/room_container_wall.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 11 additions & 4 deletions mods/sbz_base/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ sbz_api = {
accelerated_habitats = false,
debug = core.settings:get_bool('sbz_debug', false),
logic_gate_linking_range = 15,
welcome_messages = core.settings:get_bool('sbz_welcome_message', true),
}

if sbz_api.server_optimizations == 'auto' then
Expand Down Expand Up @@ -265,10 +266,16 @@ core.register_chatcommand('bgm_volume', {
core.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
-- send welcome messages
core.chat_send_player(player_name, sbz_api.get_simple_version_string())
core.chat_send_player(player_name, '‼ reminder: If you fall off, use /core to teleport back to the core.')
core.chat_send_player(player_name, '‼ reminder: If lose your Quest Book, use /qb to get it back.')
core.chat_send_player(player_name, '!! If you have any suggestions/bug reports to Skyblock Zero, see /community')

if sbz_api.welcome_messages then
core.chat_send_player(player_name, sbz_api.get_simple_version_string())
core.chat_send_player(player_name, '‼ reminder: If you fall off, use /core to teleport back to the core.')
core.chat_send_player(player_name, '‼ reminder: If lose your Quest Book, use /qb to get it back.')
core.chat_send_player(
player_name,
'!! If you have any suggestions/bug reports to Skyblock Zero, see /community'
)
end

-- play bgm
playRandomBGM(player)
Expand Down
41 changes: 14 additions & 27 deletions mods/sbz_pipeworks/filter_injector.lua
Original file line number Diff line number Diff line change
Expand Up @@ -60,29 +60,15 @@ minetest.register_node('pipeworks:automatic_filter_injector', {
set_filter_formspec(meta)
end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.get_meta(pos):set_string('owner', placer:get_player_name())

if placer and pointed_thing and pointed_thing.type == "node" then
-- Face away from the clicked block
local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
dir = vector.multiply(dir, -1)

-- Get base param2 from direction
local param2 = minetest.dir_to_facedir(dir, true)

-- Manual correction offset for facing direction
local CORRECTION_OFFSET = 1
param2 = (param2 + CORRECTION_OFFSET) % 24

local node = minetest.get_node(pos)
node.param2 = param2
minetest.swap_node(pos, node)
else
local node = minetest.get_node(pos)
node.param2 = node.param2 + 1
minetest.swap_node(pos, node)
core.get_meta(pos):set_string('owner', placer:get_player_name())

if pointed_thing and pointed_thing.above then
local face = vector.subtract(pointed_thing.above, pointed_thing.under)
face = -face
local node = core.get_node(pos)
node.param2 = core.dir_to_facedir(face, true) + 1
core.swap_node(pos, node)
end

pipeworks.after_place(pos)
end,
after_dig_node = pipeworks.after_dig,
Expand Down Expand Up @@ -410,10 +396,10 @@ minetest.register_node('pipeworks:automatic_filter_injector', {
})

do
local MB = "sbz_resources:matter_blob"
local RA = "sbz_resources:robotic_arm"
local RC = "sbz_resources:retaining_circuit"
local T1 = "pipeworks:tube_1"
local MB = 'sbz_resources:matter_blob'
local RA = 'sbz_resources:robotic_arm'
local RC = 'sbz_resources:retaining_circuit'
local T1 = 'pipeworks:tube_1'
minetest.register_craft {
output = 'pipeworks:automatic_filter_injector 4',
recipe = {
Expand All @@ -422,4 +408,5 @@ do
{ MB, MB, MB },
},
}
end
end

17 changes: 6 additions & 11 deletions mods/sbz_pipeworks/wielder.lua
Original file line number Diff line number Diff line change
Expand Up @@ -136,25 +136,20 @@ function pipeworks.register_wielder(def)
if def.eject_drops then inv:set_size('main', 32) end
set_wielder_formspec(def, meta)
end,
on_place = function(itemstack, placer, pointed_thing)
-- Use default placement
return minetest.item_place(itemstack, placer, pointed_thing)
end,

after_place_node = function(pos, placer, itemstack, pointed_thing)
-- Update the pipe network connections
pipeworks.scan_for_tube_objects(pos)
if not placer or not pointed_thing or pointed_thing.type ~= 'node' then return end
if not placer then return end

minetest.get_meta(pos):set_string('owner', placer:get_player_name())
core.get_meta(pos):set_string('owner', placer:get_player_name())
if not pointed_thing or pointed_thing.type ~= 'node' then return end

-- Rotate to face the clicked block
local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
local param2 = minetest.dir_to_facedir(dir, true)
local param2 = core.dir_to_facedir(dir, true)

local node = minetest.get_node(pos)
local node = core.get_node(pos)
node.param2 = param2
minetest.set_node(pos, node)
core.swap_node(pos, node)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local digger_inv = digger:get_inventory()
Expand Down
Loading