diff --git a/.gitmodules b/.gitmodules index 1918e5bd..4b06972d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -147,3 +147,6 @@ [submodule "mods/playereffects"] path = mods/playereffects url = https://github.com/sys4-fr/playereffects.git +[submodule "mods/item_drop"] + path = mods/item_drop + url = https://github.com/tacotexmex/item_drop.git diff --git a/minetest.conf b/minetest.conf index f00f8b61..17e0a9ec 100755 --- a/minetest.conf +++ b/minetest.conf @@ -60,29 +60,29 @@ curl_timeout = 15000 ### MOVEMENT MODIFICATIONS ### ############################## # Slightly decreased compared to minetest_next. -movement_acceleration_default = 2.4 +#movement_acceleration_default = 2.4 # Same acceleration in air and on the ground, to fix some movement glitches. Also is easier to play. -movement_acceleration_air = 1.2 +#movement_acceleration_air = 1.2 # Almost instant acceleration in fast mode for more control. -movement_acceleration_fast = 24 +#movement_acceleration_fast = 24 # Walking is 20 % faster than in minetest_game. Makes playing without the "fast" privilege less boring. -movement_speed_walk = 4.8 +#movement_speed_walk = 4.8 # Half the speed of walking, just like the animation. -movement_speed_crouch = 2.4 +#movement_speed_crouch = 2.4 # 5 times faster than walking. -movement_speed_fast = 24 +#movement_speed_fast = 24 # Makes climbing speed faster than rising in the water. Also makes ladders more useful. -movement_speed_climb = 4.8 +#movement_speed_climb = 4.8 # Faster movement in liquids. Jumping at the water surface also speeds up swimming. -movement_liquid_fluidity = 1.6 (default = 1) +#movement_liquid_fluidity = 1.6 (default = 1) # Ralentissement à la surface de l'eau -movement_liquid_fluidity_smooth = 0.5 +#movement_liquid_fluidity_smooth = 0.5 # Vitesse à laquelle le joueur coule -movement_liquid_sink = 15 +#movement_liquid_sink = 15 # Slightly less gravity. -movement_gravity = 9.5 +#movement_gravity = 9.5 # Jump height slightly reduced. -movement_speed_jump = 6.5 +#movement_speed_jump = 6.5 # Emplacement du static spawn point static_spawnpoint = 144, 25, 261 # Emplacment du static spawn pour le nether @@ -195,3 +195,11 @@ secure.trusted_mods = irc, snow, stacktraceplus ## Player Anim ## player_model_version = default_character_v1 + +# item_drop +enable_item_drop = false +enable_item_pickup_key = false +enable_item_pickup = true +item_pickup_radius = 0.75 +item_pickup_keytype = Sneak + diff --git a/mods/item_drop b/mods/item_drop new file mode 160000 index 00000000..962d0a38 --- /dev/null +++ b/mods/item_drop @@ -0,0 +1 @@ +Subproject commit 962d0a3889db609c349e3e99a58104bbb22f4c93 diff --git a/mods/item_drop/README.txt b/mods/item_drop/README.txt deleted file mode 100755 index fe43054d..00000000 --- a/mods/item_drop/README.txt +++ /dev/null @@ -1,42 +0,0 @@ -===ITEM_DROP MOD for MINETEST-C55=== -by PilzAdam - -Introduction: -This mod adds Minecraft like drop/pick up of items to Minetest. - -How to install: -Unzip the archive an place it in minetest-base-directory/mods/minetest/ -if you have a windows client or a linux run-in-place client. If you have -a linux system-wide instalation place it in ~/.minetest/mods/minetest/. -If you want to install this mod only in one world create the folder -worldmods/ in your worlddirectory. -For further information or help see: -http://wiki.minetest.com/wiki/Installing_Mods - -How to use the mod: -Just install it an everything works. - -For developers: -You dont have to use get_drops() anymore because of changes in the -builtin files of minetest. - -License: -Sourcecode: WTFPL (see below) -Sound: WTFPL (see below) - -See also: -http://minetest.net/ - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git a/mods/item_drop/init.lua b/mods/item_drop/init.lua deleted file mode 100755 index 9e54705a..00000000 --- a/mods/item_drop/init.lua +++ /dev/null @@ -1,184 +0,0 @@ -item_drop = {} -local enable_damage = minetest.setting_getbool("enable_damage") -local creative_mode = minetest.setting_getbool("creative_mode") -local TICK_UPDATE = 0.1 - - --- Following edits by gravgun - -item_drop.drop_callbacks = {} -item_drop.pickup_callbacks = {} - --- on_drop(dropper, drop_entity, itemstack) -function item_drop.add_drop_callback(on_drop) - table.insert(item_drop.drop_callbacks, on_drop) -end - --- on_pickup(picker, itemstack) -function item_drop.add_pickup_callback(on_pickup) - table.insert(item_drop.pickup_callbacks, on_pickup) -end - --- Idea is to have a radius pickup range around the player, whatever the height --- We need to have a radius that will at least contain 1 node distance at the player's feet --- Using simple trigonometry, we get that we need a radius of --- sqrt(pickup_range² + player_half_height²) -local pickup_range = 1.3 -local pickup_range_squared = pickup_range*pickup_range -local player_half_height = 0.9 -local scan_range = math.sqrt(player_half_height*player_half_height + pickup_range_squared) --- Node drops are insta-pickup, everything else (player drops) are not -local delay_before_playerdrop_pickup = 1 --- Time in which the node comes to the player -local pickup_duration = 0.1 --- Little treshold so the items aren't already on the player's middle -local pickup_inv_duration = 1/pickup_duration*0.7 - -local function tick() - local tstamp = minetest.get_us_time() - for _,player in ipairs(minetest.get_connected_players()) do - if player:get_hp() > 0 or not enable_damage then - local pos = player:getpos() - pos.y = pos.y + player_half_height - local inv = player:get_inventory() - - if inv then - for _,object in ipairs(minetest.get_objects_inside_radius(pos, scan_range)) do - local luaEnt = object:get_luaentity() - if luaEnt and luaEnt.name == "__builtin:item" then - local ticky = luaEnt.item_drop_min_tstamp - if ticky then - if tstamp >= ticky then - luaEnt.item_drop_min_tstamp = nil - end - elseif not luaEnt.item_drop_nopickup then - -- Point-line distance computation, heavily simplified since the wanted line, - -- being the player, is completely upright (no variation on X or Z) - local pos2 = object:getpos() - -- No sqrt, avoid useless computation - -- (just take the radius, compare it to the square of what you want) - -- Pos order doesn't really matter, we're squaring the result - -- (but don't change it, we use the cached values afterwards) - local dX = pos.x-pos2.x - local dZ = pos.z-pos2.z - local playerDistance = dX*dX+dZ*dZ - if playerDistance <= pickup_range_squared then - local itemStack = ItemStack(luaEnt.itemstring) - if inv:room_for_item("main", itemStack) then - local vec = {x=dX, y=pos.y-pos2.y, z=dZ} - vec.x = vec.x*pickup_inv_duration - vec.y = vec.y*pickup_inv_duration - vec.z = vec.z*pickup_inv_duration - object:setvelocity(vec) - luaEnt.physical_state = false - luaEnt.object:set_properties({ - physical = false - }) - -- Mark the object as already picking up - luaEnt.item_drop_nopickup = true - - minetest.after(pickup_duration, function() - local lua = luaEnt - if object == nil or lua == nil or lua.itemstring == nil then - return - end - if inv:room_for_item("main", itemStack) then - inv:add_item("main", itemStack) - if luaEnt.itemstring ~= "" then - minetest.sound_play("item_drop_pickup", {pos = pos, gain = 0.3, max_hear_distance = 8}) - end - luaEnt.itemstring = "" - object:remove() - for i, cb in ipairs(item_drop.pickup_callbacks) do - cb(player, itemstack) - end - else - object:setvelocity({x = 0,y = 0,z = 0}) - luaEnt.physical_state = true - luaEnt.object:set_properties({ - physical = true - }) - luaEnt.item_drop_nopickup = nil - end - end) - end - end - end - end - end - end - end - end - minetest.after(TICK_UPDATE, tick) -end - -local mt_handle_node_drops = minetest.handle_node_drops -function minetest.handle_node_drops(pos, drops, digger) - if digger and digger.is_fake_player then -- Pipeworks' wielders - mt_handle_node_drops(pos, drops, digger) - return - end - local inv - if creative_mode and digger and digger:is_player() then - inv = digger:get_inventory() - end - for _,item in ipairs(drops) do - local count, name - if type(item) == "string" then - count = 1 - name = item - else - count = item:get_count() - name = item:get_name() - end - if not inv or not inv:contains_item("main", ItemStack(name)) then - for i=1,count do - local obj - local x = math.random(1, 5) - if math.random(1,2) == 1 then x = -x end - - local z = math.random(1, 5) - if math.random(1,2) == 1 then z = -z end - - obj = minetest.spawn_item(pos, name) - if obj ~= nil then - obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) - end - end - end - end -end - -local mt_item_drop = minetest.item_drop -function minetest.item_drop(itemstack, dropper, pos) - if dropper and dropper.is_player then - local v = dropper:get_look_dir() - local p = {x=pos.x, y=pos.y+1.2, z=pos.z} - local cs = itemstack:get_count() - if dropper:get_player_control().sneak then - cs = 1 - end - local item = itemstack:take_item(cs) - local obj = core.add_item(p, item) - if obj then - v.x = v.x*2 - v.y = v.y*2 + 2 - v.z = v.z*2 - obj:setvelocity(v) - obj:get_luaentity().item_drop_min_tstamp = minetest.get_us_time() + delay_before_playerdrop_pickup * 1000000 - for i, cb in ipairs(item_drop.drop_callbacks) do - cb(dropper, obj, itemstack) - end - end - else - core.add_item(pos, itemstack) - end - return itemstack -end - -if minetest.setting_getbool("log_mods") then - minetest.log("action", "[item_drop] item_drop overriden: " .. tostring(mt_item_drop) .. " " .. tostring(minetest.item_drop)) - minetest.log("action", "[item_drop] loaded.") -end - -tick() diff --git a/mods/item_drop/sounds/item_drop_pickup.1.ogg b/mods/item_drop/sounds/item_drop_pickup.1.ogg deleted file mode 100755 index 6b335ead..00000000 Binary files a/mods/item_drop/sounds/item_drop_pickup.1.ogg and /dev/null differ diff --git a/mods/item_drop/sounds/item_drop_pickup.2.ogg b/mods/item_drop/sounds/item_drop_pickup.2.ogg deleted file mode 100755 index 7b7e1698..00000000 Binary files a/mods/item_drop/sounds/item_drop_pickup.2.ogg and /dev/null differ diff --git a/mods/item_drop/sounds/item_drop_pickup.3.ogg b/mods/item_drop/sounds/item_drop_pickup.3.ogg deleted file mode 100755 index 1245ff58..00000000 Binary files a/mods/item_drop/sounds/item_drop_pickup.3.ogg and /dev/null differ diff --git a/mods/item_drop/sounds/item_drop_pickup.4.ogg b/mods/item_drop/sounds/item_drop_pickup.4.ogg deleted file mode 100755 index 1ffa2c16..00000000 Binary files a/mods/item_drop/sounds/item_drop_pickup.4.ogg and /dev/null differ