From ce123d4676e5aabf6a878509dc7f933b346a2b22 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:02:35 +0100 Subject: [PATCH 01/48] add API documentation to mcl_autogroup --- mods/CORE/mcl_autogroup/API.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 mods/CORE/mcl_autogroup/API.md diff --git a/mods/CORE/mcl_autogroup/API.md b/mods/CORE/mcl_autogroup/API.md new file mode 100644 index 0000000000..79b9770b5d --- /dev/null +++ b/mods/CORE/mcl_autogroup/API.md @@ -0,0 +1,27 @@ +# mcl_autogroup +This mod emulate digging times from mc. + +## mcl_autogroup.can_harvest(nodename, toolname) +Return true if can be dig with . +* nodename: string, valid nodename +* toolname: (optional) string, valid toolname + +## mcl_autogroup.get_groupcaps(toolname, efficiency) +This function is used to calculate diggroups for tools. +WARNING: This function can only be called after mod initialization. +* toolname: string, name of the tool being enchanted (like "mcl_tools:diamond_pickaxe") +* efficiency: (optional) integer, the efficiency level the tool is enchanted with (default 0) + +## mcl_autogroup.get_wear(toolname, diggroup) +Return the max wear of with +WARNING: This function can only be called after mod initialization. +* toolname: string, name of the tool used +* diggroup: string, the name of the diggroup the tool is used on + +## mcl_autogroup.register_diggroup(group, def) +* group: string, name of the group to register as a digging group +* def: (optional) table, table with information about the diggroup (defaults to {} if unspecified) + * level: (optional) string, if specified it is an array containing the names of the different digging levels the digging group supports + +## mcl_autogroup.registered_diggroups +List of registered diggroups, indexed by name. \ No newline at end of file From fb50b256ed6c2e0451e950c33114c51507c08618 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:12:41 +0100 Subject: [PATCH 02/48] add API documentation to flowlib (part 1) --- mods/CORE/flowlib/API.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 mods/CORE/flowlib/API.md diff --git a/mods/CORE/flowlib/API.md b/mods/CORE/flowlib/API.md new file mode 100644 index 0000000000..d9f54e4bd0 --- /dev/null +++ b/mods/CORE/flowlib/API.md @@ -0,0 +1,35 @@ +# flowlib +Simple flow functions. + +## flowlib.is_touching() + + +## flowlib.is_water(pos) +Return true if node at is water, false overwise. +* pos: position + +## flowlib.node_is_water(node) +Return true if is water, false overwise. +* node: node + +## flowlib.is_lava(pos) +Return true if node at is lava, false overwise. +* pos: position + +## flowlib.node_is_lava(node) +Return true if is lava, false overwise. +* node: node + +## flowlib.is_liquid(pos) +Return true if node at is liquid, false overwise. +* pos: position + +## flowlib.node_is_liquid(node) +Return true if is liquid, false overwise. +* node: node + +## flowlib.quick_flow(pos, node) +* pos: position +* node: node + +## flowlib.move_centre(pos, realpos, node, radius) \ No newline at end of file From 19db2a479f702a9fa1f2fb44e6b4253c5e27a9e7 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:18:19 +0100 Subject: [PATCH 03/48] add API documentation to flowlib (part 2) --- mods/CORE/flowlib/API.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/CORE/flowlib/API.md b/mods/CORE/flowlib/API.md index d9f54e4bd0..7ebb4cc87d 100644 --- a/mods/CORE/flowlib/API.md +++ b/mods/CORE/flowlib/API.md @@ -1,7 +1,11 @@ # flowlib Simple flow functions. -## flowlib.is_touching() +## flowlib.is_touching(realpos, nodepos, radius) +Return true if a sphere of at collide with node at . +* realpos: position +* nodepos: position +* radius: number ## flowlib.is_water(pos) From 2a5dcd1634c8d546636b7725308efd3705f1e0f9 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:23:57 +0100 Subject: [PATCH 04/48] add API documentation to flowlib (part 3) --- mods/CORE/flowlib/API.md | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/CORE/flowlib/API.md b/mods/CORE/flowlib/API.md index 7ebb4cc87d..0542e45190 100644 --- a/mods/CORE/flowlib/API.md +++ b/mods/CORE/flowlib/API.md @@ -33,6 +33,7 @@ Return true if is liquid, false overwise. * node: node ## flowlib.quick_flow(pos, node) +Return direction where the water is flowing (to be use to push mobs, items...). * pos: position * node: node From 39ac3f208d003f77ad3fcec1a79d6b1c4e4799a3 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:25:54 +0100 Subject: [PATCH 05/48] add API documentation to flowlib (part 4) --- mods/CORE/flowlib/API.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/CORE/flowlib/API.md b/mods/CORE/flowlib/API.md index 0542e45190..f3282c9752 100644 --- a/mods/CORE/flowlib/API.md +++ b/mods/CORE/flowlib/API.md @@ -37,4 +37,8 @@ Return direction where the water is flowing (to be use to push mobs, items...). * pos: position * node: node -## flowlib.move_centre(pos, realpos, node, radius) \ No newline at end of file +## flowlib.move_centre(pos, realpos, node, radius) +* pos: position +* realpos: position +* node: node +* radius: number \ No newline at end of file From 52939ff6a409e777106b82d87c34d917cb0c9fd4 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:32:52 +0100 Subject: [PATCH 06/48] add API documentation to flowlib (part 5) --- mods/CORE/flowlib/API.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/CORE/flowlib/API.md b/mods/CORE/flowlib/API.md index f3282c9752..20e85036b9 100644 --- a/mods/CORE/flowlib/API.md +++ b/mods/CORE/flowlib/API.md @@ -7,7 +7,6 @@ Return true if a sphere of at collide with node at . * nodepos: position * radius: number - ## flowlib.is_water(pos) Return true if node at is water, false overwise. * pos: position @@ -38,7 +37,9 @@ Return direction where the water is flowing (to be use to push mobs, items...). * node: node ## flowlib.move_centre(pos, realpos, node, radius) +Return the pos of the nearest not water block near from in a sphere of at . +WARNING: This function is never used in mcl2, use at your own risk. The informations described here may be wrong. * pos: position -* realpos: position +* realpos: position, position of the entity * node: node * radius: number \ No newline at end of file From e56d9d2ab805250221ab0d3fed54bac3f8e03444 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:44:36 +0100 Subject: [PATCH 07/48] add API documentation to controls --- mods/CORE/controls/API.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 mods/CORE/controls/API.md diff --git a/mods/CORE/controls/API.md b/mods/CORE/controls/API.md new file mode 100644 index 0000000000..8d9df6ca50 --- /dev/null +++ b/mods/CORE/controls/API.md @@ -0,0 +1,23 @@ +# controls + +## controls.players +Table containing player controls at runtime. +WARNING: Never use this table in writing + +## controls.register_on_press(func) +Register a function that will be executed with (player, keyname) every time a player press a key. + +## controls.registered_on_press +Table containing functions registered with controls.register_on_press(). + +## controls.register_on_release(func) +Register a function that will be executed with (player, keyname, clock_from_last_press) every time a player release a key. + +## controls.registered_on_release +Table containing functions registered with controls.register_on_release(). + +## controls.register_on_hold(func) +Register a function that will be executed with (player, keyname, clock_from_start_hold) every time a player hold a key. + +## controls.registered_on_hold +Table containing functions registered with controls.register_on_hold(). \ No newline at end of file From 6f9c1856b8bae6b7293ead323ab291aa482a0b81 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 00:48:24 +0100 Subject: [PATCH 08/48] add API documentation to mcl_colors (!) --- mods/CORE/mcl_colors/API.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 mods/CORE/mcl_colors/API.md diff --git a/mods/CORE/mcl_colors/API.md b/mods/CORE/mcl_colors/API.md new file mode 100644 index 0000000000..71cad335b1 --- /dev/null +++ b/mods/CORE/mcl_colors/API.md @@ -0,0 +1,8 @@ +# mcl_colors +Mod providing global table containing legacity minecraft colors to be used in mods. + +## mcl_colors.* +Colors by upper name, in hex value. + +## mcl_colors.background.* +Background colors by upper name, in hex value. From cdb67d96a6cf4a72a94b98ff9f0b5055af0cd977 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 01:00:18 +0100 Subject: [PATCH 09/48] add API documentation to mcl_explosions --- mods/CORE/mcl_explosions/API.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 mods/CORE/mcl_explosions/API.md diff --git a/mods/CORE/mcl_explosions/API.md b/mods/CORE/mcl_explosions/API.md new file mode 100644 index 0000000000..cb0e9252d9 --- /dev/null +++ b/mods/CORE/mcl_explosions/API.md @@ -0,0 +1,15 @@ +# mcl_explosions +This mod provide helper functions to create explosions. + +## mcl_explosions.explode(pos, strength, info, puncher) +* pos: position, initial position of the explosion +* strenght: number, radius of the explosion +* info: table, explosion informations: + * drop_chance: number, if specified becomes the drop chance of all nodes in the explosion (default: 1.0 / strength) + * max_blast_resistance: int, if specified the explosion will treat all non-indestructible nodes as having a blast resistance of no more than this value + * sound: bool, if true, the explosion will play a sound (default: true) + * particles: bool, if true, the explosion will create particles (default: true) + * fire: bool, if true, 1/3 nodes become fire (default: false) + * griefing: bool, if true, the explosion will destroy nodes (default: true) + * grief_protected: bool, if true, the explosion will also destroy nodes which have been protected (default: false) +* puncher: (optional) entity, will be used as source for damage done by the explosion \ No newline at end of file From 890a569b13cf0a9c9925dc545df740e201a6a2fb Mon Sep 17 00:00:00 2001 From: AFCMS Date: Sun, 28 Mar 2021 07:40:36 +0200 Subject: [PATCH 10/48] add API documentation to mcl_worlds --- mods/CORE/mcl_worlds/API.md | 80 +++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 mods/CORE/mcl_worlds/API.md diff --git a/mods/CORE/mcl_worlds/API.md b/mods/CORE/mcl_worlds/API.md new file mode 100644 index 0000000000..a5509431c2 --- /dev/null +++ b/mods/CORE/mcl_worlds/API.md @@ -0,0 +1,80 @@ +# mcl_worlds +This mod provides utility functions about positions and dimensions. + +## mcl_worlds.is_in_void(pos) +This function returns: + +* true, true: if pos is in deep void (deadly) +* true, false: if the pos is in void (non deadly) +* false, false: owerwise + +Params: + +* pos: position + +## mcl_worlds.y_to_layer(y) +This function is used to calculate the minetest y layer and dimension of the given minecraft layer. +Mainly used for ore generation. +Takes an Y coordinate as input and returns: + +* The corresponding Minecraft layer (can be nil if void) +* The corresponding Minecraft dimension ("overworld", "nether" or "end") or "void" if is in the void +If the Y coordinate is not located in any dimension, it will return: nil, "void" + +Params: + +* y: int + +## mcl_worlds.pos_to_dimension(pos) +This function return the Minecraft dimension of ("overworld", "nether" or "end") or "void" if is in the void. + +* pos: position + +## mcl_worlds.layer_to_y(layer, mc_dimension) +Takes a Minecraft layer and a “dimension” name and returns the corresponding Y coordinate for MineClone 2. +mc_dimension can be "overworld", "nether", "end" (default: "overworld"). + +* layer: int +* mc_dimension: string + +## mcl_worlds.has_weather(pos) +Returns true if can have weather, false owerwise. +Weather can be only in the overworld. + +* pos: position + +## mcl_worlds.has_dust(pos) +Returns true if can have nether dust, false owerwise. +Nether dust can be only in the nether. + +* pos: position + +## mcl_worlds.compass_works(pos) +Returns true if compasses are working at , false owerwise. +In mc, you cant use compass in the nether and the end. + +* pos: position + +## mcl_worlds.compass_works(pos) +Returns true if clock are working at , false owerwise. +In mc, you cant use clock in the nether and the end. + +* pos: position + +## mcl_worlds.register_on_dimension_change(function(player, dimension)) +Register a callback function func(player, dimension). +It will be called whenever a player changes between dimensions. +The void counts as dimension. + +* player: player, the player who changed the dimension +* dimension: position, The new dimension of the player ("overworld", "nether", "end", "void"). + + +## mcl_worlds.registered_on_dimension_change +Table containing all function registered with mcl_worlds.register_on_dimension_change() + +## mcl_worlds.dimension_change(player, dimension) +Notify this mod of a dimmension change of to + +* player: player, player who changed the dimension +* dimension: string, new dimension ("overworld", "nether", "end", "void") \ No newline at end of file From 0dbe66f3b43bb2134b1dc1920539627bc4aaf9a0 Mon Sep 17 00:00:00 2001 From: epCode Date: Thu, 1 Apr 2021 14:12:07 -0700 Subject: [PATCH 11/48] make mob drops similar to MC --- mods/ENTITIES/mcl_mobs/api.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index f1df87e8b7..1ef0712e8e 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -735,7 +735,9 @@ local item_drop = function(self, cooked, looting_level) end -- add item if it exists - obj = minetest.add_item(pos, ItemStack(item .. " " .. num)) + for x = 1, num do + obj = minetest.add_item(pos, ItemStack(item .. " " .. 1)) + end if obj and obj:get_luaentity() then From 2f272b3dff16c642bd0e8f02dd1b0878bac3188c Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Thu, 1 Apr 2021 23:48:00 -0400 Subject: [PATCH 12/48] Fix item drop on laggy servers --- mods/ENTITIES/mcl_item_entity/init.lua | 156 ++++++++++--------------- 1 file changed, 61 insertions(+), 95 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 95b90e5467..df08291b4b 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -1,6 +1,6 @@ local has_awards = minetest.get_modpath("awards") -mcl_item_entity = {} +local mcl_item_entity = {} --basic settings local item_drop_settings = {} --settings table @@ -74,114 +74,70 @@ local disable_physics = function(object, luaentity, ignore_check, reset_movement end end +--this is a 0.2 second tick globally across all players +local item_check_ticker = 0 + minetest.register_globalstep(function(dtime) - for _,player in pairs(minetest.get_connected_players()) do - if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then - local pos = player:get_pos() - local inv = player:get_inventory() - local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} + item_check_ticker = item_check_ticker + dtime + if item_check_ticker >= 0.2 then + item_check_ticker = 0 + print(dtime) - --magnet and collection - for _,object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do - if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then - object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime - local collected = false - if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + for _,player in pairs(minetest.get_connected_players()) do + if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then + local pos = player:get_pos() + local inv = player:get_inventory() + local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} - -- Collection - if vector.distance(checkpos, object:get_pos()) <= item_drop_settings.radius_collect and not object:get_luaentity()._removed then - -- Ignore if itemstring is not set yet - if object:get_luaentity().itemstring ~= "" then - inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) - minetest.sound_play("item_drop_pickup", { - pos = pos, - max_hear_distance = 16, - gain = 1.0, - }, true) - check_pickup_achievements(object, player) + --magnet and collection + for _,object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do + if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then + object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime + local collected = false + if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + + -- Collection + if not object:get_luaentity()._removed then + -- Ignore if itemstring is not set yet + if object:get_luaentity().itemstring ~= "" then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + minetest.sound_play("item_drop_pickup", { + pos = pos, + max_hear_distance = 16, + gain = 1.0, + }, true) + check_pickup_achievements(object, player) - -- Destroy entity - -- This just prevents this section to be run again because object:remove() doesn't remove the item immediately. - object:get_luaentity()._removed = true - object:remove() - collected = true - end + object:move_to(checkpos, false) - -- Magnet - else + -- Destroy entity + -- This just prevents this section to be run again because object:remove() doesn't remove the item immediately. + object:get_luaentity()._removed = true - object:get_luaentity()._magnet_active = true - object:get_luaentity()._collector_timer = 0 - - -- Move object to player - disable_physics(object, object:get_luaentity()) - - local opos = object:get_pos() - local vec = vector.subtract(checkpos, opos) - vec = vector.add(opos, vector.divide(vec, 2)) - object:move_to(vec) - - - --fix eternally falling items - minetest.after(0, function(object) - local lua = object:get_luaentity() - if lua then - object:set_acceleration({x=0, y=0, z=0}) - end - end, object) - - - --this is a safety to prevent items flying away on laggy servers - if item_drop_settings.collection_safety == true then - if object:get_luaentity().init ~= true then - object:get_luaentity().init = true - minetest.after(1, function(args) - local playername = args[1] - local player = minetest.get_player_by_name(playername) - local object = args[2] - local lua = object:get_luaentity() - if player == nil or not player:is_player() or object == nil or lua == nil or lua.itemstring == nil then - return - end - if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then - inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) - if not object:get_luaentity()._removed then - minetest.sound_play("item_drop_pickup", { - pos = pos, - max_hear_distance = 16, - gain = 1.0, - }, true) - end - check_pickup_achievements(object, player) - object:get_luaentity()._removed = true - object:remove() - else - enable_physics(object, object:get_luaentity()) - end - end, {player:get_player_name(), object}) + collected = true end end end - end - if not collected then - if object:get_luaentity()._magnet_timer > 1 then - object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time - object:get_luaentity()._magnet_active = false - elseif object:get_luaentity()._magnet_timer < 0 then - object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime + if not collected then + if object:get_luaentity()._magnet_timer > 1 then + object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time + object:get_luaentity()._magnet_active = false + elseif object:get_luaentity()._magnet_timer < 0 then + object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime + end end + + elseif not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "mcl_experience:orb" then + local entity = object:get_luaentity() + entity.collector = player:get_player_name() + entity.collected = true + end - - elseif not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "mcl_experience:orb" then - local entity = object:get_luaentity() - entity.collector = player:get_player_name() - entity.collected = true - end - end + end end end end) @@ -230,12 +186,13 @@ local function get_fortune_drops(fortune_drops, fortune_level) return drop or {} end +local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops", true) + function minetest.handle_node_drops(pos, drops, digger) -- NOTE: This function override allows digger to be nil. -- This means there is no digger. This is a special case which allows this function to be called -- by hand. Creative Mode is intentionally ignored in this case. - local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops", true) if (digger and digger:is_player() and minetest.is_creative_enabled(digger:get_player_name())) or doTileDrops == false then return end @@ -401,6 +358,9 @@ minetest.register_entity(":__builtin:item", { -- Number of seconds this item entity has existed so far age = 0, + -- How old it has become in the collection animation + collection_age = 0, + set_item = function(self, itemstring) self.itemstring = itemstring if self.itemstring == "" then @@ -566,6 +526,12 @@ minetest.register_entity(":__builtin:item", { on_step = function(self, dtime) if self._removed then + self.object:set_acceleration({x=0,y=0,z=0}) + self.object:set_velocity({x=0,y=0,z=0}) + self.collection_age = self.collection_age + dtime + if self.collection_age > 0.15 then + self.object:remove() + end return end self.age = self.age + dtime From 1e3676c391a8588236e4f7871c382a4b28f6f9b3 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Fri, 2 Apr 2021 05:38:53 +0000 Subject: [PATCH 13/48] Remove debug info from item magnet --- mods/ENTITIES/mcl_item_entity/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index df08291b4b..a05bb1ffd2 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -81,7 +81,6 @@ minetest.register_globalstep(function(dtime) item_check_ticker = item_check_ticker + dtime if item_check_ticker >= 0.2 then item_check_ticker = 0 - print(dtime) for _,player in pairs(minetest.get_connected_players()) do if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then From 39aaf0f21faac88ba1f249e7324e7e4296861f50 Mon Sep 17 00:00:00 2001 From: NO11 Date: Fri, 2 Apr 2021 11:09:45 +0000 Subject: [PATCH 14/48] Fix #1391 --- mods/ITEMS/mcl_end/end_crystal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_end/end_crystal.lua b/mods/ITEMS/mcl_end/end_crystal.lua index b6b9fdd6a5..d089c3cdf7 100644 --- a/mods/ITEMS/mcl_end/end_crystal.lua +++ b/mods/ITEMS/mcl_end/end_crystal.lua @@ -70,7 +70,7 @@ minetest.register_entity("mcl_end:crystal", { collisionbox = {-1, 0.5, -1, 1, 2.5, 1}, mesh = "mcl_end_crystal.b3d", textures = {"mcl_end_crystal.png"}, - collide_with_objects = true, + collide_with_objects = false, }, on_punch = crystal_explode, on_activate = set_crystal_animation, From 695ad9120bf42f4b5ce62027a393fc2d65dd86aa Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 14:12:44 +0200 Subject: [PATCH 15/48] remove backward compatibility for water --- mods/ITEMS/mcl_core/nodes_liquid.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_core/nodes_liquid.lua b/mods/ITEMS/mcl_core/nodes_liquid.lua index 0479c7f723..4696a629ac 100644 --- a/mods/ITEMS/mcl_core/nodes_liquid.lua +++ b/mods/ITEMS/mcl_core/nodes_liquid.lua @@ -7,10 +7,10 @@ local WATER_ALPHA = 179 local WATER_VISC = 1 local LAVA_VISC = 7 local LIGHT_LAVA = minetest.LIGHT_MAX -local USE_TEXTURE_ALPHA +local USE_TEXTURE_ALPHA = true + if minetest.features.use_texture_alpha_string_modes then USE_TEXTURE_ALPHA = "blend" - WATER_ALPHA = nil end local lava_death_messages = { @@ -40,7 +40,6 @@ minetest.register_node("mcl_core:water_flowing", { }, sounds = mcl_sounds.node_sound_water_defaults(), is_ground_content = false, - alpha = WATER_ALPHA, use_texture_alpha = USE_TEXTURE_ALPHA, paramtype = "light", paramtype2 = "flowingliquid", @@ -86,7 +85,6 @@ S("• When water is directly below lava, the water turns into stone."), }, sounds = mcl_sounds.node_sound_water_defaults(), is_ground_content = false, - alpha = WATER_ALPHA, use_texture_alpha = USE_TEXTURE_ALPHA, paramtype = "light", walkable = false, From e20e0fab7164fee0a7cd495817d4a5a8dcd60c1a Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 14:16:14 +0200 Subject: [PATCH 16/48] remobe backward compatibility for portals --- mods/ITEMS/mcl_portals/portal_end.lua | 6 ------ mods/ITEMS/mcl_portals/portal_nether.lua | 2 -- 2 files changed, 8 deletions(-) diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 0bc0ce57e8..ab09c5966b 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -4,11 +4,6 @@ local S = minetest.get_translator("mcl_portals") local SPAWN_MIN = mcl_vars.mg_end_min+70 local SPAWN_MAX = mcl_vars.mg_end_min+98 -local PORTAL_ALPHA = 192 -if minetest.features.use_texture_alpha_string_modes then - PORTAL_ALPHA = nil -end - local mg_name = minetest.get_mapgen_setting("mg_name") local destroy_portal = function(pos) @@ -81,7 +76,6 @@ minetest.register_node("mcl_portals:portal_end", { -- This is 15 in MC. light_source = 14, post_effect_color = {a = 192, r = 0, g = 0, b = 0}, - alpha = PORTAL_ALPHA, after_destruct = destroy_portal, -- This prevents “falling through” collision_box = { diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index e842edf812..50a3bde39d 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -30,7 +30,6 @@ local N_Y_MIN, N_Y_MAX = mcl_vars.mg_bedrock_nether_bottom_min, mcl_vars.mg_be local O_DY, N_DY = O_Y_MAX - O_Y_MIN + 1, N_Y_MAX - N_Y_MIN + 1 -- Alpha and particles -local ALPHA = minetest.features.use_texture_alpha_string_modes and 192 local node_particles_allowed = minetest.settings:get("mcl_node_particles") or "none" local node_particles_levels = { none=0, low=1, medium=2, high=3 } local PARTICLES = node_particles_levels[node_particles_allowed] @@ -263,7 +262,6 @@ minetest.register_node(PORTAL, { drop = "", light_source = 11, post_effect_color = {a = 180, r = 51, g = 7, b = 89}, - alpha = ALPHA, node_box = { type = "fixed", fixed = { From ead33e3520dd923f36f137614464f281b4d0ee43 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 14:27:35 +0200 Subject: [PATCH 17/48] fix undeacleared vars in mcl_throwing --- mods/ITEMS/mcl_throwing/init.lua | 4 ++-- mods/ITEMS/mcl_throwing/register.lua | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/init.lua b/mods/ITEMS/mcl_throwing/init.lua index 4d6dcfe5c9..09a34c12f5 100644 --- a/mods/ITEMS/mcl_throwing/init.lua +++ b/mods/ITEMS/mcl_throwing/init.lua @@ -58,7 +58,7 @@ function mcl_throwing.dispense_function(stack, dispenserpos, droppos, dropnode, end -- Staticdata handling because objects may want to be reloaded -local get_staticdata = function(self) +function mcl_throwing.get_staticdata(self) local thrower -- Only save thrower if it's a player name if type(self._thrower) == "string" then @@ -71,7 +71,7 @@ local get_staticdata = function(self) return minetest.serialize(data) end -local on_activate = function(self, staticdata, dtime_s) +function mcl_throwing.on_activate(self, staticdata, dtime_s) local data = minetest.deserialize(staticdata) if data then self._lastpos = data._lastpos diff --git a/mods/ITEMS/mcl_throwing/register.lua b/mods/ITEMS/mcl_throwing/register.lua index 027ff4e938..8ef1c73bf1 100644 --- a/mods/ITEMS/mcl_throwing/register.lua +++ b/mods/ITEMS/mcl_throwing/register.lua @@ -9,8 +9,8 @@ local snowball_ENTITY={ collisionbox = {0,0,0,0,0,0}, pointable = false, - get_staticdata = get_staticdata, - on_activate = on_activate, + get_staticdata = mcl_throwing.get_staticdata, + on_activate = mcl_throwing.on_activate, _thrower = nil, _lastpos={}, @@ -23,8 +23,8 @@ local egg_ENTITY={ collisionbox = {0,0,0,0,0,0}, pointable = false, - get_staticdata = get_staticdata, - on_activate = on_activate, + get_staticdata = mcl_throwing.get_staticdata, + on_activate = mcl_throwing.on_activate, _thrower = nil, _lastpos={}, @@ -38,8 +38,8 @@ local pearl_ENTITY={ collisionbox = {0,0,0,0,0,0}, pointable = false, - get_staticdata = get_staticdata, - on_activate = on_activate, + get_staticdata = mcl_throwing.get_staticdata, + on_activate = mcl_throwing.on_activate, _lastpos={}, _thrower = nil, -- Player ObjectRef of the player who threw the ender pearl From c457c4ce3c833bd564af5d0c4aa6a1fe62cdc653 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 14:28:43 +0200 Subject: [PATCH 18/48] fix undeacleared vars in mcl_fishing --- mods/ITEMS/mcl_fishing/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 228d490ea6..2bd0ed5155 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -303,8 +303,8 @@ local flying_bobber_ENTITY={ collisionbox = {0,0,0,0,0,0}, pointable = false, - get_staticdata = get_staticdata, - on_activate = on_activate, + get_staticdata = mcl_throwing.get_staticdata, + on_activate = mcl_throwing.on_activate, _lastpos={}, _thrower = nil, From 59d687c57960c0817e59b35f05b5019b36591d79 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 14:30:46 +0200 Subject: [PATCH 19/48] fix API.md --- mods/ITEMS/mcl_throwing/API.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/ITEMS/mcl_throwing/API.md b/mods/ITEMS/mcl_throwing/API.md index f2b1c73741..41a47223ac 100644 --- a/mods/ITEMS/mcl_throwing/API.md +++ b/mods/ITEMS/mcl_throwing/API.md @@ -33,3 +33,9 @@ Handle creative mode, and throw params. * entity_name: the name of the entity to throw * velocity: (optional) velocity overide (can be nil) + +## mcl_throwing.get_staticdata(self) +Must be used in entity def if you want the entity to be saved after unloading mapblock. + +## mcl_throwing.on_activate(self, staticdata, dtime_s) +Must be used in entity def if you want the entity to be saved after unloading mapblock. From ca01b3641bb332e11afe26a45fa88a5dc6a0e29d Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 15:04:21 +0200 Subject: [PATCH 20/48] make endermen not teleport everytime when hitted --- mods/ENTITIES/mobs_mc/enderman.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index efc789344a..22599dd9e0 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -534,9 +534,11 @@ mobs:register_mob("mobs_mc:enderman", { --if (minetest.get_timeofday() * 24000) > 5001 and (minetest.get_timeofday() * 24000) < 19000 then -- self:teleport(nil) --else + if pr:next(1, 8) == 8 then --FIXME: real mc rate self:teleport(hitter) - self.attack=hitter - self.state="attack" + end + self.attack=hitter + self.state="attack" --end end end, From b68c4b07c135a5e2a46225cf3c90cb8a2ac52252 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Fri, 2 Apr 2021 17:20:19 +0200 Subject: [PATCH 21/48] tweak hudbars --- mods/HUD/hudbars/default_settings.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/HUD/hudbars/default_settings.lua b/mods/HUD/hudbars/default_settings.lua index 0bd267d0e7..ce43cc8be1 100644 --- a/mods/HUD/hudbars/default_settings.lua +++ b/mods/HUD/hudbars/default_settings.lua @@ -20,9 +20,9 @@ if hb.settings.bar_type == "progress_bar" then hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_offset_right_x", "number", 15) hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_offset_right_y", "number", -86) else - hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_statbar_offset_left_x", "number", -265) + hb.settings.start_offset_left.x = hb.load_setting("hudbars_start_statbar_offset_left_x", "number", -258) hb.settings.start_offset_left.y = hb.load_setting("hudbars_start_statbar_offset_left_y", "number", -90) - hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_statbar_offset_right_x", "number", 25) + hb.settings.start_offset_right.x = hb.load_setting("hudbars_start_statbar_offset_right_x", "number", 16) hb.settings.start_offset_right.y = hb.load_setting("hudbars_start_statbar_offset_right_y", "number", -90) end -- Modified in MCL2! From 18d7be4a4f3b0215f306dc95da4486cf8b3fc288 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 00:42:20 -0400 Subject: [PATCH 22/48] More fixes to item collection on laggy servers --- mods/ENTITIES/mcl_item_entity/init.lua | 88 +++++++++++--------------- 1 file changed, 38 insertions(+), 50 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index a05bb1ffd2..cee2fda69c 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -4,6 +4,7 @@ local mcl_item_entity = {} --basic settings local item_drop_settings = {} --settings table +item_drop_settings.dug_buffer = 0.65 -- the warm up period before a dug item can be collected item_drop_settings.age = 1.0 --how old a dropped item (_insta_collect==false) has to be before collecting item_drop_settings.radius_magnet = 2.0 --radius of item magnet. MUST BE LARGER THAN radius_collect! item_drop_settings.xp_radius_magnet = 7.25 --radius of xp magnet. MUST BE LARGER THAN radius_collect! @@ -74,69 +75,50 @@ local disable_physics = function(object, luaentity, ignore_check, reset_movement end end ---this is a 0.2 second tick globally across all players -local item_check_ticker = 0 minetest.register_globalstep(function(dtime) - item_check_ticker = item_check_ticker + dtime - if item_check_ticker >= 0.2 then - item_check_ticker = 0 + for _,player in pairs(minetest.get_connected_players()) do + if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then + local pos = player:get_pos() + local inv = player:get_inventory() + local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} - for _,player in pairs(minetest.get_connected_players()) do - if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then - local pos = player:get_pos() - local inv = player:get_inventory() - local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} + --magnet and collection + for _,object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do + if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then - --magnet and collection - for _,object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do - if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then - object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime - local collected = false - if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then - -- Collection - if not object:get_luaentity()._removed then - -- Ignore if itemstring is not set yet - if object:get_luaentity().itemstring ~= "" then - inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) - minetest.sound_play("item_drop_pickup", { - pos = pos, - max_hear_distance = 16, - gain = 1.0, - }, true) - check_pickup_achievements(object, player) + -- Collection + if not object:get_luaentity()._removed then + -- Ignore if itemstring is not set yet + if object:get_luaentity().itemstring ~= "" then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + minetest.sound_play("item_drop_pickup", { + pos = pos, + max_hear_distance = 16, + gain = 1.0, + }, true) + check_pickup_achievements(object, player) - object:move_to(checkpos, false) + object:move_to(checkpos, true) - -- Destroy entity - -- This just prevents this section to be run again because object:remove() doesn't remove the item immediately. - object:get_luaentity()._removed = true - - collected = true - end + -- Destroy entity + -- This just prevents this section to be run again because object:remove() doesn't remove the item immediately. + object:get_luaentity()._removed = true end end - - if not collected then - if object:get_luaentity()._magnet_timer > 1 then - object:get_luaentity()._magnet_timer = -item_drop_settings.magnet_time - object:get_luaentity()._magnet_active = false - elseif object:get_luaentity()._magnet_timer < 0 then - object:get_luaentity()._magnet_timer = object:get_luaentity()._magnet_timer + dtime - end - end - - elseif not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "mcl_experience:orb" then - local entity = object:get_luaentity() - entity.collector = player:get_player_name() - entity.collected = true - end - end + elseif not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "mcl_experience:orb" then + local entity = object:get_luaentity() + entity.collector = player:get_player_name() + entity.collected = true + + end end + end end end) @@ -291,6 +273,12 @@ function minetest.handle_node_drops(pos, drops, digger) z = -z end obj:set_velocity({x=1/x, y=obj:get_velocity().y, z=1/z}) + + obj:get_luaentity().age = item_drop_settings.dug_buffer + + obj:get_luaentity()._insta_collect = false + + print(obj:get_luaentity().age) end end end From 61e812e40a963bcc4492be4df02957891629931a Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Fri, 2 Apr 2021 21:40:04 -0400 Subject: [PATCH 23/48] Add in manual interpolation into the item magnet --- mods/ENTITIES/mcl_item_entity/init.lua | 27 +++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index cee2fda69c..a955f928bc 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -9,7 +9,7 @@ item_drop_settings.age = 1.0 --how old a dropped item (_insta_ item_drop_settings.radius_magnet = 2.0 --radius of item magnet. MUST BE LARGER THAN radius_collect! item_drop_settings.xp_radius_magnet = 7.25 --radius of xp magnet. MUST BE LARGER THAN radius_collect! item_drop_settings.radius_collect = 0.2 --radius of collection -item_drop_settings.player_collect_height = 1.0 --added to their pos y value +item_drop_settings.player_collect_height = 1.1 --added to their pos y value item_drop_settings.collection_safety = false --do this to prevent items from flying away on laggy servers item_drop_settings.random_item_velocity = true --this sets random item velocity if velocity is 0 item_drop_settings.drop_single_item = false --if true, the drop control drops 1 item instead of the entire stack, and sneak+drop drops the stack @@ -101,12 +101,13 @@ minetest.register_globalstep(function(dtime) }, true) check_pickup_achievements(object, player) - - object:move_to(checkpos, true) - -- Destroy entity -- This just prevents this section to be run again because object:remove() doesn't remove the item immediately. + object:get_luaentity().target = checkpos object:get_luaentity()._removed = true + + object:set_velocity(vector.multiply(vector.subtract(checkpos, object:get_pos()), 10)) + object:set_acceleration(vector.multiply(vector.subtract(checkpos, object:get_pos()), 20)) end end end @@ -513,12 +514,24 @@ minetest.register_entity(":__builtin:item", { on_step = function(self, dtime) if self._removed then - self.object:set_acceleration({x=0,y=0,z=0}) - self.object:set_velocity({x=0,y=0,z=0}) + + self.object:set_properties({ + physical = false + }) self.collection_age = self.collection_age + dtime - if self.collection_age > 0.15 then + if not self.target then self.object:remove() + else + local pos = self.object:get_pos() + + self.object:set_acceleration(vector.multiply(vector.subtract(self.target, pos), 20)) + self.object:set_velocity(vector.multiply(vector.subtract(self.target, pos), 10)) + + if self.collection_age >= 0.3 or vector.distance(pos, self.target) <= 0.08 then + self.object:remove() + end end + return end self.age = self.age + dtime From 1cbd3a998da0014cf14fd746f3e37980f5c93272 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Fri, 2 Apr 2021 21:50:47 -0400 Subject: [PATCH 24/48] Use manual move_to to account for move_to interpolation issues --- mods/ENTITIES/mcl_item_entity/init.lua | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index a955f928bc..582690ea78 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -106,8 +106,8 @@ minetest.register_globalstep(function(dtime) object:get_luaentity().target = checkpos object:get_luaentity()._removed = true - object:set_velocity(vector.multiply(vector.subtract(checkpos, object:get_pos()), 10)) - object:set_acceleration(vector.multiply(vector.subtract(checkpos, object:get_pos()), 20)) + object:set_velocity({x=0,y=0,z=0}) + object:set_acceleration({x=0,y=0,z=0}) end end end @@ -278,8 +278,6 @@ function minetest.handle_node_drops(pos, drops, digger) obj:get_luaentity().age = item_drop_settings.dug_buffer obj:get_luaentity()._insta_collect = false - - print(obj:get_luaentity().age) end end end @@ -518,16 +516,20 @@ minetest.register_entity(":__builtin:item", { self.object:set_properties({ physical = false }) + + self.object:set_velocity({x=0,y=0,z=0}) + self.object:set_acceleration({x=0,y=0,z=0}) + self.collection_age = self.collection_age + dtime + if not self.target then self.object:remove() else local pos = self.object:get_pos() - self.object:set_acceleration(vector.multiply(vector.subtract(self.target, pos), 20)) - self.object:set_velocity(vector.multiply(vector.subtract(self.target, pos), 10)) + self.object:move_to(vector.add(pos, vector.multiply(vector.subtract(self.target, pos), 0.5))) - if self.collection_age >= 0.3 or vector.distance(pos, self.target) <= 0.08 then + if self.collection_age >= 1 or vector.distance(pos, self.target) <= 0.06 then self.object:remove() end end From 0840ad98a2f5521599efce69eecdf0003be796be Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Fri, 2 Apr 2021 21:57:38 -0400 Subject: [PATCH 25/48] Adjust the item collection magnet even more --- mods/ENTITIES/mcl_item_entity/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 582690ea78..acd714d19d 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -9,7 +9,7 @@ item_drop_settings.age = 1.0 --how old a dropped item (_insta_ item_drop_settings.radius_magnet = 2.0 --radius of item magnet. MUST BE LARGER THAN radius_collect! item_drop_settings.xp_radius_magnet = 7.25 --radius of xp magnet. MUST BE LARGER THAN radius_collect! item_drop_settings.radius_collect = 0.2 --radius of collection -item_drop_settings.player_collect_height = 1.1 --added to their pos y value +item_drop_settings.player_collect_height = 0.8 --added to their pos y value item_drop_settings.collection_safety = false --do this to prevent items from flying away on laggy servers item_drop_settings.random_item_velocity = true --this sets random item velocity if velocity is 0 item_drop_settings.drop_single_item = false --if true, the drop control drops 1 item instead of the entire stack, and sneak+drop drops the stack @@ -527,9 +527,9 @@ minetest.register_entity(":__builtin:item", { else local pos = self.object:get_pos() - self.object:move_to(vector.add(pos, vector.multiply(vector.subtract(self.target, pos), 0.5))) + self.object:move_to(vector.add(pos, vector.multiply(vector.subtract(self.target, pos), 0.75))) - if self.collection_age >= 1 or vector.distance(pos, self.target) <= 0.06 then + if self.collection_age >= 1 or vector.distance(pos, self.target) <= 0.07 then self.object:remove() end end From 844db8aa7b6fb745a5c9040e4c0b2b7a2b65cb64 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Fri, 2 Apr 2021 22:02:19 -0400 Subject: [PATCH 26/48] Revert to previous style of interpolated move_to with tweaks --- mods/ENTITIES/mcl_item_entity/init.lua | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index acd714d19d..9184b50bd1 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -108,6 +108,15 @@ minetest.register_globalstep(function(dtime) object:set_velocity({x=0,y=0,z=0}) object:set_acceleration({x=0,y=0,z=0}) + + object:move_to(checkpos) + + minetest.after(0.25, function() + --safety check + if object and object:get_luaentity() then + object:remove() + end + end) end end end @@ -512,28 +521,11 @@ minetest.register_entity(":__builtin:item", { on_step = function(self, dtime) if self._removed then - self.object:set_properties({ physical = false }) - self.object:set_velocity({x=0,y=0,z=0}) self.object:set_acceleration({x=0,y=0,z=0}) - - self.collection_age = self.collection_age + dtime - - if not self.target then - self.object:remove() - else - local pos = self.object:get_pos() - - self.object:move_to(vector.add(pos, vector.multiply(vector.subtract(self.target, pos), 0.75))) - - if self.collection_age >= 1 or vector.distance(pos, self.target) <= 0.07 then - self.object:remove() - end - end - return end self.age = self.age + dtime From da3d5025a8a1d37ca6fb5eebc2d414a0c1639f45 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 01:22:13 -0400 Subject: [PATCH 27/48] Update tick rate to 0.05 ticks per second (20 tps) --- minetest.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/minetest.conf b/minetest.conf index e122db7b3e..1788cf9927 100644 --- a/minetest.conf +++ b/minetest.conf @@ -1,5 +1,8 @@ # This is a game specific minetest.conf file, do not edit +# If any of these settings are set in your minetest.conf file in .minetest (Linux) or in the root directory of the game (Run in place/Windows) +# They will override these settings + # Basic game rules time_speed = 72 @@ -33,7 +36,7 @@ mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_de keepInventory = false # Performance settings -# dedicated_server_step = 0.001 +dedicated_server_step = 0.05 #tick rate # abm_interval = 0.25 # max_objects_per_block = 4096 # max_packets_per_iteration = 10096 From b14bc2182946cfdab4716afd7ed46904611629b0 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 05:26:08 +0000 Subject: [PATCH 28/48] Minor update to home directory warning in minetest.conf --- minetest.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minetest.conf b/minetest.conf index 1788cf9927..223587f4db 100644 --- a/minetest.conf +++ b/minetest.conf @@ -1,6 +1,6 @@ # This is a game specific minetest.conf file, do not edit -# If any of these settings are set in your minetest.conf file in .minetest (Linux) or in the root directory of the game (Run in place/Windows) +# If any of these settings are set in your minetest.conf file in ~/.minetest (Linux) or in the root directory of the game (Run in place/Windows) # They will override these settings # Basic game rules From c572db92aad6d95cb719b4d9ca1e224d28a636a7 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 20:39:08 -0400 Subject: [PATCH 29/48] Add sound buffer and different item collection sound --- mods/ENTITIES/mcl_item_entity/init.lua | 51 ++++++++++++++++-- .../mcl_item_entity/sounds/Attributes.txt | 1 + .../sounds/item_drop_pickup.1.ogg | Bin 5965 -> 0 bytes .../sounds/item_drop_pickup.2.ogg | Bin 6151 -> 0 bytes .../sounds/item_drop_pickup.3.ogg | Bin 5690 -> 0 bytes .../sounds/item_drop_pickup.4.ogg | Bin 5822 -> 0 bytes .../sounds/item_drop_pickup.ogg | Bin 0 -> 5625 bytes 7 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 mods/ENTITIES/mcl_item_entity/sounds/Attributes.txt delete mode 100644 mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg delete mode 100644 mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.2.ogg delete mode 100644 mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg delete mode 100644 mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.4.ogg create mode 100644 mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.ogg diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 9184b50bd1..4028f5a15e 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -1,3 +1,24 @@ +--these are lua locals, used for higher performance +local minetest,math,vector,ipairs = minetest,math,vector,ipairs + +--this is used for the player pool in the sound buffer +local pool = {} + +local tick = false + +local name +minetest.register_on_joinplayer(function(player) + name = player:get_player_name() + pool[name] = 0 +end) + +local name +minetest.register_on_leaveplayer(function(player) + name = player:get_player_name() + pool[name] = nil +end) + + local has_awards = minetest.get_modpath("awards") local mcl_item_entity = {} @@ -77,8 +98,30 @@ end minetest.register_globalstep(function(dtime) + + tick = not tick + for _,player in pairs(minetest.get_connected_players()) do if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then + + + local name = player:get_player_name() + + if tick == true and pool[name] > 0 then + minetest.sound_play("item_drop_pickup", { + pos = pos, + gain = 1, + max_hear_distance = 16, + pitch = math.random(60,100)/100 + }) + if pool[name] > 6 then + pool[name] = 6 + else + pool[name] = pool[name] - 1 + end + end + + local pos = player:get_pos() local inv = player:get_inventory() local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} @@ -94,11 +137,7 @@ minetest.register_globalstep(function(dtime) -- Ignore if itemstring is not set yet if object:get_luaentity().itemstring ~= "" then inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) - minetest.sound_play("item_drop_pickup", { - pos = pos, - max_hear_distance = 16, - gain = 1.0, - }, true) + check_pickup_achievements(object, player) -- Destroy entity @@ -111,6 +150,8 @@ minetest.register_globalstep(function(dtime) object:move_to(checkpos) + pool[name] = pool[name] + 1 + minetest.after(0.25, function() --safety check if object and object:get_luaentity() then diff --git a/mods/ENTITIES/mcl_item_entity/sounds/Attributes.txt b/mods/ENTITIES/mcl_item_entity/sounds/Attributes.txt new file mode 100644 index 0000000000..7817593524 --- /dev/null +++ b/mods/ENTITIES/mcl_item_entity/sounds/Attributes.txt @@ -0,0 +1 @@ + Item_Drop_Pickup - https://freesound.org/people/benniknop/sounds/317848/ (License: CC0) diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg deleted file mode 100644 index 8010ff0a296be3df24018ee787d7663e31762245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5965 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 A6aWAK diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg deleted file mode 100644 index f234a482cff9830ff772e316207957d26d666b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5690 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 z 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�f5#;*eaK)&O;QfH5bvjVb@WI!Ps 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 UjuChK@}jF_ji#EJ<#7Q14-TB@yZ`_I diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6ca412d96cfa7037788371c0b70f39314d42b3a7 GIT binary patch literal 5625 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 Date: Sat, 3 Apr 2021 20:53:34 -0400 Subject: [PATCH 30/48] Adjust volume of item collection sound --- mods/ENTITIES/mcl_item_entity/init.lua | 2 +- .../sounds/item_drop_pickup.ogg | Bin 5625 -> 4834 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 4028f5a15e..7b566d8f44 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -112,7 +112,7 @@ minetest.register_globalstep(function(dtime) pos = pos, gain = 1, max_hear_distance = 16, - pitch = math.random(60,100)/100 + pitch = math.random(70,110)/100 }) if pool[name] > 6 then pool[name] = 6 diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.ogg index 6ca412d96cfa7037788371c0b70f39314d42b3a7..e7f5df09490b6e5ba110d540d4d064fa8c681bb1 100644 GIT binary patch delta 3456 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 delta 4252 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 From a807ee6372b0a597f45f6d05a3a073566768dbdf Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 20:55:46 -0400 Subject: [PATCH 31/48] Adjust the volume even more to perfectly match the gameplay --- mods/ENTITIES/mcl_item_entity/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index 7b566d8f44..b63c17c2bc 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -110,7 +110,7 @@ minetest.register_globalstep(function(dtime) if tick == true and pool[name] > 0 then minetest.sound_play("item_drop_pickup", { pos = pos, - gain = 1, + gain = 0.7, max_hear_distance = 16, pitch = math.random(70,110)/100 }) From 1b511936f5d287ce4a3592a71ec27e01a724da47 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 21:05:31 -0400 Subject: [PATCH 32/48] Fix local name memory leak --- mods/ENTITIES/mcl_item_entity/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index b63c17c2bc..cc7672b7a5 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -6,14 +6,14 @@ local pool = {} local tick = false -local name minetest.register_on_joinplayer(function(player) + local name name = player:get_player_name() pool[name] = 0 end) -local name minetest.register_on_leaveplayer(function(player) + local name name = player:get_player_name() pool[name] = nil end) From 40b07e466b6f934a61e88224e8993ac163300bd0 Mon Sep 17 00:00:00 2001 From: epCode Date: Sat, 3 Apr 2021 18:07:51 -0700 Subject: [PATCH 33/48] make ghast fireballs deflectible --- mods/ENTITIES/mcl_mobs/api.lua | 7 ++++++- mods/ENTITIES/mobs_mc/ghast.lua | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 1ef0712e8e..fac8bbeecb 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -4223,6 +4223,11 @@ function mobs:register_arrow(name, def) switch = 0, owner_id = def.owner_id, rotate = def.rotate, + on_punch = function(self) + local vel = self.object:get_velocity() + self.object:set_velocity({x=vel.x * -1, y=vel.y * -1, z=vel.z * -1}) + end, + collisionbox = def.collisionbox or {0, 0, 0, 0, 0, 0}, automatic_face_movement_dir = def.rotate and (def.rotate - (pi / 180)) or false, @@ -4285,7 +4290,7 @@ function mobs:register_arrow(name, def) if self.hit_player or self.hit_mob or self.hit_object then - for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.0)) do + for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.5)) do if self.hit_player and player:is_player() then diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 679a28c13d..39af10addd 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -74,6 +74,7 @@ mobs:register_arrow("mobs_mc:fireball", { visual_size = {x = 1, y = 1}, textures = {"mcl_fire_fire_charge.png"}, velocity = 15, + collisionbox = {-.5, -.5, -.5, .5, .5, .5}, hit_player = function(self, player) if rawget(_G, "armor") and armor.last_damage_types then From 90fd65ac665600d6f31bad18f7b5b0a5c53629f4 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sat, 3 Apr 2021 21:09:43 -0400 Subject: [PATCH 34/48] Fix locationless playing --- mods/ENTITIES/mcl_item_entity/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_item_entity/init.lua b/mods/ENTITIES/mcl_item_entity/init.lua index cc7672b7a5..b65585a158 100644 --- a/mods/ENTITIES/mcl_item_entity/init.lua +++ b/mods/ENTITIES/mcl_item_entity/init.lua @@ -106,6 +106,8 @@ minetest.register_globalstep(function(dtime) local name = player:get_player_name() + + local pos = player:get_pos() if tick == true and pool[name] > 0 then minetest.sound_play("item_drop_pickup", { @@ -122,7 +124,7 @@ minetest.register_globalstep(function(dtime) end - local pos = player:get_pos() + local inv = player:get_inventory() local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} From ac87e0604ee673e8b13036fafd1c91d46fbbbcdf Mon Sep 17 00:00:00 2001 From: epCode Date: Sat, 3 Apr 2021 18:39:20 -0700 Subject: [PATCH 35/48] make ghast firing more MC-like --- mods/ENTITIES/mcl_mobs/api.lua | 4 ++++ mods/ENTITIES/mobs_mc/ghast.lua | 9 +++++++++ .../mobs_mc/textures/mobs_mc_ghast_firing.png | Bin 0 -> 1532 bytes 3 files changed, 13 insertions(+) create mode 100644 mods/ENTITIES/mobs_mc/textures/mobs_mc_ghast_firing.png diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index fac8bbeecb..0a038ba134 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2819,6 +2819,10 @@ local do_states = function(self, dtime) local arrow, ent local v = 1 if not self.shoot_arrow then + self.firing = true + minetest.after(1, function() + self.firing = false + end) arrow = minetest.add_entity(p, self.arrow) ent = arrow:get_luaentity() if ent.velocity then diff --git a/mods/ENTITIES/mobs_mc/ghast.lua b/mods/ENTITIES/mobs_mc/ghast.lua index 39af10addd..7aed9395e1 100644 --- a/mods/ENTITIES/mobs_mc/ghast.lua +++ b/mods/ENTITIES/mobs_mc/ghast.lua @@ -63,6 +63,15 @@ mobs:register_mob("mobs_mc:ghast", { makes_footstep_sound = false, instant_death = true, fire_resistant = true, + do_custom = function(self) + if self.firing == true then + self.base_texture = {"mobs_mc_ghast_firing.png"} + self.object:set_properties({textures=self.base_texture}) + else + self.base_texture = {"mobs_mc_ghast.png"} + self.object:set_properties({textures=self.base_texture}) + end + end, }) diff --git a/mods/ENTITIES/mobs_mc/textures/mobs_mc_ghast_firing.png b/mods/ENTITIES/mobs_mc/textures/mobs_mc_ghast_firing.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5b41c32710a811ff75aa6a349bf4944294aaf0 GIT binary patch literal 1532 zcmVGj!2SAnoeDME4ikJU}4pA#amKA0nNSU0>ruVUlH< zMG@oNK%42{*j6_^;#ihEnn`-V$hIUOonL)N7WhNg*VhIBlu`hIqoX5%2>SNzn*o5^ z+gpssVt# zlyY@-Wy-RIloDlG0szXgwC@#Z_5@H}i{Jj4AyS%2I3 zj-5wF_O*&zdoUQ-#KiCWXn%jdHI7@qsw!kz2CcPsZjvOZ>-t3!T!?mech`FWS&$17 zBYceJdEAFQWZMwfWF0{dP)ea`8b~Qyt!vG7nLi|8D96-w9h~=)Ibd&ZuipczszTE= zpq3U*_c0hCNfP9FZe5*#4|&$%;bEsQNfMhFxAlOS&>>kumkNQJZNh+*K&X!^koqQ* zNyjVxb`p%<1qOqG_r8y4oQwLn_I>fl!)seXVmzm+s@_Y!l=UAT9$G?i!Pn)Izlj5A zs}8j!A3ki11Ck{1wu%x}nx&F2i_uwEamoBmZum=WQI2 zWm#+c3MI49;y7cs@bHas`E0{~JRY|cA3A%8LV|sjo4dD@ra7(#fYZ}cOsCV%-05_R z)6-M0)%*DKQrgEq=HR6dAINnFAX;n7lrNeWGg3+{77Lu6onbf};^WsZm`=K|4mRN?NVH!Vm_Z662!NKaSP;m?gcRJ)@Quaa&0E5IEb! z?OoXvkIA~OE#xG3bGHqb(lo_#xr9;*qtOUeRoPfRIXM9UTwY#UbVov^Y3faoLWq{& zS(f4E=EkdxSTsm;eR)Um4xjsT_u-!4V{(6gkI7`xDP~SiPH=g72`MGMfB$YVL1>|z zZf7GPvOdSW8Wc$8$-T@)^*)sa&_<@@B{c){9|KxJRale>8S-x zN%5S&n|nfT9|}p1Irw~fCM+UDh>SGMt<=CVu;6hnx^>m>sO~J i+LS-9Kx4y&huCj4GoCz*uaG4G0000 Date: Sat, 3 Apr 2021 20:12:24 +0300 Subject: [PATCH 36/48] Fix passive mobs despawning According to the wiki most passive mobs do not despawn. The ones that do have already been explicity marked as despawning. --- mods/ENTITIES/mcl_mobs/api.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 0a038ba134..6a8646bd5f 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3741,6 +3741,8 @@ function mobs:register_mob(name, def) local can_despawn if def.can_despawn ~= nil then can_despawn = def.can_despawn +elseif def.spawn_class == "passive" then + can_despawn = false else can_despawn = true end From 49446bbb7b615e75f56e75a9bd2b507f81d6e214 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 4 Apr 2021 12:01:45 +0200 Subject: [PATCH 37/48] Make enderdragon spawn upon exit portal generation --- mods/MAPGEN/mcl_structures/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index f6317bdeb3..6a7f44dfbc 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -313,6 +313,7 @@ mcl_structures.generate_fossil = function(pos, rotation, pr) end mcl_structures.generate_end_exit_portal = function(pos, rot) + minetest.add_entity(vector.add(pos, vector.new(3, 11, 3)), "mobs_mc:enderdragon") local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_exit_portal.mts" return mcl_structures.place_schematic(pos, path, rot or "0", nil, true) end From 598692cf8c2fcbe94c21ab82ef3432665eb74e76 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 4 Apr 2021 12:10:21 +0200 Subject: [PATCH 38/48] Add nil check to prevent crashes with mcl_throwing --- mods/ITEMS/mcl_throwing/register.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_throwing/register.lua b/mods/ITEMS/mcl_throwing/register.lua index 8ef1c73bf1..3d8cc94cfa 100644 --- a/mods/ITEMS/mcl_throwing/register.lua +++ b/mods/ITEMS/mcl_throwing/register.lua @@ -99,7 +99,7 @@ local snowball_on_step = function(self, dtime) local vel = self.object:get_velocity() local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] - + -- Destroy when hitting a solid node if self._lastpos.x~=nil then @@ -203,7 +203,7 @@ local pearl_on_step = function(self, dtime) self.object:remove() -- Activate when hitting a solid node or a plant elseif walkable or nn == "mcl_core:vine" or nn == "mcl_core:deadbush" or minetest.get_item_group(nn, "flower") ~= 0 or minetest.get_item_group(nn, "sapling") ~= 0 or minetest.get_item_group(nn, "plant") ~= 0 or minetest.get_item_group(nn, "mushroom") ~= 0 or not def then - local player = minetest.get_player_by_name(self._thrower) + local player = self._thrower and minetest.get_player_by_name(self._thrower) if player then -- Teleport and hurt player From 1144006cdd77993daf8a1f37e8775d2f077ba06a Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 4 Apr 2021 15:16:06 +0200 Subject: [PATCH 39/48] Add End main island generation --- mods/MAPGEN/mcl_end_island/init.lua | 36 +++++++++++++++++++++++++++++ mods/MAPGEN/mcl_end_island/mod.conf | 4 ++++ 2 files changed, 40 insertions(+) create mode 100644 mods/MAPGEN/mcl_end_island/init.lua create mode 100644 mods/MAPGEN/mcl_end_island/mod.conf diff --git a/mods/MAPGEN/mcl_end_island/init.lua b/mods/MAPGEN/mcl_end_island/init.lua new file mode 100644 index 0000000000..fb062bf771 --- /dev/null +++ b/mods/MAPGEN/mcl_end_island/init.lua @@ -0,0 +1,36 @@ +local noisemap = PerlinNoiseMap({ + offset = 0.5, + scale = 0.5, + spread = {x = 84, y = 84, z = 84}, + seed = minetest.get_mapgen_setting("seed") + 99999, + octaves = 4, + persist = 0.85, +}, {x = 151, y = 30, z = 151}):get_3d_map({x = 0, y = 0, z = 0}) + +local c_end_stone = minetest.get_content_id("mcl_end:end_stone") + +local x_offset = mcl_vars.mg_end_platform_pos.x - 27 +local y_offset = -2 + +minetest.register_on_generated(function(minp, maxp) + if maxp.y < (-27025 + y_offset) or minp.y > (-27000 + y_offset + 4) or maxp.x < (-75 + x_offset) or minp.x > (75 + x_offset) or maxp.z < -75 or minp.z > 75 then + return + end + + local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") + local data = vm:get_data() + local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) + + for idx in area:iter(math.max(minp.x, -75 + x_offset), math.max(minp.y, -27025 + y_offset + 4), math.max(minp.z, -75), math.min(maxp.x, 75 + x_offset), math.min(maxp.y, -27000 + y_offset), math.min(maxp.z, 75)) do + local pos = area:position(idx) + local y = 27025 + pos.y - y_offset + if noisemap[pos.x + 75 - x_offset + 1][y + 1][pos.z + 75 + 1] > (math.abs(1 - y / 25) ^ 2 + math.abs((pos.x - x_offset) / 75) ^ 2 + math.abs(pos.z / 75) ^ 2) then + data[idx] = c_end_stone + end + end + + vm:set_data(data) + vm:calc_lighting() + vm:update_liquids() + vm:write_to_map() +end) diff --git a/mods/MAPGEN/mcl_end_island/mod.conf b/mods/MAPGEN/mcl_end_island/mod.conf new file mode 100644 index 0000000000..90432792ca --- /dev/null +++ b/mods/MAPGEN/mcl_end_island/mod.conf @@ -0,0 +1,4 @@ +name = mcl_end_island +author = Fleckenstein +depends = mcl_mapgen_core, mcl_end +description = Generate the end main island for MCL2 From c5e1734c1c8796a8dd857ef5bd7025eae8e42624 Mon Sep 17 00:00:00 2001 From: Saku Laesvuori Date: Sun, 4 Apr 2021 23:24:28 +0300 Subject: [PATCH 40/48] Make horse taming more similar to minecraft (#1249) In minecraft horses are tamed by trying to ride them and they can also be fed to speed up taming. This commit implements both of those features and disables the old and broken taming system for horses. --- mods/ENTITIES/mobs_mc/horse.lua | 74 +++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/horse.lua b/mods/ENTITIES/mobs_mc/horse.lua index 4e588855f4..1c2df41f35 100644 --- a/mods/ENTITIES/mobs_mc/horse.lua +++ b/mods/ENTITIES/mobs_mc/horse.lua @@ -157,8 +157,29 @@ local horse = { self._regentimer = 0 end - -- if driver present allow control of horse - if self.driver then + -- Some weird human is riding. Buck them off? + if self.driver and not self.tamed and self.buck_off_time <= 0 then + if math.random() < 0.2 then + mobs.detach(self.driver, {x = 1, y = 0, z = 1}) + -- TODO bucking animation + else + -- Nah, can't be bothered. Think about it again in one second + self.buck_off_time = 20 + end + end + + -- Tick the timer for trying to buck the player off + if self.buck_off_time then + if self.driver then + self.buck_off_time = self.buck_off_time - 1 + else + -- Player isn't riding anymore so no need to count + self.buck_off_time = nil + end + end + + -- if driver present and horse has a saddle allow control of horse + if self.driver and self._saddle then mobs.drive(self, "walk", "stand", false, dtime) @@ -191,6 +212,50 @@ local horse = { local item = clicker:get_wielded_item() local iname = item:get_name() local heal = 0 + + -- Taming + self.temper = self.temper or (math.random(1,100)) + + if not self.tamed then + local temper_increase = 0 + + -- Feeding, intentionally not using mobs:feed_tame because horse taming is + -- different and more complicated + if (iname == mobs_mc.items.sugar) then + temper_increase = 3 + elseif (iname == mobs_mc.items.wheat) then + temper_increase = 3 + elseif (iname == mobs_mc.items.apple) then + temper_increase = 3 + elseif (iname == mobs_mc.items.golden_carrot) then + temper_increase = 5 + elseif (iname == mobs_mc.items.golden_apple) then + temper_increase = 10 + + -- Trying to ride + elseif not self.driver then + self.object:set_properties({stepheight = 1.1}) + mobs.attach(self, clicker) + self.buck_off_time = 40 -- TODO how long does it take in minecraft? + if self.temper > 100 then + self.tamed = true -- NOTE taming can only be finished by riding the horse + if not self.owner or self.owner == "" then + self.owner = clicker:get_player_name() + end + end + temper_increase = 5 + + -- Clicking on the horse while riding ==> unmount + elseif self.driver and self.driver == clicker then + mobs.detach(clicker, {x = 1, y = 0, z = 1}) + end + + -- If nothing happened temper_increase = 0 and addition does nothing + self.temper = self.temper + temper_increase + + return + end + if can_breed(self.name) then -- Breed horse with golden apple or golden carrot if (iname == mobs_mc.items.golden_apple) then @@ -202,7 +267,8 @@ local horse = { return end end - -- Feed/tame with anything else + -- Feed with anything else + -- TODO heal amounts don't work if (iname == mobs_mc.items.sugar) then heal = 1 elseif (iname == mobs_mc.items.wheat) then @@ -212,7 +278,7 @@ local horse = { elseif (iname == mobs_mc.items.hay_bale) then heal = 20 end - if heal > 0 and mobs:feed_tame(self, clicker, heal, false, true) then + if heal > 0 and mobs:feed_tame(self, clicker, heal, false, false) then return end From 8bb8a0e3b29d2779d8c811a8a549608941fde345 Mon Sep 17 00:00:00 2001 From: Tianyang Zhang Date: Sun, 4 Apr 2021 15:40:10 -0700 Subject: [PATCH 41/48] Fix large and small slimes and magma cubes not dropping xp and loot --- mods/ENTITIES/mobs_mc/slime+magma_cube.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua index 7c21fb8124..fd1f92bb49 100644 --- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua +++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua @@ -51,7 +51,6 @@ local spawn_children_on_die = function(child_mob, children_count, spawn_distance end end, children, self.attack) end - return true end end From 93684baa86adcdf3db4b0a13e219428b6bf1a344 Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Apr 2021 16:32:58 -0700 Subject: [PATCH 42/48] Make Blazes have more Mc-likeness ;) --- mods/ENTITIES/mobs_mc/blaze.lua | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 20fa86a1f3..30255612ae 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -75,6 +75,59 @@ mobs:register_mob("mobs_mc:blaze", { fear_height = 0, glow = 14, fire_resistant = true, + do_custom = function(self) + for _,obj in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 1.2)) do + if obj:is_player() or not obj:is_player() and obj:get_luaentity()._cmi_is_mob then + mcl_burning.set_on_fire(obj, 5) + end + end + local pos = self.object:get_pos() + minetest.add_particle({ + pos = {x=pos.x+math.random(-0.7,0.7)*math.random()/2,y=pos.y+math.random(0.7,1.2),z=pos.z+math.random(-0.7,0.7)*math.random()/2}, + velocity = {x=0, y=math.random(1,1), z=0}, + expirationtime = math.random(), + size = math.random(1, 4), + collisiondetection = true, + vertical = false, + texture = "mcl_particles_smoke_anim.png^[colorize:#2c2c2c:255", + animation = { + type = "vertical_frames", + aspect_w = 8, + aspect_h = 8, + length = 2.05, + }, + }) + minetest.add_particle({ + pos = {x=pos.x+math.random(-0.7,0.7)*math.random()/2,y=pos.y+math.random(0.7,1.2),z=pos.z+math.random(-0.7,0.7)*math.random()/2}, + velocity = {x=0, y=math.random(1,1), z=0}, + expirationtime = math.random(), + size = math.random(1, 4), + collisiondetection = true, + vertical = false, + texture = "mcl_particles_smoke_anim.png^[colorize:#424242:255", + animation = { + type = "vertical_frames", + aspect_w = 8, + aspect_h = 8, + length = 2.05, + }, + }) + minetest.add_particle({ + pos = {x=pos.x+math.random(-0.7,0.7)*math.random()/2,y=pos.y+math.random(0.7,1.2),z=pos.z+math.random(-0.7,0.7)*math.random()/2}, + velocity = {x=0, y=math.random(1,1), z=0}, + expirationtime = math.random(), + size = math.random(1, 4), + collisiondetection = true, + vertical = false, + texture = "mcl_particles_smoke_anim.png^[colorize:#0f0f0f:255", + animation = { + type = "vertical_frames", + aspect_w = 8, + aspect_h = 8, + length = 2.05, + }, + }) + end, }) mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) From a6f0ad13a0592277a86d3ce3301f57751771c63b Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Apr 2021 16:46:44 -0700 Subject: [PATCH 43/48] Make blaze burning better --- mods/ENTITIES/mobs_mc/blaze.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/blaze.lua b/mods/ENTITIES/mobs_mc/blaze.lua index 30255612ae..fbffa79200 100644 --- a/mods/ENTITIES/mobs_mc/blaze.lua +++ b/mods/ENTITIES/mobs_mc/blaze.lua @@ -76,10 +76,8 @@ mobs:register_mob("mobs_mc:blaze", { glow = 14, fire_resistant = true, do_custom = function(self) - for _,obj in pairs(minetest.get_objects_inside_radius(self.object:get_pos(), 1.2)) do - if obj:is_player() or not obj:is_player() and obj:get_luaentity()._cmi_is_mob then - mcl_burning.set_on_fire(obj, 5) - end + if self.state == "attack" and vector.distance(self.object:get_pos(), self.attack:get_pos()) < 1.2 then + mcl_burning.set_on_fire(self.attack, 5) end local pos = self.object:get_pos() minetest.add_particle({ From 5fc3bb11ef9f8ea7d3198ba7a776f5b742b196f8 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 5 Apr 2021 04:54:58 +0400 Subject: [PATCH 44/48] [tools] Add simple python script to entirely reset End dimension generated before and get fresh one, improved (but please stop server & backup world before) --- tools/remove_end.py | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tools/remove_end.py diff --git a/tools/remove_end.py b/tools/remove_end.py new file mode 100644 index 0000000000..3b73e55753 --- /dev/null +++ b/tools/remove_end.py @@ -0,0 +1,46 @@ +world_name = "world" +path_to_map_sqlite = "../../../worlds/" + world_name + "/map.sqlite" + +import sqlite3, sys + +try: + conn = sqlite3.connect(path_to_map_sqlite) +except Error as e: + print(e) + sys.exit() + +def unsignedToSigned(i, max_positive): + if i < max_positive: + return i + else: + return i - 2*max_positive + +cursor = conn.cursor() +cursor.execute("SELECT pos FROM blocks") +poses = cursor.fetchall() +end_blocks = [] +for i0 in (poses): + i = int(i0[0]) + blockpos = i + x = unsignedToSigned(i % 4096, 2048) + i = int((i - x) / 4096) + y = unsignedToSigned(i % 4096, 2048) + i = int((i - y) / 4096) + z = unsignedToSigned(i % 4096, 2048) + + node_pos_y = y * 16 + if node_pos_y > -28811 and node_pos_y + 15 < -67: + end_blocks.append(blockpos) + +if len(end_blocks) < 1: + print ("End blocks not found") + sys.exit() + +counter = 0 +for blockpos in end_blocks: + print("Deleting ", blockpos) + cursor.execute("DELETE FROM blocks WHERE pos=" + str(blockpos)) + counter += 1 +conn.commit() + +print(counter, " block(s) deleted") From e407ad2254fc2159bc5364480e2f802670d1ab05 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Mon, 5 Apr 2021 09:25:03 +0200 Subject: [PATCH 45/48] Fix #1447 --- mods/PLAYER/mcl_playerplus/init.lua | 44 +++++++++++++++++------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index 767b275e40..52c87a5147 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -86,17 +86,23 @@ minetest.register_globalstep(function(dtime) time = time + dtime - -- Update jump status immediately since we need this info in real time. - -- WARNING: This section is HACKY as hell since it is all just based on heuristics. for _,player in pairs(get_connected_players()) do + + --[[ + _ _ _ + __ _ _ __ (_)_ __ ___ __ _| |_(_) ___ _ __ ___ + / _` | '_ \| | '_ ` _ \ / _` | __| |/ _ \| '_ \/ __| + | (_| | | | | | | | | | | (_| | |_| | (_) | | | \__ \ + \__,_|_| |_|_|_| |_| |_|\__,_|\__|_|\___/|_| |_|___/ + + ]]-- + local controls = player:get_player_control() - name = player:get_player_name() - + local name = player:get_player_name() local meta = player:get_meta() - - local player_velocity = player:get_velocity() or player:get_player_velocity() - + local parent = player:get_attach() local wielded = player:get_wielded_item() + local player_velocity = player:get_velocity() or player:get_player_velocity() -- controls head bone local pitch = - degrees(player:get_look_vertical()) @@ -114,7 +120,7 @@ minetest.register_globalstep(function(dtime) player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch+90,-30,pitch * -1 * .35)) player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3.5,5.785,0), vector.new(pitch+90,43,pitch * .35)) -- when punching - elseif controls.LMB and player:get_attach() == nil then + elseif controls.LMB and not parent then player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(pitch,0,0)) player:set_bone_position("Arm_Left_Pitch_Control", vector.new(3,5.785,0), vector.new(0,0,0)) -- when holding an item. @@ -127,38 +133,40 @@ minetest.register_globalstep(function(dtime) player:set_bone_position("Arm_Right_Pitch_Control", vector.new(-3,5.785,0), vector.new(0,0,0)) end - if controls.sneak and player:get_attach() == nil then + if parent then + local parent_yaw = degrees(parent:get_yaw()) + player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) + player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch, -limit_vel_yaw(yaw, parent_yaw) + parent_yaw, 0)) + player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0,0,0)) + elseif controls.sneak then -- controls head pitch when sneaking player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch+36,0,0)) -- sets eye height, and nametag color accordingly player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 0, g = 225 }}) -- sneaking body conrols player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0,0,0)) - elseif get_item_group(mcl_playerinfo[name].node_head, "water") ~= 0 and player:get_attach() == nil and is_sprinting(name) == true then + elseif get_item_group(mcl_playerinfo[name].node_head, "water") ~= 0 and is_sprinting(name) == true then -- set head pitch and yaw when swimming player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch+90-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0)) -- sets eye height, and nametag color accordingly player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) -- control body bone when swimming player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(degrees(dir_to_pitch(player_velocity)) - 90,-player_vel_yaw + yaw + 180,0)) - - elseif player:get_attach() == nil then + else -- sets eye height, and nametag color accordingly player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch, player_vel_yaw - yaw, 0)) player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0)) - else - local attached = player:get_attach(parent) - local attached_yaw = degrees(attached:get_yaw()) - player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }}) - player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch, -limit_vel_yaw(yaw, attached_yaw) + attached_yaw, 0)) - player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0,0,0)) end + -- Update jump status immediately since we need this info in real time. + -- WARNING: This section is HACKY as hell since it is all just based on heuristics. + if mcl_playerplus_internal[name].jump_cooldown > 0 then mcl_playerplus_internal[name].jump_cooldown = mcl_playerplus_internal[name].jump_cooldown - dtime end + if controls.jump and mcl_playerplus_internal[name].jump_cooldown <= 0 then pos = player:get_pos() From 28402ca6637118e2a86207899d28ffc0634aba26 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 5 Apr 2021 10:16:56 +0200 Subject: [PATCH 46/48] store tool wield scale in a global var --- mods/CORE/mcl_init/init.lua | 3 +++ mods/ITEMS/mcl_tools/init.lua | 2 +- mods/ITEMS/mcl_tools/mod.conf | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index 014a30d1e3..066e555dff 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -21,6 +21,9 @@ mcl_vars.gui_bg_img = "background9[1,1;1,1;mcl_base_textures_background9.png;tru -- Legacy mcl_vars.inventory_header = "" +-- Tool wield size +mcl_vars.tool_wield_scale = { x = 1.8, y = 1.8, z = 1 } + -- Mapgen variables local mg_name = minetest.get_mapgen_setting("mg_name") local minecraft_height_limit = 256 diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index bc6bed09f2..b50782ec4c 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -70,7 +70,7 @@ local shovel_use = S("To turn a grass block into a grass path, hold the shovel i local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.") local shears_use = S("To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.") -local wield_scale = { x = 1.8, y = 1.8, z = 1 } +local wield_scale = mcl_vars.tool_wield_scale -- Picks minetest.register_tool("mcl_tools:pick_wood", { diff --git a/mods/ITEMS/mcl_tools/mod.conf b/mods/ITEMS/mcl_tools/mod.conf index f40547c26b..d2d93197b7 100644 --- a/mods/ITEMS/mcl_tools/mod.conf +++ b/mods/ITEMS/mcl_tools/mod.conf @@ -1,2 +1,2 @@ name = mcl_tools -depends = mcl_sounds +depends = mcl_sounds, mcl_init From beb2484224e346390c4db9708df207a5101eb918 Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 5 Apr 2021 13:50:26 +0400 Subject: [PATCH 47/48] Merge https://git.minetest.land/MineClone2/MineClone2/pulls/1366 --- mods/ENTITIES/mcl_mobs/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 6a8646bd5f..6e932ed5e5 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -4351,7 +4351,7 @@ end -- make explosion with protection and tnt mod check function mobs:boom(self, pos, strength, fire) - + self.object:remove() if mod_explosions then if mobs_griefing and not minetest.is_protected(pos, "") then mcl_explosions.explode(pos, strength, { drop_chance = 1.0, fire = fire }, self.object) From 339e3e2792972f2b0c120e20326b714f4b15d801 Mon Sep 17 00:00:00 2001 From: AFCMS Date: Mon, 5 Apr 2021 14:32:48 +0200 Subject: [PATCH 48/48] fix some tools not using right var --- mods/ITEMS/mcl_bows/bow.lua | 4 ++-- mods/ITEMS/mcl_bows/mod.conf | 2 +- mods/ITEMS/mcl_farming/hoes.lua | 10 +++++----- mods/ITEMS/mcl_farming/mod.conf | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_bows/bow.lua b/mods/ITEMS/mcl_bows/bow.lua index 87820071de..45912384ea 100644 --- a/mods/ITEMS/mcl_bows/bow.lua +++ b/mods/ITEMS/mcl_bows/bow.lua @@ -133,7 +133,7 @@ S("The speed and damage of the arrow increases the longer you charge. The regula _doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."), _doc_items_durability = BOW_DURABILITY, inventory_image = "mcl_bows_bow.png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, stack_max = 1, range = 4, -- Trick to disable digging as well @@ -198,7 +198,7 @@ for level=0, 2 do description = S("Bow"), _doc_items_create_entry = false, inventory_image = "mcl_bows_bow_"..level..".png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, stack_max = 1, range = 0, -- Pointing range to 0 to prevent punching with bow :D groups = {not_in_creative_inventory=1, not_in_craft_guide=1, bow=1, enchantability=1}, diff --git a/mods/ITEMS/mcl_bows/mod.conf b/mods/ITEMS/mcl_bows/mod.conf index cfb4234740..79ae42436d 100644 --- a/mods/ITEMS/mcl_bows/mod.conf +++ b/mods/ITEMS/mcl_bows/mod.conf @@ -1,6 +1,6 @@ name = mcl_bows author = Arcelmi description = This mod adds bows and arrows for MineClone 2. -depends = controls, mcl_particles, mcl_enchanting +depends = controls, mcl_particles, mcl_enchanting, mcl_init optional_depends = awards, mcl_achievements, mcl_core, mcl_mobitems, playerphysics, doc, doc_identifier, mesecons_button diff --git a/mods/ITEMS/mcl_farming/hoes.lua b/mods/ITEMS/mcl_farming/hoes.lua index a45b382ed6..db470b9992 100644 --- a/mods/ITEMS/mcl_farming/hoes.lua +++ b/mods/ITEMS/mcl_farming/hoes.lua @@ -68,7 +68,7 @@ minetest.register_tool("mcl_farming:hoe_wood", { _doc_items_usagehelp = hoe_usagehelp, _doc_items_hidden = false, inventory_image = "farming_tool_woodhoe.png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, on_place = hoe_on_place_function(uses.wood), groups = { tool=1, hoe=1, enchantability=15 }, tool_capabilities = { @@ -111,7 +111,7 @@ minetest.register_tool("mcl_farming:hoe_stone", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_stonehoe.png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, on_place = hoe_on_place_function(uses.stone), groups = { tool=1, hoe=1, enchantability=5 }, tool_capabilities = { @@ -149,7 +149,7 @@ minetest.register_tool("mcl_farming:hoe_iron", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_steelhoe.png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, on_place = hoe_on_place_function(uses.iron), groups = { tool=1, hoe=1, enchantability=14 }, tool_capabilities = { @@ -195,7 +195,7 @@ minetest.register_tool("mcl_farming:hoe_gold", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_goldhoe.png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, on_place = hoe_on_place_function(uses.gold), groups = { tool=1, hoe=1, enchantability=22 }, tool_capabilities = { @@ -242,7 +242,7 @@ minetest.register_tool("mcl_farming:hoe_diamond", { _doc_items_longdesc = hoe_longdesc, _doc_items_usagehelp = hoe_usagehelp, inventory_image = "farming_tool_diamondhoe.png", - wield_scale = { x = 1.8, y = 1.8, z = 1 }, + wield_scale = mcl_vars.tool_wield_scale, on_place = hoe_on_place_function(uses.diamond), groups = { tool=1, hoe=1, enchantability=10 }, tool_capabilities = { diff --git a/mods/ITEMS/mcl_farming/mod.conf b/mods/ITEMS/mcl_farming/mod.conf index 9ab36c39f1..fe4bc15640 100644 --- a/mods/ITEMS/mcl_farming/mod.conf +++ b/mods/ITEMS/mcl_farming/mod.conf @@ -1,3 +1,3 @@ name = mcl_farming -depends = mcl_core, mcl_sounds, mcl_wool, mcl_torches, mcl_weather, mobs_mc, mcl_colors +depends = mcl_core, mcl_sounds, mcl_wool, mcl_torches, mcl_weather, mobs_mc, mcl_colors, mcl_init optional_depends = mcl_armor, doc