Merge branch 'master' into mapgen_issue
|
@ -41,7 +41,18 @@ local function check_object(obj)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_visual_size(obj)
|
local function get_visual_size(obj)
|
||||||
return obj:is_player() and {x = 1, y = 1, z = 1} or obj:get_luaentity()._old_visual_size or obj:get_properties().visual_size
|
if not obj or obj:is_player() then
|
||||||
|
return boat_visual_size
|
||||||
|
end
|
||||||
|
local luaentity = obj:get_luaentity()
|
||||||
|
if luaentity then
|
||||||
|
if luaentity._old_visual_size then
|
||||||
|
return luaentity._old_visual_size
|
||||||
|
else
|
||||||
|
return boat_visual_size
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return obj:get_properties().visual_size
|
||||||
end
|
end
|
||||||
|
|
||||||
local function set_attach(boat)
|
local function set_attach(boat)
|
||||||
|
|
|
@ -43,6 +43,11 @@ mobs.float = function(self)
|
||||||
self.object:set_acceleration({x=0, y=0, z=0})
|
self.object:set_acceleration({x=0, y=0, z=0})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.jump_only then
|
||||||
|
self.object:set_acceleration({x=acceleration.x, y=-5, z=acceleration.z})
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local current_velocity = self.object:get_velocity()
|
local current_velocity = self.object:get_velocity()
|
||||||
|
|
||||||
local new_velocity_addition = DEFAULT_FLOAT_SPEED - current_velocity.y
|
local new_velocity_addition = DEFAULT_FLOAT_SPEED - current_velocity.y
|
||||||
|
|
|
@ -21,14 +21,14 @@ local psdef= {
|
||||||
}
|
}
|
||||||
|
|
||||||
local function check_player(player)
|
local function check_player(player)
|
||||||
local name=player:get_player_name(name)
|
local name=player:get_player_name(player)
|
||||||
if mcl_worlds.has_dust(player:get_pos()) and not mcl_weather.nether_dust.particlespawners[name] then
|
if mcl_worlds.has_dust(player:get_pos()) and not mcl_weather.nether_dust.particlespawners[name] then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
mcl_weather.nether_dust.add_particlespawners = function(player)
|
mcl_weather.nether_dust.add_particlespawners = function(player)
|
||||||
local name=player:get_player_name(name)
|
local name=player:get_player_name(player)
|
||||||
mcl_weather.nether_dust.particlespawners[name]={}
|
mcl_weather.nether_dust.particlespawners[name]={}
|
||||||
psdef.playername = name
|
psdef.playername = name
|
||||||
psdef.attached = player
|
psdef.attached = player
|
||||||
|
@ -40,7 +40,7 @@ mcl_weather.nether_dust.add_particlespawners = function(player)
|
||||||
end
|
end
|
||||||
|
|
||||||
mcl_weather.nether_dust.delete_particlespawners = function(player)
|
mcl_weather.nether_dust.delete_particlespawners = function(player)
|
||||||
local name=player:get_player_name(name)
|
local name=player:get_player_name(player)
|
||||||
if mcl_weather.nether_dust.particlespawners[name] then
|
if mcl_weather.nether_dust.particlespawners[name] then
|
||||||
for i=1,3 do
|
for i=1,3 do
|
||||||
minetest.delete_particlespawner(mcl_weather.nether_dust.particlespawners[name][i])
|
minetest.delete_particlespawner(mcl_weather.nether_dust.particlespawners[name][i])
|
||||||
|
|
|
@ -177,7 +177,5 @@ minetest.register_on_joinplayer(function(player)
|
||||||
return_fields(player, "enchanting_lapis")
|
return_fields(player, "enchanting_lapis")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
if minetest.is_creative_enabled("") then
|
dofile(minetest.get_modpath(minetest.get_current_modname()).."/creative.lua")
|
||||||
dofile(minetest.get_modpath(minetest.get_current_modname()).."/creative.lua")
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name = mcl_inventory
|
name = mcl_inventory
|
||||||
author = BlockMen
|
author = BlockMen
|
||||||
description = Adds the player inventory and creative inventory.
|
description = Adds the player inventory and creative inventory.
|
||||||
depends = mcl_init, mcl_formspec, mcl_enchanting
|
depends = mcl_init, mcl_formspec, mcl_enchanting, mcl_commands
|
||||||
optional_depends = mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting, mcl_craftguide, mcl_player
|
optional_depends = mcl_armor, mcl_brewing, mcl_potions, mcl_enchanting, mcl_craftguide, mcl_player
|
||||||
|
|
|
@ -73,7 +73,7 @@ local ARROW_ENTITY={
|
||||||
_stuckin=nil, --Position of node in which arow is stuck.
|
_stuckin=nil, --Position of node in which arow is stuck.
|
||||||
_shooter=nil, -- ObjectRef of player or mob who shot it
|
_shooter=nil, -- ObjectRef of player or mob who shot it
|
||||||
_is_arrow = true,
|
_is_arrow = true,
|
||||||
|
_in_player = false,
|
||||||
_viscosity=0, -- Viscosity of node the arrow is currently in
|
_viscosity=0, -- Viscosity of node the arrow is currently in
|
||||||
_deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession
|
_deflection_cooloff=0, -- Cooloff timer after an arrow deflection, to prevent many deflections in quick succession
|
||||||
}
|
}
|
||||||
|
@ -439,6 +439,7 @@ function ARROW_ENTITY.get_staticdata(self)
|
||||||
is_critical = self._is_critical,
|
is_critical = self._is_critical,
|
||||||
stuck = self._stuck,
|
stuck = self._stuck,
|
||||||
stuckin = self._stuckin,
|
stuckin = self._stuckin,
|
||||||
|
stuckin_player = self._in_player,
|
||||||
}
|
}
|
||||||
if self._stuck then
|
if self._stuck then
|
||||||
-- If _stucktimer is missing for some reason, assume the maximum
|
-- If _stucktimer is missing for some reason, assume the maximum
|
||||||
|
@ -453,21 +454,10 @@ function ARROW_ENTITY.get_staticdata(self)
|
||||||
return minetest.serialize(out)
|
return minetest.serialize(out)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function remove_arrow_on_joinplayer(staticdata, self)
|
|
||||||
if not staticdata.activated then
|
|
||||||
staticdata.activated = true
|
|
||||||
else
|
|
||||||
self.object:remove()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function ARROW_ENTITY.on_activate(self, staticdata, dtime_s)
|
function ARROW_ENTITY.on_activate(self, staticdata, dtime_s)
|
||||||
self._time_in_air = 1.0
|
self._time_in_air = 1.0
|
||||||
self._in_player = false
|
|
||||||
local data = minetest.deserialize(staticdata)
|
local data = minetest.deserialize(staticdata)
|
||||||
if data then
|
if data then
|
||||||
remove_arrow_on_joinplayer(data, self)
|
|
||||||
|
|
||||||
self._stuck = data.stuck
|
self._stuck = data.stuck
|
||||||
if data.stuck then
|
if data.stuck then
|
||||||
if data.stuckstarttime then
|
if data.stuckstarttime then
|
||||||
|
@ -498,10 +488,23 @@ function ARROW_ENTITY.on_activate(self, staticdata, dtime_s)
|
||||||
self._shooter = shooter
|
self._shooter = shooter
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if data.stuckin_player then
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
self.object:set_armor_groups({ immortal = 1 })
|
self.object:set_armor_groups({ immortal = 1 })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
minetest.register_on_respawnplayer(function(player)
|
||||||
|
for _, obj in pairs(player:get_children()) do
|
||||||
|
local ent = obj:get_luaentity()
|
||||||
|
if ent and ent.name and string.find(ent.name, "mcl_bows:arrow_entity") then
|
||||||
|
obj:remove()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
minetest.register_entity("mcl_bows:arrow_entity", ARROW_ENTITY)
|
minetest.register_entity("mcl_bows:arrow_entity", ARROW_ENTITY)
|
||||||
|
|
||||||
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then
|
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_mobitems") then
|
||||||
|
|
|
@ -186,8 +186,12 @@ function mcl_buckets.register_liquid(def)
|
||||||
|
|
||||||
local undernode = get_node(pointed_thing.under)
|
local undernode = get_node(pointed_thing.under)
|
||||||
local abovenode = get_node(pointed_thing.above)
|
local abovenode = get_node(pointed_thing.above)
|
||||||
local buildable1 = minetest.registered_nodes[undernode.name] and minetest.registered_nodes[undernode.name].buildable_to
|
local name1, name2 = undernode.name, abovenode.name
|
||||||
local buildable2 = minetest.registered_nodes[abovenode.name] and minetest.registered_nodes[abovenode.name].buildable_to
|
local regnode1, regnode2 = minetest.registered_nodes[name1], minetest.registered_nodes[name2]
|
||||||
|
|
||||||
|
local buildable1 = regnode1 and (regnode1.buildable_to or regnode1.groups.cauldron == 1)
|
||||||
|
local buildable2 = regnode2 and (regnode2.buildable_to or regnode2.groups.cauldron == 1)
|
||||||
|
|
||||||
if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip
|
if not buildable1 and not buildable2 then return itemstack end --if both nodes aren't buildable_to, skip
|
||||||
|
|
||||||
if buildable1 then
|
if buildable1 then
|
||||||
|
|
|
@ -5,10 +5,11 @@ local mod_doc = minetest.get_modpath("doc")
|
||||||
minetest.register_node("mcl_core:glass", {
|
minetest.register_node("mcl_core:glass", {
|
||||||
description = S("Glass"),
|
description = S("Glass"),
|
||||||
_doc_items_longdesc = S("A decorative and mostly transparent block."),
|
_doc_items_longdesc = S("A decorative and mostly transparent block."),
|
||||||
drawtype = "glasslike",
|
drawtype = "glasslike_framed_optional",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
tiles = {"default_glass.png"},
|
tiles = {"default_glass.png", "default_glass_detail.png"},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
paramtype2 = "glasslikeliquidlevel",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
groups = {handy=1, glass=1, building_block=1, material_glass=1},
|
groups = {handy=1, glass=1, building_block=1, material_glass=1},
|
||||||
|
@ -39,10 +40,11 @@ function mcl_core.add_stained_glass(desc, recipeitem, colorgroup, color)
|
||||||
_doc_items_create_entry = create_entry,
|
_doc_items_create_entry = create_entry,
|
||||||
_doc_items_entry_name = entry_name,
|
_doc_items_entry_name = entry_name,
|
||||||
_doc_items_longdesc = longdesc,
|
_doc_items_longdesc = longdesc,
|
||||||
drawtype = "glasslike",
|
drawtype = "glasslike_framed_optional",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
tiles = {"mcl_core_glass_"..color..".png"},
|
tiles = {"mcl_core_glass_"..color..".png", "mcl_core_glass_"..color.."_detail.png"},
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
paramtype2 = "glasslikeliquidlevel",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true,
|
use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "blend" or true,
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
|
|
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.6 KiB |
|
@ -0,0 +1,80 @@
|
||||||
|
local S = minetest.get_translator(minetest.get_current_modname())
|
||||||
|
|
||||||
|
local gamemode_ids = {
|
||||||
|
survival = 1,
|
||||||
|
creative = 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
local id_to_gamemode = {}
|
||||||
|
for gamemode, id in pairs(gamemode_ids) do
|
||||||
|
id_to_gamemode[id] = gamemode
|
||||||
|
end
|
||||||
|
|
||||||
|
local creative_mode = 'creative'
|
||||||
|
|
||||||
|
local storage = minetest.get_mod_storage()
|
||||||
|
|
||||||
|
local player_to_gamemode_id = minetest.deserialize(storage:get_string("player_to_gamemode_id") or "return {}") or {}
|
||||||
|
minetest.register_on_shutdown(function()
|
||||||
|
storage:set_string("player_to_gamemode_id", minetest.serialize(player_to_gamemode_id))
|
||||||
|
end)
|
||||||
|
|
||||||
|
local core_is_creative_enabled = minetest.is_creative_enabled
|
||||||
|
|
||||||
|
minetest.is_creative_enabled = function(name)
|
||||||
|
local id = player_to_gamemode_id[name]
|
||||||
|
if id then
|
||||||
|
local gamemode = id_to_gamemode[id]
|
||||||
|
if gamemode then
|
||||||
|
return gamemode == creative_mode
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return core_is_creative_enabled(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function handle_gamemode_command(player_name, new_gamemode)
|
||||||
|
player_to_gamemode_id[player_name] = gamemode_ids[new_gamemode]
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.registered_chatcommands["gamemode"] then
|
||||||
|
minetest.unregister_chatcommand("gamemode")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_gamemode_param()
|
||||||
|
local param
|
||||||
|
local i = 0
|
||||||
|
for gamemode, _ in pairs(gamemode_ids) do
|
||||||
|
if i == 0 then
|
||||||
|
param = "("
|
||||||
|
else
|
||||||
|
param = param .. " | "
|
||||||
|
end
|
||||||
|
i = i + 1
|
||||||
|
param = param .. gamemode
|
||||||
|
end
|
||||||
|
if i > 0 then
|
||||||
|
param = param .. ") "
|
||||||
|
end
|
||||||
|
return param
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_chatcommand("gamemode", {
|
||||||
|
params = S("@1[<name>]", get_gamemode_param()),
|
||||||
|
description = S("Set game mode for player or yourself"),
|
||||||
|
privs = {server=true},
|
||||||
|
func = function(name, param)
|
||||||
|
if (param == "") then
|
||||||
|
return false, S("Error: No game mode specified.")
|
||||||
|
end
|
||||||
|
if (gamemode_ids[param]) then
|
||||||
|
handle_gamemode_command(name, param)
|
||||||
|
else
|
||||||
|
local new_gamemode, player_name = string.match(param, "^([%a]+) ([%a%d_-]+)$")
|
||||||
|
if not new_gamemode or not gamemode_ids[new_gamemode] or not player_name then
|
||||||
|
return false, S("Invalid usage, see /help @1", "gamemode")
|
||||||
|
end
|
||||||
|
handle_gamemode_command(player_name, new_gamemode)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
})
|
|
@ -1,5 +1,6 @@
|
||||||
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
||||||
|
|
||||||
|
dofile(modpath.."/gamemode.lua")
|
||||||
dofile(modpath.."/kill.lua")
|
dofile(modpath.."/kill.lua")
|
||||||
dofile(modpath.."/setblock.lua")
|
dofile(modpath.."/setblock.lua")
|
||||||
dofile(modpath.."/seed.lua")
|
dofile(modpath.."/seed.lua")
|
||||||
|
|
|
@ -10,7 +10,7 @@ Kill player or yourself=Spieler oder sich selbst töten
|
||||||
Can use /say=Kann „/say“ benutzen
|
Can use /say=Kann „/say“ benutzen
|
||||||
<message>=<Nachricht>
|
<message>=<Nachricht>
|
||||||
Send a message to every player=Nachricht an alle Spieler senden
|
Send a message to every player=Nachricht an alle Spieler senden
|
||||||
Invalid usage, see /help say.=Falsche Benutzung, siehe „/help say“.
|
Invalid usage, see /help @1.=Falsche Benutzung, siehe „/help @1“.
|
||||||
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <Node-Bezeichner>
|
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <Node-Bezeichner>
|
||||||
Set node at given position=Node (Block) an der gegebenen Position platzieren
|
Set node at given position=Node (Block) an der gegebenen Position platzieren
|
||||||
Invalid node=Unültiger Node
|
Invalid node=Unültiger Node
|
||||||
|
@ -21,3 +21,6 @@ Ban list: @1=Bannliste: @1
|
||||||
Show who is logged on=Anzeigen, wer eingeloggt ist
|
Show who is logged on=Anzeigen, wer eingeloggt ist
|
||||||
Displays the world seed=Den Seed der Welt anzeigen
|
Displays the world seed=Den Seed der Welt anzeigen
|
||||||
Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt!
|
Only peaceful mobs allowed!=Nur friedliche Mobs erlaubt!
|
||||||
|
@1[<name>]=
|
||||||
|
Set game mode for player or yourself=
|
||||||
|
Error: No game mode specified.=
|
||||||
|
|
|
@ -21,3 +21,6 @@ Ban list: @1=Lista de baneados: @1
|
||||||
Show who is logged on=Mostrar quién ha iniciado sesión
|
Show who is logged on=Mostrar quién ha iniciado sesión
|
||||||
Displays the world seed=Muestra la semilla del mundo
|
Displays the world seed=Muestra la semilla del mundo
|
||||||
Only peaceful mobs allowed!=¡Solo se permiten animales pacíficos!
|
Only peaceful mobs allowed!=¡Solo se permiten animales pacíficos!
|
||||||
|
@1[<name>]=
|
||||||
|
Set game mode for player or yourself=
|
||||||
|
Error: No game mode specified.=
|
||||||
|
|
|
@ -10,7 +10,7 @@ Kill player or yourself=Tuez un joueur ou vous-même
|
||||||
Can use /say=Peut utiliser /say
|
Can use /say=Peut utiliser /say
|
||||||
<message>=<message>
|
<message>=<message>
|
||||||
Send a message to every player=Envoyez un message à chaque joueur
|
Send a message to every player=Envoyez un message à chaque joueur
|
||||||
Invalid usage, see /help say.=Utilisation non valide, voir /help say.
|
Invalid usage, see /help @1.=Utilisation non valide, voir /help @1.
|
||||||
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <NodeString>
|
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <NodeString>
|
||||||
Set node at given position=Placer le noeud à une position donnée
|
Set node at given position=Placer le noeud à une position donnée
|
||||||
Invalid node=Noeud non valide
|
Invalid node=Noeud non valide
|
||||||
|
@ -21,3 +21,6 @@ Ban list: @1=Liste d'interdiction: @1
|
||||||
Show who is logged on=Afficher qui est connecté
|
Show who is logged on=Afficher qui est connecté
|
||||||
Displays the world seed=Affiche la graine du monde
|
Displays the world seed=Affiche la graine du monde
|
||||||
Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisées!
|
Only peaceful mobs allowed!=Seuls les mobs pacifiques sont autorisées!
|
||||||
|
@1[<name>]=
|
||||||
|
Set game mode for player or yourself=
|
||||||
|
Error: No game mode specified.=
|
||||||
|
|
|
@ -10,7 +10,7 @@ Kill player or yourself=Zabij gracza lub siebie
|
||||||
Can use /say=Może używać /say
|
Can use /say=Może używać /say
|
||||||
<message>=<wiadomość>
|
<message>=<wiadomość>
|
||||||
Send a message to every player=Wyślij wiadomość do każdego gracza
|
Send a message to every player=Wyślij wiadomość do każdego gracza
|
||||||
Invalid usage, see /help say.=Niepoprawne użyciu, zobacz /help say.
|
Invalid usage, see /help @1.=Niepoprawne użyciu, zobacz /help @1.
|
||||||
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <ID Node'a>
|
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <ID Node'a>
|
||||||
Set node at given position=Ustaw node w danej pozycji
|
Set node at given position=Ustaw node w danej pozycji
|
||||||
Invalid node=Niepoprawny node
|
Invalid node=Niepoprawny node
|
||||||
|
@ -21,3 +21,6 @@ Ban list: @1=Lista zbanowanych: @1
|
||||||
Show who is logged on=Pokaż zalogowanych
|
Show who is logged on=Pokaż zalogowanych
|
||||||
Displays the world seed=Wyświetl ziarno świata
|
Displays the world seed=Wyświetl ziarno świata
|
||||||
Only peaceful mobs allowed!=Tylko pokojowe moby dozwolone!
|
Only peaceful mobs allowed!=Tylko pokojowe moby dozwolone!
|
||||||
|
@1[<name>]=
|
||||||
|
Set game mode for player or yourself=
|
||||||
|
Error: No game mode specified.=
|
||||||
|
|
|
@ -10,7 +10,7 @@ Kill player or yourself=Убить игрока или себя
|
||||||
Can use /say=Можно использовать /say
|
Can use /say=Можно использовать /say
|
||||||
<message>=<сообщение>
|
<message>=<сообщение>
|
||||||
Send a message to every player=Отправляет сообщение всем игрокам
|
Send a message to every player=Отправляет сообщение всем игрокам
|
||||||
Invalid usage, see /help say.=Недопустимое использование, см. /help say.
|
Invalid usage, see /help @1.=Недопустимое использование, см. /help @1.
|
||||||
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <СтрокаУзла>
|
<X>,<Y>,<Z> <NodeString>=<X>,<Y>,<Z> <СтрокаУзла>
|
||||||
Set node at given position=Устанавливает узел в заданной позиции
|
Set node at given position=Устанавливает узел в заданной позиции
|
||||||
Invalid node=Неправильный узел
|
Invalid node=Неправильный узел
|
||||||
|
@ -21,3 +21,6 @@ Ban list: @1=Бан-лист: @1
|
||||||
Show who is logged on=Показывает, кто подключён
|
Show who is logged on=Показывает, кто подключён
|
||||||
Displays the world seed=Показывает значение зерна мира (seed)
|
Displays the world seed=Показывает значение зерна мира (seed)
|
||||||
Only peaceful mobs allowed!=Включены только мирные мобы!
|
Only peaceful mobs allowed!=Включены только мирные мобы!
|
||||||
|
@1[<name>]=@1[<имя>]
|
||||||
|
Set game mode for player or yourself=Задаёт режим игры для игрока или для вас
|
||||||
|
Error: No game mode specified.=Ошибка: Режим игры не указан.
|
||||||
|
|
|
@ -10,7 +10,7 @@ Kill player or yourself=
|
||||||
Can use /say=
|
Can use /say=
|
||||||
<message>=
|
<message>=
|
||||||
Send a message to every player=
|
Send a message to every player=
|
||||||
Invalid usage, see /help say.=
|
Invalid usage, see /help @1.=
|
||||||
<X>,<Y>,<Z> <NodeString>=
|
<X>,<Y>,<Z> <NodeString>=
|
||||||
Set node at given position=
|
Set node at given position=
|
||||||
Invalid node=
|
Invalid node=
|
||||||
|
@ -21,3 +21,6 @@ Ban list: @1=
|
||||||
Show who is logged on=
|
Show who is logged on=
|
||||||
Displays the world seed=
|
Displays the world seed=
|
||||||
Only peaceful mobs allowed!=
|
Only peaceful mobs allowed!=
|
||||||
|
@1[<name>]=
|
||||||
|
Set game mode for player or yourself=
|
||||||
|
Error: No game mode specified.=
|
||||||
|
|
|
@ -10,7 +10,7 @@ minetest.register_chatcommand("say", {
|
||||||
privs = {announce=true},
|
privs = {announce=true},
|
||||||
func = function(name, param)
|
func = function(name, param)
|
||||||
if not param then
|
if not param then
|
||||||
return false, S("Invalid usage, see /help say.")
|
return false, S("Invalid usage, see /help @1.", "say")
|
||||||
end
|
end
|
||||||
minetest.chat_send_all(("["..name.."] "..param))
|
minetest.chat_send_all(("["..name.."] "..param))
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -6,7 +6,6 @@ local get_connected_players = minetest.get_connected_players
|
||||||
local get_node = minetest.get_node
|
local get_node = minetest.get_node
|
||||||
local get_objects_inside_radius = minetest.get_objects_inside_radius
|
local get_objects_inside_radius = minetest.get_objects_inside_radius
|
||||||
local get_player_by_name = minetest.get_player_by_name
|
local get_player_by_name = minetest.get_player_by_name
|
||||||
local is_creative_enabled = minetest.is_creative_enabled
|
|
||||||
local kick_player = minetest.kick_player
|
local kick_player = minetest.kick_player
|
||||||
local set_node = minetest.set_node
|
local set_node = minetest.set_node
|
||||||
|
|
||||||
|
@ -63,7 +62,7 @@ local function update_player(player_object)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function check_player(name)
|
local function check_player(name)
|
||||||
if is_creative_enabled(name) then return end
|
if minetest.is_creative_enabled(name) then return end
|
||||||
local data = joined_players[name]
|
local data = joined_players[name]
|
||||||
if not data then return end
|
if not data then return end
|
||||||
if not data[0] then return end
|
if not data[0] then return end
|
||||||
|
|
|
@ -552,7 +552,8 @@ mcl_damage.register_modifier(function(obj, damage, reason)
|
||||||
node = minetest.get_node(pos)
|
node = minetest.get_node(pos)
|
||||||
end
|
end
|
||||||
if node then
|
if node then
|
||||||
if minetest.registered_nodes[node.name].walkable then
|
local def = minetest.registered_nodes[node.name]
|
||||||
|
if not def or def.walkable then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if minetest.get_item_group(node.name, "water") ~= 0 then
|
if minetest.get_item_group(node.name, "water") ~= 0 then
|
||||||
|
|