Compare commits

...

21 Commits

Author SHA1 Message Date
JoseDouglas26 4e9647fccc Changes on slab placement 2024-06-24 15:50:42 +02:00
JoseDouglas26 56f7093834 Changes on slab placement checks 2024-06-24 15:50:42 +02:00
the-real-herowl 026ea5940c Merge pull request 'release/0.87.2' (#4457) from release/0.87.2 into master
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4457
2024-06-24 03:43:09 +02:00
the-real-herowl be9fece0d3 Post-hotfix reset version 0.88.0-SNAPSHOT 2024-06-24 03:41:37 +02:00
the-real-herowl 27f8a008c3 Update release notes for hotfix v0.87.2 2024-06-24 03:40:15 +02:00
the-real-herowl 8bbceddbc2 Updated release credits and set version for hotfix v0.87.2 2024-06-24 03:28:19 +02:00
the-real-herowl 6e70c760d6 Fix some formspecs on mobile (#4456)
This should allow renaming items on the anvil when using mobile. This also may improve mobile craftguide experience.

Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4456
Co-authored-by: the-real-herowl <wiktor_t-i@proton.me>
Co-committed-by: the-real-herowl <wiktor_t-i@proton.me>
2024-06-24 03:26:02 +02:00
the-real-herowl 53802b270d Merge pull request 'Prevent mob conversion code from crashing' (#4421) from teknomunk/MineClone2:fix-conversion-crash into master
Reviewed-on: https://git.minetest.land/VoxeLibre/VoxeLibre/pulls/4421
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-06-24 03:07:19 +02:00
teknomunk 3928e12634 Fix two more crashes, stray space 2024-06-24 03:06:26 +02:00
teknomunk 304550d90c Fix parameter name 2024-06-24 03:06:26 +02:00
teknomunk 0a2336ad82 Handle conversion of mobs that were incorrectly converted 2024-06-24 03:06:26 +02:00
teknomunk 75a767a0ab Mob spawner conversion 2024-06-24 03:06:26 +02:00
teknomunk 7e0afd7e21 Remove debug logging 2024-06-24 03:06:26 +02:00
teknomunk 15fa925aae More fields to strip 2024-06-24 03:06:26 +02:00
teknomunk 4935f5fdda Add debug logging 2024-06-24 03:06:26 +02:00
teknomunk 41032ec999 Use correct variable name 2024-06-24 03:06:26 +02:00
teknomunk d64ee18f75 Strip some fields from the mob's staticdata on conversion 2024-06-24 03:06:26 +02:00
teknomunk 1942384fe5 Move object remove after position check 2024-06-24 03:06:26 +02:00
teknomunk 9b50dd6565 Update to use new_object instead of obj 2024-06-24 03:06:26 +02:00
teknomunk a88951ac6a More safety checks 2024-06-24 03:06:26 +02:00
teknomunk bc343769ee Add guard to prevent crash when converting old mobs and the minetest fails to create the new entity 2024-06-24 03:06:26 +02:00
9 changed files with 108 additions and 38 deletions

View File

@ -20,10 +20,8 @@
* epCode
* chmodsayshello
* MrRar
* FossFanatic
* SmokeyDope
* Faerraven / Michieal
* Codiac
* rudzik8
* teknomunk
@ -36,6 +34,8 @@
* NO11
* SumianVoice
* PrairieWind
* FossFanatic
* Codiac
## Contributors
* RandomLegoBrick
@ -140,6 +140,7 @@
* SOS-Games
* Bram
* qoheniac
* WillConker
## Music
* Jordach for the jukebox music compilation from Big Freaking Dig

View File

@ -150,6 +150,11 @@ function mob_class:mob_activate(staticdata, def, dtime)
local tmp = minetest.deserialize(staticdata)
if tmp then
-- Patch incorrectly converted mobs
if tmp.base_mesh ~= minetest.registered_entities[self.name].mesh then
mcl_mobs.strip_staticdata(tmp)
end
for _,stat in pairs(tmp) do
self[_] = stat
end

View File

@ -342,13 +342,33 @@ function mcl_mobs.register_mob(name, def)
minetest.register_entity(name, setmetatable(final_def,mcl_mobs.mob_class_meta))
end -- END mcl_mobs.register_mob function
local STRIP_FIELDS = { "mesh", "base_size", "textures", "base_mesh", "base_texture" }
function mcl_mobs.strip_staticdata(unpacked_staticdata)
-- Strip select fields from the staticdata to prevent conversion issues
for i = 1,#STRIP_FIELDS do
unpacked_staticdata[STRIP_FIELDS[i]] = nil
end
end
function mcl_mobs.register_conversion(old_name, new_name)
minetest.register_entity(old_name, {
on_activate = function(self, staticdata, dtime)
local obj = minetest.add_entity(self.object:get_pos(), new_name, staticdata)
local hook = (obj:get_luaentity() or {})._on_after_convert
if hook then hook(obj) end
self.object:remove()
local unpacked_staticdata = minetest.deserialize(staticdata)
mcl_mobs.strip_staticdata(unpacked_staticdata)
staticdata = minetest.serialize(unpacked_staticdata)
local old_object = self.object
if not old_object then return end
local pos = old_object:get_pos()
if not pos then return end
old_object:remove()
local new_object = minetest.add_entity(pos, new_name, staticdata)
if not new_object then return end
local hook = (new_object:get_luaentity() or {})._on_after_convert
if hook then hook(new_object) end
end,
_convert_to = new_name,
})
@ -572,7 +592,12 @@ function mcl_mobs.register_egg(mob, desc, background_color, overlay_color, addeg
--minetest.log("min light: " .. mob_light_lvl[1])
--minetest.log("max light: " .. mob_light_lvl[2])
mcl_mobspawners.setup_spawner(pointed_thing.under, itemstack:get_name(), mob_light_lvl[1], mob_light_lvl[2])
-- Handle egg conversion
local mob_name = itemstack:get_name()
local convert_to = (minetest.registered_entities[mob_name] or {})._convert_to
if convert_to then mob_name = convert_to end
mcl_mobspawners.setup_spawner(pointed_thing.under, mob_name, mob_light_lvl[1], mob_light_lvl[2])
if not minetest.is_creative_enabled(name) then
itemstack:take_item()
end

View File

@ -678,6 +678,7 @@ local function make_formspec(name)
image_button[2.4,0.12;0.8,0.8;craftguide_search_icon.png;search;]
image_button[3.05,0.12;0.8,0.8;craftguide_clear_icon.png;clear;]
field_close_on_enter[filter;false]
field_enter_after_edit[filter;true]
]]
fs[#fs + 1] = fmt([[ tooltip[search;%s]

View File

@ -22,10 +22,8 @@ return {
"epCode",
"chmodsayshello",
"MrRar",
"FossFanatic ",
"SmokeyDope",
"Faerraven / Michieal",
"Codiac",
"rudzik8",
"teknomunk",
}},
@ -38,6 +36,8 @@ return {
"NO11",
"SumianVoice",
"PrairieWind",
"FossFanatic",
"Codiac",
}},
{S("Contributors"), 0x52FF00, {
"RandomLegoBrick",
@ -142,6 +142,7 @@ return {
"SOS-Games",
"Bram",
"qoheniac",
"WillConker",
}},
{S("Music"), 0xA60014, {
"Jordach for the jukebox music compilation from Big Freaking Dig",

View File

@ -28,6 +28,7 @@ local function get_anvil_formspec(set_name)
"field[4.125,0.75;7.25,1;name;;" .. F(set_name) .. "]",
"field_close_on_enter[name;false]",
"field_enter_after_edit[name;true]",
"set_focus[name;true]",
mcl_formspec.get_itemslot_bg_v4(1.625, 2.6, 1, 1),

View File

@ -83,6 +83,13 @@ local function respawn_doll(pos)
local mob = meta:get_string("Mob")
local doll
if mob and mob ~= "" then
-- Handle conversion of mob spawners
local convert_to = (minetest.registered_entities[mob] or {})._convert_to
if convert_to then
mob = convert_to
meta:set_string("Mob", mob)
end
doll = find_doll(pos)
if not doll then
doll = spawn_doll(pos)
@ -128,7 +135,6 @@ function mcl_mobspawners.setup_spawner(pos, Mob, MinLight, MaxLight, MaxMobsInAr
end
set_doll_properties(doll, Mob)
-- Start spawning very soon
local t = minetest.get_node_timer(pos)
t:start(2)
@ -165,7 +171,6 @@ local function spawn_mobs(pos, elapsed)
local count = 0
local ent
local timer = minetest.get_node_timer(pos)
-- spawn mob if player detected and in range
@ -367,7 +372,6 @@ doll_def.on_activate = function(self, staticdata, dtime_s)
self.object:set_velocity({x=0, y=0, z=0})
self.object:set_acceleration({x=0, y=0, z=0})
self.object:set_armor_groups({immortal=1})
end
doll_def.on_step = function(self, dtime)

View File

@ -237,30 +237,43 @@ function mcl_stairs.register_slab(subname, recipeitem, groups, images, descripti
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
local under = minetest.get_node(pointed_thing.under)
if not placer then return end
local above = pointed_thing.above
local under = pointed_thing.under
local anode = minetest.get_node(above)
local unode = minetest.get_node(under)
local adefs = minetest.registered_nodes[anode.name]
local udefs = minetest.registered_nodes[unode.name]
local wield_item = itemstack:get_name()
local creative_enabled = minetest.is_creative_enabled(placer:get_player_name())
local player_name = placer:get_player_name()
local creative_enabled = minetest.is_creative_enabled(player_name)
-- place slab using under node orientation
local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
local dir = vector.subtract(above, under)
local p2 = unode.param2
local p2 = under.param2
if minetest.is_protected(under, player_name) and not
minetest.check_player_privs(placer, "protection_bypass") then
minetest.record_protection_violation(under, player_name)
return
end
-- combine two slabs if possible
-- Requirements: Same slab material, must be placed on top of lower slab, or on bottom of upper slab
if (wield_item == under.name or (minetest.registered_nodes[under.name] and wield_item == minetest.registered_nodes[under.name]._mcl_other_slab_half)) and
not ((dir.y >= 0 and minetest.get_item_group(under.name, "slab_top") == 1) or
(dir.y <= 0 and minetest.get_item_group(under.name, "slab_top") == 0)) then
if (wield_item == unode.name or (udefs and wield_item == udefs._mcl_other_slab_half)) and
not ((dir.y >= 0 and minetest.get_item_group(unode.name, "slab_top") == 1) or
(dir.y <= 0 and minetest.get_item_group(unode.name, "slab_top") == 0)) then
local player_name = placer:get_player_name()
if minetest.is_protected(pointed_thing.under, player_name) and not
minetest.check_player_privs(placer, "protection_bypass") then
minetest.record_protection_violation(pointed_thing.under,
player_name)
return
minetest.set_node(under, {name = double_slab, param2 = p2})
if not creative_enabled then
itemstack:take_item()
end
local newnode = double_slab
minetest.set_node(pointed_thing.under, {name = newnode, param2 = p2})
return itemstack
elseif (wield_item == anode.name or (adefs and wield_item == adefs._mcl_other_slab_half)) then
minetest.set_node(above, {name = double_slab, param2 = p2})
if not creative_enabled then
itemstack:take_item()
end

View File

@ -16,6 +16,7 @@
* SOS-Games
* Bram
* qoheniac
* WillConker
### Game rename
Based on months of collecting suggestions, analysis and vetting of possible names, community voting and discussion between developers, the rename of the game has reached its conclusion! The project has been renamed to **VoxeLibre**.
@ -165,16 +166,34 @@ One of our tools, the Python script allowing conversion of Minecraft resource pa
* XP orbs related crash by teknomunk
* Ghast fireball related crash by Araca
* Crash related to server restart while a player is dead by teknomunk
* Crashes related to the new effects API - by teknomunk and Herowl
* Crashes related to the new effects API by teknomunk and Herowl
## 0.87.1 hotfix
* Fixed crash when shooting potions from a dispenser - by teknomunk
* Fixed crash related to custom mobspawners - by teknomunk
* Fixed beacon crash - by teknomunk
* Fixed eye of ender crash - by Herowl
* Fixed Stalker texture generation - by teknomunk
* Correctly refresh enchanted tool capabilities - by teknomunk
* Fixed creative inventory misbehaving - by Herowl
* Fixed variable definition in mob spawning code - by teknomunk
* Updated documentation - by Herowl and teknomunk
* Increased stack size for snowballs and eggs - by JoseDouglas26
* Fixed crash when shooting potions from a dispenser by teknomunk
* Fixed crash related to custom mobspawners by teknomunk
* Fixed beacon crash by teknomunk
* Fixed eye of ender crash by Herowl
* Fixed Stalker texture generation by teknomunk
* Correctly refresh enchanted tool capabilities by teknomunk
* Fixed creative inventory misbehaving by Herowl
* Fixed variable definition in mob spawning code by teknomunk
* Updated documentation by Herowl and teknomunk
* Increased stack size for snowballs and eggs by JoseDouglas26
## 0.87.2 hotfix
* Zombie texture improvements by SmokeyDope
* Wrong name of diorite stairs fixed by qoheniac
* Fixed flint and steel wearing down when not placing fire by JoseDouglas26 and WillConker
* Fixed brewing stands' rotation by JoseDouglas26 and WillConker
* Fixed beacon formspec by teknomunk
* Made all hollow logs breakable properly by teknomunk
* Instructions on how to eat added to the help menu by teknomunk
* Potion conversion fixed by Herowl
* Fixed some node names by seventeenthShulker
* Fixed anvil and craftguide formspecs on mobile by Herowl
* Fixed effect loading by Herowl
* Fixed crash while fighting wither by teknomunk
* Fixed crash when bonemealing sweet berry bushes by teknomunk
* Fixed some mob conversion crashes by teknomunk
* Fixed crash related to the frost walker enchantment by WillConker
* Fixed some mob-related crashes by Herowl