forked from VoxeLibre/VoxeLibre
Compare commits
38 Commits
ddb0117110
...
39378c96b0
Author | SHA1 | Date |
---|---|---|
teknomunk | 39378c96b0 | |
teknomunk | 5175245cbd | |
teknomunk | 6af8026a70 | |
teknomunk | b7875f75a8 | |
teknomunk | 161e4322a9 | |
the-real-herowl | 026ea5940c | |
the-real-herowl | be9fece0d3 | |
the-real-herowl | 27f8a008c3 | |
the-real-herowl | 8bbceddbc2 | |
the-real-herowl | 6e70c760d6 | |
the-real-herowl | 53802b270d | |
teknomunk | 3928e12634 | |
teknomunk | 304550d90c | |
teknomunk | 0a2336ad82 | |
teknomunk | 75a767a0ab | |
teknomunk | 7e0afd7e21 | |
teknomunk | 15fa925aae | |
teknomunk | 4935f5fdda | |
teknomunk | 41032ec999 | |
teknomunk | d64ee18f75 | |
teknomunk | 1942384fe5 | |
teknomunk | 9b50dd6565 | |
teknomunk | a88951ac6a | |
teknomunk | bc343769ee | |
seventeenthShulker | 8aa65f85f2 | |
qoheniac | e27e70a91b | |
JoseDouglas26 | 744b47088b | |
Mikita Wiśniewski | 6654c86fb2 | |
the-real-herowl | 72435933e4 | |
the-real-herowl | 35e14dd415 | |
the-real-herowl | 173f8a0bca | |
teknomunk | 1f32b47208 | |
SmokeyDope | bf67fd52e1 | |
WillConker | fd4e1484af | |
teknomunk | 1b0deae026 | |
teknomunk | 313c1f558b | |
teknomunk | 5cafa97dd1 | |
teknomunk | ddab68b87c |
|
@ -13,16 +13,17 @@ labels:
|
|||
Thanks for taking the time to fill out this bug report!
|
||||
|
||||
Please follow our contributing guidelines first:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CONTRIBUTING.md#rules-about-both-bugs-and-feature-requests
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/src/branch/master/CONTRIBUTING.md#rules-about-both-bugs-and-feature-requests
|
||||
|
||||
By submitting this issue, you agree to follow our Code of Conduct:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CODE_OF_CONDUCT.md
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/src/branch/master/CODE_OF_CONDUCT.md
|
||||
-->
|
||||
|
||||
<!--
|
||||
What version of VoxeLibre are you using? We do not provide support for outdated versions of VoxeLibre.
|
||||
"/ver" command will output the version you're running.
|
||||
Current latest version is listed here, at the top:
|
||||
https://git.minetest.land/MineClone2/MineClone2/tags
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/tags
|
||||
-->
|
||||
VoxeLibre version:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
|
||||
name: "Feature request"
|
||||
about: "File a feature request not in Minecraft"
|
||||
about: "File a feature request"
|
||||
labels:
|
||||
|
||||
- "non-Minecraft feature"
|
||||
|
@ -10,17 +10,17 @@ labels:
|
|||
---
|
||||
|
||||
<!--
|
||||
Got a new non-Minecraft feature request? Explain to us why we should consider your idea.
|
||||
Got a new feature request? Explain to us why we should consider your idea.
|
||||
|
||||
Please follow our contributing guidelines first:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CONTRIBUTING.md#rules-about-both-bugs-and-feature-requests
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/src/branch/master/CONTRIBUTING.md#rules-about-both-bugs-and-feature-requests
|
||||
|
||||
By submitting this issue, you agree to follow our Code of Conduct:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CODE_OF_CONDUCT.md
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/src/branch/master/CODE_OF_CONDUCT.md
|
||||
-->
|
||||
|
||||
### Feature
|
||||
Tell us about your requested feature not in Minecraft!
|
||||
Tell us about your requested feature!
|
||||
|
||||
### Why
|
||||
Tell us why should we implement it!
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
|
||||
name: "Missing Feature request"
|
||||
about: "File a missing feature request in Minecraft but not in MineClone2"
|
||||
labels:
|
||||
|
||||
- "missing feature"
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for taking the time to fill out this missing feature request!
|
||||
|
||||
Please follow our contributing guidelines first:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CONTRIBUTING.md#rules-about-both-bugs-and-feature-requests
|
||||
|
||||
By submitting this issue, you agree to follow our Code of Conduct:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CODE_OF_CONDUCT.md
|
||||
-->
|
||||
|
||||
### Current feature in Minecraft
|
||||
Tell us about the feature currently in Minecraft! What is it like on Minecraft?
|
||||
|
||||
### Current feature in VoxeLibre
|
||||
Tell us about the feature currently in VoxeLibre! What is different?
|
|
@ -8,13 +8,13 @@ labels:
|
|||
|
||||
<!--
|
||||
Please follow our contributing guidelines first:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CONTRIBUTING.md#how-you-can-help-as-a-programmer
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/src/branch/master/CONTRIBUTING.md#how-you-can-help-as-a-programmer
|
||||
|
||||
By submitting this pull request, you agree to follow our Code of Conduct:
|
||||
https://git.minetest.land/MineClone2/MineClone2/src/branch/master/CODE_OF_CONDUCT.md
|
||||
https://git.minetest.land/VoxeLibre/VoxeLibre/src/branch/master/CODE_OF_CONDUCT.md
|
||||
-->
|
||||
|
||||
Tell us about your pull request! Reference related issues, if necessary
|
||||
Tell us about your pull request! Reference related issues, if necessary.
|
||||
|
||||
### Testing
|
||||
Tell us how to test your changes!
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -802,34 +802,37 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
|
|||
end
|
||||
|
||||
-- alert others to the attack
|
||||
local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range)
|
||||
local obj = nil
|
||||
local alert_pos = hitter:get_pos()
|
||||
if alert_pos then
|
||||
local objs = minetest.get_objects_inside_radius(alert_pos, self.view_range)
|
||||
local obj = nil
|
||||
|
||||
for n = 1, #objs do
|
||||
for n = 1, #objs do
|
||||
|
||||
obj = objs[n]:get_luaentity()
|
||||
obj = objs[n]:get_luaentity()
|
||||
|
||||
if obj then
|
||||
-- only alert members of same mob or friends
|
||||
if obj.group_attack
|
||||
and obj.state ~= "attack"
|
||||
and obj.owner ~= name then
|
||||
if obj.name == self.name then
|
||||
obj:do_attack(hitter)
|
||||
elseif type(obj.group_attack) == "table" then
|
||||
for i=1, #obj.group_attack do
|
||||
if obj.group_attack[i] == self.name then
|
||||
obj._aggro = true
|
||||
obj:do_attack(hitter)
|
||||
break
|
||||
if obj then
|
||||
-- only alert members of same mob or friends
|
||||
if obj.group_attack
|
||||
and obj.state ~= "attack"
|
||||
and obj.owner ~= name then
|
||||
if obj.name == self.name then
|
||||
obj:do_attack(hitter)
|
||||
elseif type(obj.group_attack) == "table" then
|
||||
for i=1, #obj.group_attack do
|
||||
if obj.group_attack[i] == self.name then
|
||||
obj._aggro = true
|
||||
obj:do_attack(hitter)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- have owned mobs attack player threat
|
||||
if obj.owner == name and obj.owner_loyal then
|
||||
obj:do_attack(self.object)
|
||||
-- have owned mobs attack player threat
|
||||
if obj.owner == name and obj.owner_loyal then
|
||||
obj:do_attack(self.object)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -126,6 +126,9 @@ S("• I: Show/hide inventory menu").."\n\n"..
|
|||
S("Inventory interaction:").."\n"..
|
||||
S("See the entry “Basics > Inventory”.").."\n\n"..
|
||||
|
||||
S("Hunger/Eating:").."\n"..
|
||||
S("• While holding food, hold the right mouse button (PC) or double-tap and hold the second tap (Android) to eat").."\n\n"..
|
||||
|
||||
S("Camera:").."\n"..
|
||||
S("• Z: Zoom").."\n"..
|
||||
S("• F7: Toggle camera mode").."\n\n"..
|
||||
|
|
|
@ -78,6 +78,8 @@ World interaction:=
|
|||
• I: Show/hide inventory menu=
|
||||
Inventory interaction:=
|
||||
See the entry “Basics > Inventory”.=
|
||||
Hunger/Eating:=
|
||||
• While holding food, hold the right mouse button (PC) or double-tap and hold the second tap (Android) to eat=
|
||||
Camera:=
|
||||
• Z: Zoom=
|
||||
• F7: Toggle camera mode=
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -265,7 +265,7 @@ minetest.register_node("mcl_beacons:beacon", {
|
|||
remove_beacon_beam(pos)
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if fields.swiftness or fields.regeneration or fields.leaping or fields.strenght
|
||||
if fields.swiftness or fields.regeneration or fields.leaping or fields.strength
|
||||
or fields.haste or fields.resistance or fields.absorption or fields.slow_falling then
|
||||
local sender_name = sender:get_player_name()
|
||||
local power_level = beacon_blockcheck(pos)
|
||||
|
@ -329,7 +329,7 @@ minetest.register_node("mcl_beacons:beacon", {
|
|||
end
|
||||
minetest.get_meta(pos):set_string("effect","resistance")
|
||||
successful = true
|
||||
elseif fields.strenght and power_level >= 3 then
|
||||
elseif fields.strength and power_level >= 3 then
|
||||
if power_level == 4 then
|
||||
minetest.get_meta(pos):set_int("effect_level",2)
|
||||
else
|
||||
|
|
|
@ -196,7 +196,7 @@ end
|
|||
mcl_stairs.register_stair_and_slab("blackstone", "mcl_blackstone:blackstone",
|
||||
{cracky=3, pickaxey=1, material_stone=1},
|
||||
{"mcl_blackstone_top.png", "mcl_blackstone_top.png", "mcl_blackstone_side.png"},
|
||||
S("Blackstone Stairs"),
|
||||
S("Blackstone Stair"),
|
||||
S("Blackstone Slab"),
|
||||
mcl_sounds.node_sound_stone_defaults(), 6, 2,
|
||||
S("Double Blackstone Slab"), nil)
|
||||
|
@ -204,7 +204,7 @@ mcl_stairs.register_stair_and_slab("blackstone", "mcl_blackstone:blackstone",
|
|||
mcl_stairs.register_stair_and_slab("blackstone_polished", "mcl_blackstone:blackstone_polished",
|
||||
{cracky=3, pickaxey=1, material_stone=1},
|
||||
{"mcl_blackstone_polished.png"},
|
||||
S("Polished Blackstone Stairs"),
|
||||
S("Polished Blackstone Stair"),
|
||||
S("Polished Blackstone Slab"),
|
||||
mcl_sounds.node_sound_stone_defaults(), 6, 2,
|
||||
S("Double Polished Blackstone Slab"), nil)
|
||||
|
@ -212,7 +212,7 @@ mcl_stairs.register_stair_and_slab("blackstone_polished", "mcl_blackstone:blacks
|
|||
mcl_stairs.register_stair_and_slab("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished",
|
||||
{cracky=3, pickaxey=1, material_stone=1},
|
||||
{"mcl_blackstone_chiseled_polished.png"},
|
||||
S("Chiseled Polished Blackstone Stairs"),
|
||||
S("Chiseled Polished Blackstone Stair"),
|
||||
S("Chiseled Polished Blackstone Slab"),
|
||||
mcl_sounds.node_sound_stone_defaults(), 6, 2,
|
||||
S("Double Chiseled Polished Blackstone Slab"), nil)
|
||||
|
@ -220,10 +220,10 @@ mcl_stairs.register_stair_and_slab("blackstone_chiseled_polished", "mcl_blacksto
|
|||
mcl_stairs.register_stair_and_slab("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished",
|
||||
{cracky=3, pickaxey=1, material_stone=1},
|
||||
{"mcl_blackstone_polished_bricks.png"},
|
||||
S("Polished Blackstone Brick Stair Stairs"),
|
||||
S("Polished Blackstone Brick Stair Slab"),
|
||||
S("Polished Blackstone Brick Stair"),
|
||||
S("Polished Blackstone Brick Slab"),
|
||||
mcl_sounds.node_sound_stone_defaults(), 6, 2,
|
||||
S("Double Polished Blackstone Brick Stair Slab"), nil)
|
||||
S("Double Polished Blackstone Brick Slab"), nil)
|
||||
|
||||
--Wall
|
||||
mcl_walls.register_wall(
|
||||
|
|
|
@ -9,10 +9,10 @@ Blackstone Slab=Schwarzstein Stufe
|
|||
Polished Blackstone Slab=Polierte Schwarzstein Stufe
|
||||
Chiseled Polished Blackstone Slab=Gemeißelte Polierte Schwarzstein Stufe
|
||||
Polished Blackstone Brick Slab=Polierte Schwarzsteinziegel Stufe
|
||||
Blackstone Stairs=Schwarzstein Treppe
|
||||
Polished Blackstone Stairs=Polierte Schwarzstein Treppe
|
||||
Chiseled Polished Blackstone Stairs=Gemeißelte Polierte Schwarzstein Treppe
|
||||
Polished Blackstone Brick Stairs=Polierte Schwarzsteinziegel Treppe
|
||||
Blackstone Stair=Schwarzstein Treppe
|
||||
Polished Blackstone Stair=Polierte Schwarzstein Treppe
|
||||
Chiseled Polished Blackstone Stair=Gemeißelte Polierte Schwarzstein Treppe
|
||||
Polished Blackstone Brick Stair=Polierte Schwarzsteinziegel Treppe
|
||||
Quartz Bricks=Quartz Ziegel
|
||||
Soul Torch=Seelenfakel
|
||||
Soul Lantern=Seelenlaterne
|
||||
|
|
|
@ -205,7 +205,8 @@ walkover.register_global(function(pos, _, player)
|
|||
if frost_walker <= 0 then
|
||||
return
|
||||
end
|
||||
local radius = frost_walker + 2
|
||||
-- 1011 = sqrt(4096000)/2; 4096000 is the max number of nodes for find_nodes_in_area_under_air
|
||||
local radius = math.min(frost_walker + 2, 1011)
|
||||
local minp = {x = pos.x - radius, y = pos.y, z = pos.z - radius}
|
||||
local maxp = {x = pos.x + radius, y = pos.y, z = pos.z + radius}
|
||||
local positions = minetest.find_nodes_in_area_under_air(minp, maxp, "mcl_core:water_source")
|
||||
|
|
|
@ -53,7 +53,7 @@ for i=0, 3 do
|
|||
end
|
||||
if 3 ~= i and mcl_dye and
|
||||
clicker:get_wielded_item():get_name() == "mcl_bone_meal:bone_meal" then
|
||||
mcl_dye.apply_bone_meal({under=pos},clicker)
|
||||
mcl_dye.apply_bone_meal({under=pos, above=vector.offset(pos,0,1,0)},clicker)
|
||||
if not minetest.is_creative_enabled(pn) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
|
|
@ -27,18 +27,19 @@ minetest.register_craftitem("mcl_fire:fire_charge", {
|
|||
end
|
||||
|
||||
-- Ignite/light fire
|
||||
local used = nil
|
||||
local node = get_node(pointed_thing.under)
|
||||
if pointed_thing.type == "node" then
|
||||
local nodedef = minetest.registered_nodes[node.name]
|
||||
if nodedef and nodedef._on_ignite then
|
||||
local overwrite = nodedef._on_ignite(user, pointed_thing)
|
||||
if not overwrite then
|
||||
mcl_fire.set_fire(pointed_thing, user, false)
|
||||
used = mcl_fire.set_fire(pointed_thing, user, false)
|
||||
end
|
||||
else
|
||||
mcl_fire.set_fire(pointed_thing, user, false)
|
||||
used = mcl_fire.set_fire(pointed_thing, user, false)
|
||||
end
|
||||
if not minetest.is_creative_enabled(user:get_player_name()) then
|
||||
if not minetest.is_creative_enabled(user:get_player_name()) and used then
|
||||
itemstack:take_item()
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,23 +31,22 @@ minetest.register_tool("mcl_fire:flint_and_steel", {
|
|||
{pos = pointed_thing.above, gain = 0.5, max_hear_distance = 8},
|
||||
true
|
||||
)
|
||||
local used = false
|
||||
local used = nil
|
||||
if pointed_thing.type == "node" then
|
||||
local nodedef = minetest.registered_nodes[get_node(pointed_thing.under).name]
|
||||
if nodedef and nodedef._on_ignite then
|
||||
local overwrite = nodedef._on_ignite(user, pointed_thing)
|
||||
if not overwrite then
|
||||
mcl_fire.set_fire(pointed_thing, user, false)
|
||||
used = mcl_fire.set_fire(pointed_thing, user, false)
|
||||
end
|
||||
else
|
||||
mcl_fire.set_fire(pointed_thing, user, false)
|
||||
used = mcl_fire.set_fire(pointed_thing, user, false)
|
||||
end
|
||||
used = true
|
||||
end
|
||||
if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then
|
||||
minetest.sound_play(idef.sound.breaks, {pos=user:get_pos(), gain=0.5}, true)
|
||||
end
|
||||
if (not minetest.is_creative_enabled(user:get_player_name())) and used == true then
|
||||
if (not minetest.is_creative_enabled(user:get_player_name())) and used then
|
||||
itemstack:add_wear(65535/65) -- 65 uses
|
||||
end
|
||||
return itemstack
|
||||
|
|
|
@ -469,7 +469,7 @@ function mcl_fire.set_fire(pointed_thing, player, allow_on_fire)
|
|||
return
|
||||
end
|
||||
|
||||
add_node(pointed_thing.above, {name="mcl_fire:fire"})
|
||||
return add_node(pointed_thing.above, {name="mcl_fire:fire"})
|
||||
end
|
||||
|
||||
minetest.register_lbm({
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -456,6 +456,10 @@ mcl_potions.register_effect({
|
|||
object:get_meta():set_int("night_vision", 1)
|
||||
mcl_weather.skycolor.update_sky_color({object})
|
||||
end,
|
||||
on_load = function(object, factor)
|
||||
object:get_meta():set_int("night_vision", 1)
|
||||
mcl_weather.skycolor.update_sky_color({object})
|
||||
end,
|
||||
on_step = function(dtime, object, factor, duration)
|
||||
mcl_weather.skycolor.update_sky_color({object})
|
||||
end,
|
||||
|
@ -1352,7 +1356,7 @@ minetest.register_globalstep(function(dtime)
|
|||
potions_set_hud(object)
|
||||
else
|
||||
local ent = object:get_luaentity()
|
||||
if ent then
|
||||
if ent and ent._mcl_potions then
|
||||
ent._mcl_potions["_EF_"..name] = nil
|
||||
end
|
||||
end
|
||||
|
@ -1367,7 +1371,7 @@ minetest.register_globalstep(function(dtime)
|
|||
end
|
||||
else
|
||||
local ent = object:get_luaentity()
|
||||
if ent then
|
||||
if ent and ent._mcl_potions then
|
||||
ent._mcl_potions["_EF_"..name] = EF[name][object]
|
||||
end
|
||||
end
|
||||
|
@ -1525,6 +1529,11 @@ function mcl_potions._load_player_effects(player)
|
|||
local loaded = minetest.deserialize(meta:get_string("mcl_potions:_EF_"..name))
|
||||
if loaded then
|
||||
EF[name][player] = loaded
|
||||
end
|
||||
if EF[name][player] then -- this is needed because of legacy effects loaded separately
|
||||
if effect.uses_factor and type(EF[name][player].factor) ~= "number" then
|
||||
EF[name][player].factor = effect.level_to_factor(1)
|
||||
end
|
||||
if effect.on_load then
|
||||
effect.on_load(player, EF[name][player].factor)
|
||||
end
|
||||
|
@ -1542,6 +1551,9 @@ function mcl_potions._load_entity_effects(entity)
|
|||
local loaded = entity._mcl_potions["_EF_"..name]
|
||||
if loaded then
|
||||
EF[name][object] = loaded
|
||||
if effect.uses_factor and not loaded.factor then
|
||||
EF[name][object].factor = effect.level_to_factor(1)
|
||||
end
|
||||
if effect.on_load then
|
||||
effect.on_load(object, EF[name][object].factor)
|
||||
end
|
||||
|
@ -1780,9 +1792,14 @@ end
|
|||
local function target_valid(object, name)
|
||||
if not object or object:get_hp() <= 0 then return false end
|
||||
|
||||
-- Don't apply effects to anything other than players and entities that have mcl_potions support
|
||||
-- but are not bosses
|
||||
local entity = object:get_luaentity()
|
||||
if entity and entity.is_boss then return false end
|
||||
if not object:is_player() and (not entity or entity.is_boss or not entity._mcl_potions) then
|
||||
return false
|
||||
end
|
||||
|
||||
-- Check resistances
|
||||
for i=1, #registered_res_predicates do
|
||||
if registered_res_predicates[i](object, name) then return false end
|
||||
end
|
||||
|
|
|
@ -841,20 +841,22 @@ local function replace_legacy_potion(itemstack)
|
|||
end
|
||||
local compat = "mcl_potions:compat_potion"
|
||||
local compat_arrow = "mcl_potions:compat_arrow"
|
||||
minetest.register_craftitem(compat, {
|
||||
description = S("Unknown Potion"),
|
||||
_tt_help = S("Right-click to identify"),
|
||||
local compat_def = {
|
||||
description = S("Unknown Potion") .. "\n" .. minetest.colorize("#ff0", S("Right-click to identify")),
|
||||
image = "mcl_potions_potion_overlay.png^[colorize:#00F:127^mcl_potions_potion_bottle.png^vl_unknown.png",
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
on_secondary_use = replace_legacy_potion,
|
||||
on_place = replace_legacy_potion,
|
||||
})
|
||||
minetest.register_craftitem(compat_arrow, {
|
||||
description = S("Unknown Tipped Arrow"),
|
||||
_tt_help = S("Right-click to identify"),
|
||||
}
|
||||
local compat_arrow_def = {
|
||||
description = S("Unknown Tipped Arrow") .. "\n" .. minetest.colorize("#ff0", S("Right-click to identify")),
|
||||
image = "mcl_bows_arrow_inv.png^(mcl_potions_arrow_inv.png^[colorize:#FFF:100)^vl_unknown.png",
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
on_secondary_use = replace_legacy_potion,
|
||||
on_place = replace_legacy_potion,
|
||||
})
|
||||
}
|
||||
minetest.register_craftitem(compat, compat_def)
|
||||
minetest.register_craftitem(compat_arrow, compat_arrow_def)
|
||||
|
||||
local old_potions_plus = {
|
||||
"fire_resistance", "water_breathing", "invisibility", "regeneration", "poison",
|
||||
|
@ -866,14 +868,14 @@ local old_potions_2 = {
|
|||
}
|
||||
|
||||
for _, name in pairs(old_potions_2) do
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_2", compat)
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_2_splash", compat)
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_2_lingering", compat)
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_2_arrow", compat_arrow)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_2", compat_def)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_2_splash", compat_def)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_2_lingering", compat_def)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_2_arrow", compat_arrow_def)
|
||||
end
|
||||
for _, name in pairs(old_potions_plus) do
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_plus", compat)
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_plus_splash", compat)
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_plus_lingering", compat)
|
||||
minetest.register_alias("mcl_potions:" .. name .. "_plus_arrow", compat_arrow)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_plus", compat_def)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_plus_splash", compat_def)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_plus_lingering", compat_def)
|
||||
minetest.register_craftitem("mcl_potions:" .. name .. "_plus_arrow", compat_arrow_def)
|
||||
end
|
||||
|
|
|
@ -77,7 +77,7 @@ mcl_stairs.register_slab("granite", "mcl_core:granite",
|
|||
mcl_stairs.register_stair("diorite", "mcl_core:diorite",
|
||||
{pickaxey=1, material_stone=1},
|
||||
{"mcl_core_diorite.png"},
|
||||
S("Granite Stairs"),
|
||||
S("Diorite Stairs"),
|
||||
mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8)
|
||||
mcl_stairs.register_slab("diorite", "mcl_core:diorite",
|
||||
{pickaxey=1, material_stone=1},
|
||||
|
|
|
@ -43,7 +43,7 @@ function vl_hollow_logs.register_hollow_log(defs)
|
|||
local groups = {axey = 1, building_block = 1, handy = 1, hollow_log = 1}
|
||||
|
||||
if not defs[5] then
|
||||
groups = table.insert(groups, {fire_encouragement = 5, fire_flammability = 5, flammable = 2, hollow_log_burnable = 1})
|
||||
table.update(groups, {fire_encouragement = 5, fire_flammability = 5, flammable = 2, hollow_log_burnable = 1})
|
||||
end
|
||||
|
||||
minetest.register_node(modname .. ":"..name.."_hollow", {
|
||||
|
|
|
@ -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
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 317 B After Width: | Height: | Size: 412 B |
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
Loading…
Reference in New Issue