update castles, cool_trees, plantlife, basic_materials, bees, bonemeal,
homedecor, currency, digilines, farming redo, item_drop, maptools, mesecons, moreblocks, moreores, moretrees, pipeworks, signs_lib, stained_glass, technic, titanium, unified_inventory, unifieddyes,and worldedit. added Tenplus1's ambience mod
22
ambience/README.md
Normal file
@ -0,0 +1,22 @@
|
||||
Ambience Redo mod for Minetest
|
||||
by TenPlus1
|
||||
|
||||
Based on Immersive Sounds .36 mod by Neuromancer and optimized to run on servers with new fire sounds added when Fire Redo mod is detected...
|
||||
|
||||
- 0.1 - Initial release
|
||||
- 0.2 - Code change and new water sounds added
|
||||
- 0.3 - Works with Fire Redo mod to provide fire sounds
|
||||
- 0.4 - Code optimized
|
||||
- 0.5 - Changed to kilbiths smaller sound files and removed canadianloon1, adjusted timings
|
||||
- 0.6 - Using new find_nodes_in_area features to count nodes and speed up execution (thanks everamzah)
|
||||
- 0.7 - Code tweaks and added Jungle sounds for day and night time
|
||||
- 0.8 - Override default water sounds for 0.4.14 dev and above, add separate gain for each sound
|
||||
- 0.9 - Plays music files on server or local client when found at midnight, files to be named "ambience_music.1.ogg" changing number each up to 9.
|
||||
- 1.0 - Added icecrack sound when walking on snow/ice flows, also tidied code
|
||||
- 1.1 - Using newer functions, Minetest 0.4.16 and above needed to run
|
||||
- 1.2 - Added PlayerPlus compatibility, removed fire sounds, added volume changes
|
||||
- 1.3 - Added API for use with other mods, code rewrite
|
||||
- 1.4 - Re-ordered water sets to come before fire and lava, day/night sounds play when leaves around and above ground
|
||||
- 1.5 - Added 'flame_sound' and fire redo check, code tidy and tweak, added ephemeral flag for background sounds.
|
||||
|
||||
Code license: MIT
|
91
ambience/api.txt
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
Ambience Lite API
|
||||
=================
|
||||
|
||||
This short guide will show you how to add sound sets into ambience mod for the
|
||||
api to use and play sounds accordingly. Please note that the order they are
|
||||
added will affect sound checks, so high priority sets first.
|
||||
|
||||
|
||||
Function Usage
|
||||
==============
|
||||
|
||||
|
||||
Adding Sound Set
|
||||
----------------
|
||||
|
||||
ambience.add_set(set_name, def)
|
||||
'set_name' contains the name of the sound set to add
|
||||
'def' contains the following:
|
||||
'frequency' how often the sound set is played (1 to 1000) higher is more
|
||||
'nodes' contains a table of nodes needed for checks
|
||||
'sound_check(def)' function to check if sounds can be played, def contains:
|
||||
'player' player userdata
|
||||
'pos' position of player
|
||||
'tod' time of day
|
||||
'totals' totals for each node e.g. def.totals["default:sand"]
|
||||
'positions' position data for every node found
|
||||
'head_node' name of node at player head level
|
||||
'feet_node' nameof node at player foot level
|
||||
|
||||
This will let you add a set or sounds with the frequency it's used and check
|
||||
function for it to play. If ephemeral is true then no handler will be used and sound will be played in background alongside other sounds.
|
||||
|
||||
e.g.
|
||||
|
||||
ambience.add_set("windy", {
|
||||
frequency = 500,
|
||||
nodes = {"default:sand"},
|
||||
sounds = {
|
||||
{name = "wind", length = 9, gain = 0.3},
|
||||
{name = "desertwind", length = 8, gain = 0.3},
|
||||
{name = "crow", length = 3, ephemeral = true},
|
||||
},
|
||||
sound_check = function(def)
|
||||
local number = totals["default:sand"] or 0 -- yep, can also be nil
|
||||
if number > 20 then
|
||||
return "windy", 0.2 -- return set to play and optional gain volume
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
Getting Sound Set
|
||||
-----------------
|
||||
|
||||
ambience.get_set(set_name)
|
||||
|
||||
This returns a table containing all of the set information like example above.
|
||||
|
||||
e.g.
|
||||
|
||||
local myset = ambience.get_set("windy") -- returns everything inside {} above.
|
||||
|
||||
|
||||
Deleting Sound Set
|
||||
------------------
|
||||
|
||||
ambience.del_set(set_name)
|
||||
|
||||
This will remove a sound set from the list.
|
||||
|
||||
e.g.
|
||||
|
||||
ambience.del_set("windy")
|
||||
|
||||
|
||||
Additional Commands
|
||||
===================
|
||||
|
||||
Two volume commands have been added to set sound and music volume:
|
||||
|
||||
/svol (0.1 to 1.0)
|
||||
/mvol (0.1 to 1.0) -- 0 can be used to stop music from playing when it begins
|
||||
|
||||
|
||||
Music
|
||||
=====
|
||||
|
||||
Music can be stored in the sounds folder either on server or locally and so long
|
||||
as it is named 'ambience_music.1', 'ambience_music.2' etc. then it will select
|
||||
a song randomly at midnight and play player.
|
3
ambience/depends.txt
Normal file
@ -0,0 +1,3 @@
|
||||
default
|
||||
fire?
|
||||
playerplus?
|
1
ambience/description.txt
Normal file
@ -0,0 +1 @@
|
||||
Adds realistic sound effects into your world.
|
327
ambience/init.lua
Normal file
@ -0,0 +1,327 @@
|
||||
|
||||
ambience = {}
|
||||
|
||||
-- override default water sounds
|
||||
minetest.override_item("default:water_source", { sounds = {} })
|
||||
minetest.override_item("default:water_flowing", { sounds = {} })
|
||||
minetest.override_item("default:river_water_source", { sounds = {} })
|
||||
minetest.override_item("default:river_water_flowing", { sounds = {} })
|
||||
|
||||
-- settings
|
||||
local SOUNDVOLUME = 1.0
|
||||
local MUSICVOLUME = 1.0
|
||||
local play_music = minetest.settings:get_bool("ambience_music") ~= false
|
||||
local pplus = minetest.get_modpath("playerplus")
|
||||
local radius = 6
|
||||
local playing = {}
|
||||
local sound_sets = {} -- all the sounds and their settings
|
||||
local sound_set_order = {} -- needed because pairs loops randomly through tables
|
||||
local set_nodes = {} -- all the nodes needed for sets
|
||||
|
||||
|
||||
-- global functions
|
||||
|
||||
-- add set to list
|
||||
ambience.add_set = function(set_name, def)
|
||||
|
||||
if not set_name or not def then
|
||||
return
|
||||
end
|
||||
|
||||
sound_sets[set_name] = {
|
||||
frequency = def.frequency or 50,
|
||||
sounds = def.sounds,
|
||||
sound_check = def.sound_check,
|
||||
nodes = def.nodes
|
||||
}
|
||||
|
||||
-- add set name to the sound_set_order table
|
||||
local can_add = true
|
||||
|
||||
for i = 1, #sound_set_order do
|
||||
|
||||
if sound_set_order[i] == set_name then
|
||||
can_add = false
|
||||
end
|
||||
end
|
||||
|
||||
if can_add then
|
||||
table.insert(sound_set_order, set_name)
|
||||
end
|
||||
|
||||
-- add any missing nodes to the set_nodes table
|
||||
if def.nodes then
|
||||
|
||||
for i = 1, #def.nodes do
|
||||
|
||||
can_add = def.nodes[i]
|
||||
|
||||
for j = 1, #set_nodes do
|
||||
|
||||
if def.nodes[i] == set_nodes[j] then
|
||||
can_add = false
|
||||
end
|
||||
end
|
||||
|
||||
if can_add then
|
||||
table.insert(set_nodes, can_add)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- return set from list using name
|
||||
ambience.get_set = function(set_name)
|
||||
|
||||
if sound_sets[set_name] then
|
||||
return sound_sets[set_name]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- remove set from list
|
||||
ambience.del_set = function(set_name)
|
||||
|
||||
sound_sets[set_name] = nil
|
||||
|
||||
local can_del = false
|
||||
|
||||
for i = 1, #sound_set_order do
|
||||
|
||||
if sound_set_order[i] == set_name then
|
||||
can_del = i
|
||||
end
|
||||
end
|
||||
|
||||
if can_del then
|
||||
table.remove(sound_set_order, can_del)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- plays music and selects sound set
|
||||
local get_ambience = function(player, tod, name)
|
||||
|
||||
-- play server or local music if available
|
||||
if play_music and playing[name] then
|
||||
|
||||
-- play at midnight
|
||||
if tod >= 0.0 and tod <= 0.01 then
|
||||
|
||||
if not playing[name].music then
|
||||
|
||||
playing[name].music = minetest.sound_play("ambience_music", {
|
||||
to_player = player:get_player_name(),
|
||||
gain = MUSICVOLUME
|
||||
})
|
||||
end
|
||||
|
||||
elseif tod > 0.1 and playing[name].music then
|
||||
|
||||
playing[name].music = nil
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- get foot and head level nodes at player position
|
||||
local pos = player:get_pos()
|
||||
|
||||
pos.y = pos.y + 1.4 -- head level
|
||||
|
||||
local nod_head = pplus and playerplus[name].nod_head or minetest.get_node(pos).name
|
||||
|
||||
pos.y = pos.y - 1.2 -- foot level
|
||||
|
||||
local nod_feet = pplus and playerplus[name].nod_feet or minetest.get_node(pos).name
|
||||
|
||||
pos.y = pos.y - 0.2 -- reset pos
|
||||
|
||||
-- get all set nodes around player
|
||||
local ps, cn = minetest.find_nodes_in_area(
|
||||
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
|
||||
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, set_nodes)
|
||||
|
||||
-- loop through sets in order and choose first that meets it's conditions
|
||||
for n = 1, #sound_set_order do
|
||||
|
||||
local set = sound_sets[ sound_set_order[n] ]
|
||||
|
||||
if set and set.sound_check then
|
||||
|
||||
-- pass settings to function for condition check
|
||||
local set_name, gain = set.sound_check({
|
||||
player = player,
|
||||
pos = pos,
|
||||
tod = tod,
|
||||
totals = cn,
|
||||
positions = ps,
|
||||
head_node = nod_head,
|
||||
feet_node = nod_feet
|
||||
})
|
||||
|
||||
-- if conditions met return set name and gain value
|
||||
if set_name then
|
||||
return set_name, gain
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local timer = 0
|
||||
local random = math.random
|
||||
|
||||
-- players routine
|
||||
minetest.register_globalstep(function(dtime)
|
||||
|
||||
-- one second timer
|
||||
timer = timer + dtime
|
||||
if timer < 1 then return end
|
||||
timer = 0
|
||||
|
||||
-- get list of players and set some variables
|
||||
local players = minetest.get_connected_players()
|
||||
local player_name, number, chance, ambience, handler, ok
|
||||
local tod = minetest.get_timeofday()
|
||||
|
||||
-- loop through players
|
||||
for n = 1, #players do
|
||||
|
||||
player_name = players[n]:get_player_name()
|
||||
|
||||
--local t1 = os.clock()
|
||||
|
||||
local set_name, MORE_GAIN = get_ambience(players[n], tod, player_name)
|
||||
|
||||
--print(string.format("elapsed time: %.4f\n", os.clock() - t1))
|
||||
|
||||
ok = true -- everything starts off ok
|
||||
|
||||
-- stop current sound if another set active or gain changed
|
||||
if playing[player_name]
|
||||
and playing[player_name].handler then
|
||||
|
||||
if playing[player_name].set ~= set_name
|
||||
or (playing[player_name].set == set_name
|
||||
and playing[player_name].gain ~= MORE_GAIN) then
|
||||
|
||||
--print ("-- change stop", set_name, playing[player_name].old_handler)
|
||||
|
||||
minetest.sound_stop(playing[player_name].old_handler)
|
||||
|
||||
playing[player_name].set = nil
|
||||
playing[player_name].handler = nil
|
||||
playing[player_name].gain = nil
|
||||
else
|
||||
ok = false -- sound set still playing, skip new sound
|
||||
end
|
||||
end
|
||||
|
||||
-- set random chance and reset seed
|
||||
chance = random(1, 1000)
|
||||
|
||||
math.randomseed(tod + chance)
|
||||
|
||||
-- if chance is lower than set frequency then select set
|
||||
if ok and set_name and chance < sound_sets[set_name].frequency then
|
||||
|
||||
-- choose random sound from set
|
||||
number = random(#sound_sets[set_name].sounds)
|
||||
ambience = sound_sets[set_name].sounds[number]
|
||||
|
||||
-- play sound
|
||||
handler = minetest.sound_play(ambience.name, {
|
||||
to_player = player_name,
|
||||
gain = ((ambience.gain or 0.3) + (MORE_GAIN or 0)) * SOUNDVOLUME,
|
||||
pitch = ambience.pitch or 1.0
|
||||
}, ambience.ephemeral)
|
||||
|
||||
--print ("playing... " .. ambience.name .. " (" .. chance .. " < "
|
||||
-- .. sound_sets[set_name].frequency .. ") @ ", MORE_GAIN, handler)
|
||||
|
||||
-- only continue if sound playing returns handler
|
||||
if handler then
|
||||
|
||||
--print("-- current handler", handler)
|
||||
|
||||
-- set what player is currently listening to
|
||||
playing[player_name] = {
|
||||
set = set_name, gain = MORE_GAIN,
|
||||
handler = handler, old_handler = handler
|
||||
}
|
||||
|
||||
-- set timer to stop sound
|
||||
minetest.after(ambience.length, function()
|
||||
|
||||
--print("-- after", set_name, handler)
|
||||
|
||||
-- make sure we are stopping same sound we started
|
||||
if playing[player_name]
|
||||
and playing[player_name].handler
|
||||
and playing[player_name].old_handler == handler then
|
||||
|
||||
--print("-- timed stop", set_name, handler)
|
||||
|
||||
--minetest.sound_stop(playing[player_name].handler)
|
||||
minetest.sound_stop(handler)
|
||||
|
||||
-- reset player variables and backup handler
|
||||
playing[player_name] = {
|
||||
set = nil, gain = nil,
|
||||
handler = nil, old_handler = nil
|
||||
}
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
-- sound volume command
|
||||
minetest.register_chatcommand("svol", {
|
||||
params = "<svol>",
|
||||
description = "set sound volume (0.1 to 1.0)",
|
||||
privs = {server = true},
|
||||
|
||||
func = function(name, param)
|
||||
|
||||
SOUNDVOLUME = tonumber(param) or SOUNDVOLUME
|
||||
|
||||
if SOUNDVOLUME < 0.1 then SOUNDVOLUME = 0.1 end
|
||||
if SOUNDVOLUME > 1.0 then SOUNDVOLUME = 1.0 end
|
||||
|
||||
return true, "Sound volume set to " .. SOUNDVOLUME
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- music volume command (0 stops music)
|
||||
minetest.register_chatcommand("mvol", {
|
||||
params = "<mvol>",
|
||||
description = "set music volume (0.1 to 1.0)",
|
||||
privs = {server = true},
|
||||
|
||||
func = function(name, param)
|
||||
|
||||
MUSICVOLUME = tonumber(param) or MUSICVOLUME
|
||||
|
||||
-- ability to stop music just as it begins
|
||||
if MUSICVOLUME == 0 and playing[name].music then
|
||||
minetest.sound_stop(playing[name].music)
|
||||
end
|
||||
|
||||
if MUSICVOLUME < 0.1 then MUSICVOLUME = 0.1 end
|
||||
if MUSICVOLUME > 1.0 then MUSICVOLUME = 1.0 end
|
||||
|
||||
return true, "Music volume set to " .. MUSICVOLUME
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- load default sound sets
|
||||
dofile(minetest.get_modpath("ambience") .. "/soundsets.lua")
|
||||
|
||||
|
||||
print("[MOD] Ambience Lite loaded")
|
1
ambience/mod.conf
Normal file
@ -0,0 +1 @@
|
||||
name = ambience
|
BIN
ambience/screenshot.png
Normal file
After Width: | Height: | Size: 51 KiB |
2
ambience/settingtypes.txt
Normal file
@ -0,0 +1,2 @@
|
||||
# If enabled will play a random music file from ./minetest/sounds at midnight
|
||||
ambience_music (Ambience music) bool true
|
105
ambience/sounds/SoundLicenses.txt
Normal file
@ -0,0 +1,105 @@
|
||||
|
||||
-----------Sound Lic:
|
||||
--Nightime Sound, Recorded by Mike Koenig, License: Attribution 3.0 http://soundbible.com/951-Nightime.html
|
||||
--Crickets At Night Sound, License: Attribution 3.0 | Recorded by Mike Koenig |http://soundbible.com/365-Crickets-At-Night.html
|
||||
|
||||
--Medium Pack Of Wolves Howling, License: Public Domain | Recorded by fws.gov, http://soundbible.com/277-Medium-Pack-Of-Wolves-Howling.html
|
||||
|
||||
--Horned Owl Sound, License: Attribution 3.0 | Recorded by Mike Koenig , http://soundbible.com/1851-Horned-Owl.html
|
||||
--Bats In Cave Sound, License: Attr-Noncommercial 3.0 | Recorded by Mike Koenig , http://soundbible.com/1939-Bats-In-Cave.html
|
||||
|
||||
--Spooky Water Drops Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/380-Spooky-Water-Drops.html
|
||||
|
||||
|
||||
-- Single Water Droplet Sound, License: Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/384-Single-Water-Droplet.html
|
||||
|
||||
--HollowWind, Black Boe, Creative Commons 0 License, http://www.freesound.org/people/Black%20Boe/sounds/22331/
|
||||
|
||||
--drippingwater*.ogg sounds: CC0, Dripping Water Mod, by kddekadenz, http://minetest.net/forum/viewtopic.php?id=1688
|
||||
|
||||
--best cardinal bird: License: Attribution 3.0 | Recorded by PsychoBird, http://soundbible.com/1515-Best-Cardinal-Bird.html
|
||||
|
||||
--birdsongnl: the Attribution License, HerbertBoland, http://www.freesound.org/people/HerbertBoland/sounds/28312/ (end)
|
||||
|
||||
--robin2: Attribution License, reinsamba, http://www.freesound.org/people/reinsamba/sounds/32479/ (end)
|
||||
|
||||
--Craw.WAV, Attribution License, inchadney, http://www.freesound.org/people/inchadney/sounds/52450/
|
||||
|
||||
--bluejay.wav, Creative Commons 0 License, UncleSigmund, http://www.freesound.org/people/UncleSigmund/sounds/42382/
|
||||
|
||||
--scuba1*.ogg- digifishmusic, Attribution License, http://www.freesound.org/people/digifishmusic/sounds/45521/
|
||||
|
||||
--Underwater Pool - Attribution 3.0 | Recorded by Mike Koenig, http://soundbible.com/1660-Underwater-Pool.html
|
||||
|
||||
--dolphin_screaming - Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/161691/
|
||||
|
||||
--dolphins - Attribution Noncommercial License, acclivity, http://www.freesound.org/people/acclivity/sounds/13691/
|
||||
|
||||
ComboWind uses:
|
||||
--wind-in-the-trees -Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/16995/
|
||||
--drygrassInWind- Creative Commons 0 License, felix.blume, http://www.freesound.org/people/felix.blume/sounds/146436/
|
||||
|
||||
--Splash: Attribution 3.0 | Recorded by BlastwaveFx.com, http://soundbible.com/546-Fish-Splashing.html
|
||||
|
||||
--small_waterfall Attribution License, volivieri, http://www.freesound.org/people/volivieri/sounds/38390/
|
||||
|
||||
--Lake_Waves_2*, Attribution License, Benboncan, http://www.freesound.org/people/Benboncan/sounds/67884/
|
||||
|
||||
--water_swimming_splashing*, Attribution Noncommercial License, Robinhood76, http://www.freesound.org/people/Robinhood76/sounds/79657/
|
||||
|
||||
--earth01a, Creative Commons 0 License., Halion , http://www.freesound.org/people/Halion/sounds/17785
|
||||
|
||||
--fiji_beach, Creative Commons 0 License, c97059890, http://www.freesound.org/people/c97059890/sounds/21754/
|
||||
|
||||
--seagull, Attribution Noncommercial License., hazure, http://www.freesound.org/people/hazure/sounds/23707/,
|
||||
|
||||
desert:
|
||||
coyote2, Attribution License, rogerforeman, http://www.freesound.org/people/rogerforeman/sounds/68068/
|
||||
http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||
Desert Monolith.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104319/
|
||||
Rattlesnake Rattle, Public Domain, fws.gov, http://soundbible.com/237-Rattlesnake-Rattle.html
|
||||
|
||||
flying:
|
||||
crystal_airlines: Attribution License, suonho, http://www.freesound.org/people/suonho/sounds/56364/
|
||||
|
||||
----------------Not used yet:
|
||||
desert:
|
||||
Desert Simple.wav, Creative Commons 0 License, Proxima4, http://www.freesound.org/people/Proxima4/sounds/104320/
|
||||
|
||||
313hummer (Jordan Craige)
|
||||
--echos http://soundcloud.com/jordan-craige/echos-1
|
||||
Creative Commons Attribution license (reuse allowed) Attribution 3.0 Unported (CC BY 3.0)
|
||||
Not Used:--FoamOfTheSea http://soundcloud.com/jordan-craige/foam-of-the-sea
|
||||
|
||||
xi-intersection:
|
||||
http://soundcloud.com/xi-intersection/mass-effect-uncharted-worlds Creative Commons License
|
||||
--not used:
|
||||
http://soundcloud.com/xi-intersection/donkey-kong-country-2-flight
|
||||
http://soundcloud.com/kogyo/kogyo-skalar-m1
|
||||
|
||||
lava:
|
||||
http://www.freesound.org/people/Halion/sounds/17785/ (almost as good cc) (combine with rocks falling?)
|
||||
http://www.freesound.org/people/pushtobreak/sounds/17823/ (attrib non cc really good)
|
||||
http://www.freesound.org/people/klankbeeld/sounds/123970/ (horror rhythm)
|
||||
Rockfall in mine.wav http://www.freesound.org/people/Benboncan/sounds/60085/
|
||||
|
||||
|
||||
http://www.freesound.org/people/snotch/sounds/96175/ (mud volcano)
|
||||
|
||||
--natural night sounds in Boquete.wav, Attribution License, laurent, http://www.freesound.org/people/laurent/sounds/15851/
|
||||
http://www.freesound.org/people/Dynamicell/sounds/17553/
|
||||
http://www.freesound.org/people/juskiddink/sounds/78955/ aspen tree in wind
|
||||
http://www.freesound.org/people/Benboncan/sounds/69761/ wind in hedge birds animals
|
||||
|
||||
|
||||
ButterflyTea:
|
||||
Creative Commons : Attribution-Noncommercial-Share Alike 3.0
|
||||
http://www.jamendo.com/en/track/904012/dance-of-magical-flowers
|
||||
http://www.jamendo.com/en/track/904013/magic-of-the-seventh-world
|
||||
http://www.jamendo.com/en/track/904016/in-search-of-the-soul
|
||||
|
||||
http://www.freesfx.co.uk/soundeffects/forests-jungles/
|
||||
|
||||
zero-project
|
||||
|
||||
icecrack.ogg by figowitz (http://freesound.org/people/Figowitz/sounds/67881/)
|
BIN
ambience/sounds/beach.ogg
Normal file
BIN
ambience/sounds/beach_2.ogg
Normal file
BIN
ambience/sounds/bird1.ogg
Normal file
BIN
ambience/sounds/bird2.ogg
Normal file
BIN
ambience/sounds/bluejay.ogg
Normal file
BIN
ambience/sounds/canadianloon2.ogg
Normal file
BIN
ambience/sounds/cardinal.ogg
Normal file
BIN
ambience/sounds/coyote.ogg
Normal file
BIN
ambience/sounds/craw.ogg
Normal file
BIN
ambience/sounds/crestedlark.ogg
Normal file
BIN
ambience/sounds/cricket.ogg
Normal file
BIN
ambience/sounds/deer.ogg
Normal file
BIN
ambience/sounds/desertwind.ogg
Normal file
BIN
ambience/sounds/drippingwater1.ogg
Normal file
BIN
ambience/sounds/drippingwater2.ogg
Normal file
BIN
ambience/sounds/frog.ogg
Normal file
BIN
ambience/sounds/gull.ogg
Normal file
BIN
ambience/sounds/hornedowl.ogg
Normal file
BIN
ambience/sounds/icecrack.ogg
Normal file
BIN
ambience/sounds/jungle_day_1.ogg
Normal file
BIN
ambience/sounds/jungle_night_1.ogg
Normal file
BIN
ambience/sounds/jungle_night_2.ogg
Normal file
BIN
ambience/sounds/lava.ogg
Normal file
BIN
ambience/sounds/peacock.ogg
Normal file
BIN
ambience/sounds/river.ogg
Normal file
BIN
ambience/sounds/robin.ogg
Normal file
BIN
ambience/sounds/scuba.ogg
Normal file
BIN
ambience/sounds/seagull.ogg
Normal file
BIN
ambience/sounds/swim_splashing.ogg
Normal file
BIN
ambience/sounds/waterfall.ogg
Normal file
BIN
ambience/sounds/wind.ogg
Normal file
BIN
ambience/sounds/wolves.ogg
Normal file
429
ambience/soundsets.lua
Normal file
@ -0,0 +1,429 @@
|
||||
--[[
|
||||
Default Sound Sets
|
||||
------------------
|
||||
|
||||
Order is very important when adding a sound set so it will play a certain
|
||||
set of sounds before any another.
|
||||
--]]
|
||||
|
||||
-- Underwater sounds play when player head is submerged
|
||||
|
||||
ambience.add_set("underwater", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "scuba", length = 8}
|
||||
},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
if minetest.registered_nodes[def.head_node]
|
||||
and minetest.registered_nodes[def.head_node].groups.water then
|
||||
return "underwater"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Splashing sound plays when player walks inside water nodes
|
||||
|
||||
ambience.add_set("splash", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "swim_splashing", length = 3},
|
||||
},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
if minetest.registered_nodes[def.feet_node]
|
||||
and minetest.registered_nodes[def.feet_node].groups.water then
|
||||
|
||||
local control = def.player:get_player_control()
|
||||
|
||||
if control.up or control.down or control.left or control.right then
|
||||
return "splash"
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- check for env_sounds mod, if not found enable water flowing sounds
|
||||
if not minetest.get_modpath("env_sounds") then
|
||||
|
||||
-- Water sound plays when near flowing water
|
||||
|
||||
ambience.add_set("flowing_water", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "waterfall", length = 6}
|
||||
},
|
||||
|
||||
nodes = {"default:water_flowing"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:water_flowing"] or 0)
|
||||
|
||||
if c > 40 then
|
||||
return "flowing_water", 0.5
|
||||
|
||||
elseif c > 5 then
|
||||
return "flowing_water"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- River sound plays when near flowing river
|
||||
|
||||
ambience.add_set("river", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "river", length = 4, gain = 0.1}
|
||||
},
|
||||
|
||||
nodes = {"default:river_water_flowing"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:river_water_flowing"] or 0)
|
||||
|
||||
if c > 20 then
|
||||
return "river", 0.5
|
||||
|
||||
elseif c > 5 then
|
||||
return "river"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
else
|
||||
print ("[Ambience] found env_sounds, flowing water sounds disabled.")
|
||||
end
|
||||
|
||||
-- Only add fire sounds set if flame_sound is disabled or fire redo active
|
||||
|
||||
local flame_sound = minetest.settings:get_bool("flame_sound", true)
|
||||
local fire_redo = minetest.get_modpath("fire") and fire.mod and fire.mod == "redo"
|
||||
|
||||
if flame_sound and not fire_redo then
|
||||
|
||||
print ("[Ambience] fire sounds not enabled, already active in fire mod.")
|
||||
|
||||
else
|
||||
|
||||
-- Small fire sound plays when near lower than 9 flames
|
||||
|
||||
ambience.add_set("smallfire", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "fire_small", length = 6, gain = 0.1}
|
||||
},
|
||||
|
||||
nodes = {"fire:basic_flame", "fire:permanent_flame"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["fire:basic_flame"] or 0)
|
||||
+ (def.totals["fire:permanent_flame"] or 0)
|
||||
|
||||
if c > 5 and c < 9 then
|
||||
return "smallfire", 0.5
|
||||
|
||||
elseif c > 0 and c < 9 then
|
||||
return "smallfire"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Large fire sound plays when near more than 9 flames
|
||||
|
||||
ambience.add_set("largefire", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "fire_large", length = 8, gain = 0.4}
|
||||
},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
-- fire nodes were added in last set, so don't need to be added in this one
|
||||
local c = (def.totals["fire:basic_flame"] or 0)
|
||||
+ (def.totals["fire:permanent_flame"] or 0)
|
||||
|
||||
if c > 20 then
|
||||
return "largefire", 0.5
|
||||
|
||||
elseif c > 8 then
|
||||
return "largefire"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
-- Lava sound plays when near lava
|
||||
|
||||
ambience.add_set("lava", {
|
||||
|
||||
frequency = 1000,
|
||||
|
||||
sounds = {
|
||||
{name = "lava", length = 7}
|
||||
},
|
||||
|
||||
nodes = {"default:lava_source", "default:lava_flowing"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:lava_source"] or 0)
|
||||
+ (def.totals["default:lava_flowing"] or 0)
|
||||
|
||||
if c > 20 then
|
||||
return "lava", 0.5
|
||||
|
||||
elseif c > 5 then
|
||||
return "lava"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Beach sounds play when below y-pos 6 and 150+ water source found
|
||||
|
||||
ambience.add_set("beach", {
|
||||
|
||||
frequency = 40,
|
||||
|
||||
sounds = {
|
||||
{name = "seagull", length = 4.5, ephemeral = true},
|
||||
{name = "beach", length = 13},
|
||||
{name = "gull", length = 1, ephemeral = true},
|
||||
{name = "beach_2", length = 6}
|
||||
},
|
||||
|
||||
nodes = {"default:water_source"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:water_source"] or 0)
|
||||
|
||||
if def.pos.y < 6 and def.pos.y > 0 and c > 150 then
|
||||
return "beach"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Ice sounds play when 100 or more ice are nearby
|
||||
|
||||
ambience.add_set("ice", {
|
||||
|
||||
frequency = 250,
|
||||
|
||||
sounds = {
|
||||
{name = "icecrack", length = 23},
|
||||
{name = "desertwind", length = 8},
|
||||
{name = "wind", length = 9}
|
||||
},
|
||||
|
||||
nodes = {"default:ice"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:ice"] or 0)
|
||||
|
||||
if c > 100 then
|
||||
return "ice"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Desert sounds play when near 150+ desert or normal sand
|
||||
|
||||
ambience.add_set("desert", {
|
||||
|
||||
frequency = 20,
|
||||
|
||||
sounds = {
|
||||
{name = "coyote", length = 2.5, ephemeral = true},
|
||||
{name = "wind", length = 9},
|
||||
{name = "desertwind", length = 8}
|
||||
},
|
||||
|
||||
nodes = {"default:desert_sand", "default:sand"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:desert_sand"] or 0)
|
||||
+ (def.totals["default:sand"] or 0)
|
||||
|
||||
if c > 150 and def.pos.y > 10 then
|
||||
return "desert"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Cave sounds play when below player position Y -25
|
||||
|
||||
ambience.add_set("cave", {
|
||||
|
||||
frequency = 60,
|
||||
|
||||
sounds = {
|
||||
{name = "drippingwater1", length = 1.5, ephemeral = true},
|
||||
{name = "drippingwater2", length = 1.5, ephemeral = true}
|
||||
},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
if def.pos.y < -25 then
|
||||
return "cave"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Jungle sounds play during day and when around 90 jungletree trunks
|
||||
|
||||
ambience.add_set("jungle", {
|
||||
|
||||
frequency = 200,
|
||||
|
||||
sounds = {
|
||||
{name = "jungle_day_1", length = 7},
|
||||
{name = "deer", length = 7, ephemeral = true},
|
||||
{name = "canadianloon2", length = 14},
|
||||
{name = "bird1", length = 11},
|
||||
{name = "peacock", length = 2, ephemeral = true}
|
||||
},
|
||||
|
||||
nodes = {"default:jungletree"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:jungletree"] or 0)
|
||||
|
||||
if def.tod > 0.2 and def.tod < 0.8 and c > 90 then
|
||||
return "jungle"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Jungle sounds play during night and when around 90 jungletree trunks
|
||||
|
||||
ambience.add_set("jungle_night", {
|
||||
|
||||
frequency = 200,
|
||||
|
||||
sounds = {
|
||||
{name = "jungle_night_1", length = 4, ephemeral = true},
|
||||
{name = "jungle_night_2", length = 4, ephemeral = true},
|
||||
{name = "deer", length = 7, ephemeral = true},
|
||||
{name = "frog", length = 1, ephemeral = true}
|
||||
},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
-- jungle tree was added in last set, so doesnt need to be added in this one
|
||||
local c = (def.totals["default:jungletree"] or 0)
|
||||
|
||||
if (def.tod < 0.2 or def.tod > 0.8) and c > 90 then
|
||||
return "jungle_night"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Daytime sounds play during day when around leaves and above ground
|
||||
|
||||
ambience.add_set("day", {
|
||||
|
||||
frequency = 40,
|
||||
|
||||
sounds = {
|
||||
{name = "cardinal", length = 3, ephemeral = true},
|
||||
{name = "craw", length = 3, ephemeral = true},
|
||||
{name = "bluejay", length = 6, ephemeral = true},
|
||||
{name = "robin", length = 4, ephemeral = true},
|
||||
{name = "bird1", length = 11},
|
||||
{name = "bird2", length = 6, ephemeral = true},
|
||||
{name = "crestedlark", length = 6, ephemeral = true},
|
||||
{name = "peacock", length = 2, ephemeral = true},
|
||||
{name = "wind", length = 9}
|
||||
},
|
||||
|
||||
nodes = {"group:leaves"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
-- we used group:leaves but still need to specify actual nodes for total
|
||||
local c = (def.totals["default:leaves"] or 0)
|
||||
+ (def.totals["default:bush_leaves"] or 0)
|
||||
+ (def.totals["default:pine_needles"] or 0)
|
||||
+ (def.totals["default:aspen_leaves"] or 0)
|
||||
|
||||
if (def.tod > 0.2 and def.tod < 0.8)
|
||||
and def.pos.y > -10
|
||||
and c > 5 then
|
||||
return "day"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Nighttime sounds play at night when above ground near leaves
|
||||
|
||||
ambience.add_set("night", {
|
||||
|
||||
frequency = 40,
|
||||
|
||||
sounds = {
|
||||
{name = "hornedowl", length = 2, ephemeral = true},
|
||||
{name = "wolves", length = 4, gain = 0.4, ephemeral = true},
|
||||
{name = "cricket", length = 6, ephemeral = true},
|
||||
{name = "deer", length = 7, ephemeral = true},
|
||||
{name = "frog", length = 1, ephemeral = true}
|
||||
},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
-- leaves were added in last set, so don't need to be added to this one
|
||||
local c = (def.totals["default:leaves"] or 0)
|
||||
+ (def.totals["default:bush_leaves"] or 0)
|
||||
+ (def.totals["default:pine_needles"] or 0)
|
||||
+ (def.totals["default:aspen_leaves"] or 0)
|
||||
|
||||
if (def.tod < 0.2 or def.tod > 0.8)
|
||||
and def.pos.y > -10
|
||||
and c > 5 then
|
||||
return "night"
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Winds play when player is above 50 y-pos or near 150+ snow blocks
|
||||
|
||||
ambience.add_set("high_up", {
|
||||
|
||||
frequency = 40,
|
||||
|
||||
sounds = {
|
||||
{name = "desertwind", length = 8},
|
||||
{name = "wind", length = 9}
|
||||
},
|
||||
|
||||
nodes = {"default:snowblock"},
|
||||
|
||||
sound_check = function(def)
|
||||
|
||||
local c = (def.totals["default:snowblock"] or 0)
|
||||
|
||||
if def.pos.y > 50 or c > 150 then
|
||||
return "high_up"
|
||||
end
|
||||
end
|
||||
})
|
@ -217,15 +217,17 @@ minetest.register_node("anvil:anvil", {
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local name = clicker:get_player_name()
|
||||
local owner = meta:get_string("owner")
|
||||
|
||||
if name ~= meta:get_string("owner") then return itemstack end
|
||||
if name ~= owner then return itemstack end
|
||||
if itemstack:get_count() == 0 then
|
||||
local inv = meta:get_inventory()
|
||||
local inv = meta:get_inventory()
|
||||
if not inv:is_empty("input") then
|
||||
local return_stack = inv:get_stack("input", 1)
|
||||
inv:set_stack("input", 1, nil)
|
||||
local wield_index = clicker:get_wield_index()
|
||||
clicker:get_inventory():set_stack("main", wield_index, return_stack)
|
||||
meta:set_string("infotext", S("@1's anvil", owner))
|
||||
remove_item(pos, node)
|
||||
return return_stack
|
||||
end
|
||||
@ -236,6 +238,11 @@ minetest.register_node("anvil:anvil", {
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
inv:add_item("input", s)
|
||||
local meta_description = s:get_meta():get_string("description")
|
||||
if "" ~= meta_description then
|
||||
meta:set_string("infotext", S("@1's anvil", owner) .. "\n" .. meta_description)
|
||||
end
|
||||
meta:set_int("informed", 0)
|
||||
update_item(pos,node)
|
||||
end
|
||||
|
||||
@ -250,7 +257,8 @@ minetest.register_node("anvil:anvil", {
|
||||
local wielded = puncher:get_wielded_item()
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if meta:get_string("owner") ~= puncher:get_player_name() then
|
||||
local owner = meta:get_string("owner")
|
||||
if owner ~= puncher:get_player_name() then
|
||||
return
|
||||
end
|
||||
|
||||
@ -260,6 +268,7 @@ minetest.register_node("anvil:anvil", {
|
||||
inv:set_stack("input", 1, nil)
|
||||
local wield_index = puncher:get_wield_index()
|
||||
puncher:get_inventory():set_stack("main", wield_index, return_stack)
|
||||
meta:set_string("infotext", S("@1's anvil", owner))
|
||||
remove_item(pos, node)
|
||||
end
|
||||
end
|
||||
@ -316,8 +325,14 @@ minetest.register_node("anvil:anvil", {
|
||||
|
||||
-- tell the player when the job is done
|
||||
if( input:get_wear() == 0 ) then
|
||||
-- but only once
|
||||
if 0 < meta:get_int("informed") then return end
|
||||
meta:set_int("informed", 1)
|
||||
local tool_desc
|
||||
if minetest.registered_items[tool_name] and minetest.registered_items[tool_name].description then
|
||||
local meta_description = input:get_meta():get_string("description")
|
||||
if "" ~= meta_description then
|
||||
tool_desc = meta_description
|
||||
elseif minetest.registered_items[tool_name] and minetest.registered_items[tool_name].description then
|
||||
tool_desc = minetest.registered_items[tool_name].description
|
||||
else
|
||||
tool_desc = tool_name
|
||||
@ -410,4 +425,3 @@ minetest.register_craft({
|
||||
{"group:stick","",""}
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -33,7 +33,7 @@ if mg_name ~= "v6" and mg_name ~= "singlenode" then
|
||||
offset = 0.0005,
|
||||
scale = 0.0005,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 2,
|
||||
seed = 678,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
@ -54,7 +54,6 @@ end
|
||||
minetest.register_node("baldcypress:sapling", {
|
||||
description = S("Bald Cypress Tree Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"baldcypress_sapling.png"},
|
||||
inventory_image = "baldcypress_sapling.png",
|
||||
wield_image = "baldcypress_sapling.png",
|
||||
@ -117,7 +116,6 @@ minetest.register_node("baldcypress:wood", {
|
||||
minetest.register_node("baldcypress:leaves", {
|
||||
description = S("Bald Cypress Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"baldcypress_leaves.png"},
|
||||
inventory_image = "baldcypress_leaves.png",
|
||||
wield_image = "baldcypress_leaves.png",
|
||||
@ -136,6 +134,45 @@ minetest.register_node("baldcypress:leaves", {
|
||||
after_place_node = default.after_place_leaves,
|
||||
})
|
||||
|
||||
minetest.register_node("baldcypress:dry_branches", {
|
||||
description = S("Bald Cypress Dry Branches"),
|
||||
drawtype = "nodebox",
|
||||
walkable = true,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"baldcypress_dry_branches.png"},
|
||||
inventory_image = "baldcypress_dry_branches.png",
|
||||
wield_image = "baldcypress_dry_branches.png",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 0.49, 0.5, 0.5, 0.5}
|
||||
},
|
||||
groups = {
|
||||
snappy = 2, flammable = 3, oddly_breakable_by_hand = 3, choppy = 2, carpet = 1, leafdecay = 3, leaves = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("baldcypress:liana", {
|
||||
description = S("Bald Cypress Liana"),
|
||||
drawtype = "nodebox",
|
||||
walkable = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"baldcypress_liana.png"},
|
||||
inventory_image = "baldcypress_liana.png",
|
||||
wield_image = "baldcypress_liana.png",
|
||||
is_ground_content = false,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, 0.0, 0.25, 0.5, 0.0}
|
||||
},
|
||||
groups = {
|
||||
snappy = 2, flammable = 3, oddly_breakable_by_hand = 3, choppy = 2, carpet = 1, leafdecay = 3, leaves = 1,
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
--
|
||||
-- Craftitems
|
||||
--
|
||||
|
@ -5,6 +5,8 @@ Bald Cypress Leaves=Hojas de criprés calvo
|
||||
Bald Cypress Tree Sapling=Retoño de criprés calvo
|
||||
Bald Cypress Tree Stair=Escaleras de criprés calvo
|
||||
Bald Cypress Slab=Losa de de criprés calvo
|
||||
Inner Bald Cypress Stair=Escaleras de de criprés calvo interior
|
||||
Inner Bald Cypress Stair=Escaleras de criprés calvo interior
|
||||
Outer Bald Cypress Stair=Escaleras de criprés calvo exterior
|
||||
Bald Cypress Slab=Losa de criprés calvo
|
||||
Bald Cypress Dry Branches=Ramas secas de ciprés calvo
|
||||
Bald Cypress Liana=Liana de ciprés calvo
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = baldcypress
|
||||
description = Blad Cypress for Swamps
|
||||
description = Bald Cypress for Swamps
|
||||
depends = default
|
||||
optional_depends = stairs, bonemeal
|
||||
optional_depends = stairs, bonemeal, swampz
|
||||
|
BIN
baldcypress/textures/baldcypress_dry_branches.png
Normal file
After Width: | Height: | Size: 8.0 KiB |
BIN
baldcypress/textures/baldcypress_liana.png
Normal file
After Width: | Height: | Size: 887 B |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@ -5,8 +5,6 @@
|
||||
-- Thanks to VanessaE, Tenplus1, paramat and all others who
|
||||
-- contribute to this mod
|
||||
|
||||
local modname = "bamboo"
|
||||
|
||||
-- internationalization boilerplate
|
||||
local S = minetest.get_translator(minetest.get_current_modname())
|
||||
|
||||
@ -177,7 +175,6 @@ minetest.register_node("bamboo:wood", {
|
||||
minetest.register_node("bamboo:leaves", {
|
||||
description = S("Bamboo Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"bamboo_leaves.png"},
|
||||
inventory_image = "bamboo_leaves.png",
|
||||
wield_image = "bamboo_leaves.png",
|
||||
|
@ -1,9 +1,9 @@
|
||||
# textdomain: basic_materials
|
||||
Silicon lump=Silikonklumpen
|
||||
Simple Integrated Circuit=einfacher Integrierter Schaltkreis
|
||||
Simple Motor=einfacher Motor
|
||||
Silicon lump=Siliziumklumpen
|
||||
Simple Integrated Circuit=Einfacher Integrierter Schaltkreis
|
||||
Simple Motor=Einfacher Motor
|
||||
Heating element=Heizelement
|
||||
Simple energy crystal=einfacher Energiekristall
|
||||
Simple energy crystal=Einfacher Energiekristall
|
||||
|
||||
Spool of steel wire=Spule mit Stahldraht
|
||||
Spool of copper wire=Spule mit Kupferdraht
|
||||
@ -12,22 +12,22 @@ Spool of gold wire=Spule mit Golddraht
|
||||
Steel Strip=Stahlstreifen
|
||||
Copper Strip=Kupferstreifen
|
||||
Steel Bar=Stahlstab
|
||||
Chainlinks (brass)=Messing-Kettenglieder
|
||||
Chainlinks (steel)=Stahl-Kettenglieder
|
||||
Chainlinks (brass)=Messingkettenglieder
|
||||
Chainlinks (steel)=Stahlkettenglieder
|
||||
Brass Ingot=Messingbarren
|
||||
Steel gear=Stahlzahnrad
|
||||
Padlock=Vorhängeschloss
|
||||
Chain (steel, hanging)=Stahlkette
|
||||
Chain (brass, hanging)=Messingkette
|
||||
Chain (steel, hanging)=Hängende Stahlkette
|
||||
Chain (brass, hanging)=Hängende Messingkette
|
||||
Brass Block=Messingblock
|
||||
|
||||
Oil extract=raffiniertes Öl
|
||||
Unprocessed paraffin=unbearbeitetes Paraffin
|
||||
Uncooked Terracotta Base=ungebranntes Terrakotta
|
||||
Wet Cement=nasser Zement
|
||||
Oil extract=Ölextrakt
|
||||
Unprocessed paraffin=Unverarbeitetes Paraffin
|
||||
Uncooked Terracotta Base=Ungebranntes Terrakotta
|
||||
Wet Cement=Nasser Zement
|
||||
Cement=Zement
|
||||
Concrete Block=Betonblock
|
||||
|
||||
Plastic sheet=Kunststoffplatte
|
||||
Plastic strips=Kunststoffstreifen
|
||||
Empty wire spool=leere Drahtspule
|
||||
Empty wire spool=Leere Drahtspule
|
||||
|
@ -5,7 +5,9 @@
|
||||
|
||||
-- Intllib support
|
||||
local S
|
||||
if minetest.global_exists("intllib") then
|
||||
if minetest.get_translator then
|
||||
S = minetest.get_translator("bees")
|
||||
elseif minetest.global_exists("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s) return s end
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
--
|
||||
-- Birch Tree
|
||||
--
|
||||
@ -90,21 +89,22 @@ end
|
||||
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
place_on = {"rainf:meadow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.008,
|
||||
offset = 0.01,
|
||||
scale = 0.001,
|
||||
spread = {x = 255, y = 255, z = 255},
|
||||
seed = 2,
|
||||
seed = 32,
|
||||
octaves = 3,
|
||||
persist = 0.67
|
||||
},
|
||||
biomes = {"grassland"},
|
||||
y_min = 10,
|
||||
biomes = {"rainf"},
|
||||
y_min = 1,
|
||||
y_max = 80,
|
||||
schematic = birch.birchtree,
|
||||
flags = "place_center_x, place_center_z",
|
||||
place_offset_y = 1,
|
||||
})
|
||||
|
||||
--
|
||||
@ -114,7 +114,6 @@ minetest.register_decoration({
|
||||
minetest.register_node("birch:sapling", {
|
||||
description = S("Birch Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"birch_sapling.png"},
|
||||
inventory_image = "birch_sapling.png",
|
||||
wield_image = "birch_sapling.png",
|
||||
@ -176,7 +175,6 @@ minetest.register_node("birch:wood", {
|
||||
minetest.register_node("birch:leaves", {
|
||||
description = S("Birch Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"birch_leaves.png"},
|
||||
inventory_image = "birch_leaves.png",
|
||||
wield_image = "birch_leaves.png",
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = birch
|
||||
description = Birch Tree for Grassland
|
||||
depends = default
|
||||
depends = rainf, default
|
||||
optional_depends = stairs, bonemeal
|
||||
|
@ -12,7 +12,7 @@ local S = minetest.get_translator and minetest.get_translator("bonemeal") or
|
||||
|
||||
-- creative check
|
||||
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
|
||||
function is_creative(name)
|
||||
function bonemeal.is_creative(name)
|
||||
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
|
||||
end
|
||||
|
||||
@ -495,7 +495,7 @@ minetest.register_craftitem("bonemeal:mulch", {
|
||||
end
|
||||
|
||||
-- take item if not in creative
|
||||
if not is_creative(user:get_player_name()) then
|
||||
if not bonemeal.is_creative(user:get_player_name()) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
||||
@ -525,7 +525,7 @@ minetest.register_craftitem("bonemeal:bonemeal", {
|
||||
end
|
||||
|
||||
-- take item if not in creative
|
||||
if not is_creative(user:get_player_name()) then
|
||||
if not bonemeal.is_creative(user:get_player_name()) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
||||
@ -555,7 +555,7 @@ minetest.register_craftitem("bonemeal:fertiliser", {
|
||||
end
|
||||
|
||||
-- take item if not in creative
|
||||
if not is_creative(user:get_player_name()) then
|
||||
if not bonemeal.is_creative(user:get_player_name()) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
||||
|
7
bonemeal/locale/bonemeal.en.tr
Normal file
@ -0,0 +1,7 @@
|
||||
# textdomain:bonemeal
|
||||
#[MOD] bonemeal loaded=
|
||||
#Bone=
|
||||
#Bone Meal=
|
||||
#Fertiliser=
|
||||
#Gelatin Powder=
|
||||
#Mulch=
|
@ -1,6 +1,7 @@
|
||||
# textdomain: bonemeal
|
||||
Mulch=Mantillo
|
||||
# textdomain:bonemeal
|
||||
[MOD] bonemeal loaded=[MOD] bonemeal cargado
|
||||
Bone=Hueso
|
||||
Bone Meal=Comida de hueso
|
||||
Fertiliser=Fertilizante
|
||||
Bone=Hueso
|
||||
[MOD] bonemeal loaded=[MOD] bonemeal cargado
|
||||
#Gelatin Powder=
|
||||
Mulch=Mantillo
|
||||
|
@ -1,6 +1,7 @@
|
||||
# textdomain: beds
|
||||
Mulch=Paillis
|
||||
# textdomain:bonemeal
|
||||
[MOD] bonemeal loaded=[MOD] bonemeal chargé
|
||||
Bone=Os
|
||||
Bone Meal=Poudre d'os
|
||||
Fertiliser=Engrais
|
||||
Bone=Os
|
||||
[MOD] bonemeal loaded=[MOD] bonemeal chargé
|
||||
Gelatin Powder=Poudre de gélatine
|
||||
Mulch=Paillis
|
||||
|
@ -1,6 +1,7 @@
|
||||
# textdomain: bonemeal
|
||||
Mulch=Pacciame
|
||||
# textdomain:bonemeal
|
||||
[MOD] bonemeal loaded=[MOD] bonemeal caricata
|
||||
Bone=Ossa
|
||||
Bone Meal=Pasto osseo
|
||||
Fertiliser=Fertilizzante
|
||||
Bone=Ossa
|
||||
[MOD] bonemeal loaded=[MOD] bonemeal caricata
|
||||
#Gelatin Powder=
|
||||
Mulch=Pacciame
|
||||
|
@ -1,6 +1,7 @@
|
||||
# textdomain: bonemeal
|
||||
Mulch=Мульча
|
||||
# textdomain:bonemeal
|
||||
[MOD] bonemeal loaded=[MOD] костная мука загружена
|
||||
Bone=Кость
|
||||
Bone Meal=Костная Мука
|
||||
Fertiliser=Удобрение
|
||||
Bone=Кость
|
||||
[MOD] bonemeal loaded=[MOD] костная мука загружена
|
||||
#Gelatin Powder=
|
||||
Mulch=Мульча
|
||||
|
@ -1,6 +0,0 @@
|
||||
# textdomain: bonemeal
|
||||
Mulch =
|
||||
Bone Meal =
|
||||
Fertiliser =
|
||||
Bone =
|
||||
[MOD] bonemeal loaded =
|
21
building_blocks/.luacheckrc
Normal file
@ -0,0 +1,21 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_comment_line_length = 999
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"unpack",
|
||||
"dump",
|
||||
table = { fields = { "copy", "getn" } },
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"stairsplus",
|
||||
"default",
|
||||
"stairs",
|
||||
}
|
||||
|
||||
globals = {
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
local S = homedecor.gettext
|
||||
local S = minetest.get_translator("building_blocks")
|
||||
|
||||
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
|
||||
minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")
|
||||
|
@ -1,5 +0,0 @@
|
||||
default
|
||||
homedecor_common
|
||||
moreblocks?
|
||||
gloopblocks?
|
||||
stairs?
|
@ -1,4 +1,3 @@
|
||||
local S = homedecor.gettext
|
||||
local modpath = minetest.get_modpath("building_blocks")
|
||||
|
||||
dofile(modpath.."/alias.lua")
|
||||
|
48
building_blocks/locale/building_blocks.de.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granit
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Adobe
|
||||
Adobe Slab=Adobestufe
|
||||
Adobe Stair=Adobetreppe
|
||||
Brobble Spread=Ziesterboden
|
||||
Chess board tiling=Schachbrettkacheln
|
||||
Fake Grass=Falsches Gras
|
||||
Fake Grass Slab=Falsches-Gras-Stufe
|
||||
Fake Grass Stair=Falsches-Gras-Treppe
|
||||
Fireplace=Kamin
|
||||
Grate=Rost
|
||||
Grate Slab=Roststufe
|
||||
Grate Stair=Rosttreppe
|
||||
Gravel Spread=Kiesboden
|
||||
Hardwood=Hartholz
|
||||
Hardwood Slab=Hartholzstufe
|
||||
Hardwood Stair=Hartholztreppe
|
||||
Marble=Marmor
|
||||
Marble Slab=Marmorstufe
|
||||
Marble Stair=Marmortreppe
|
||||
Roof block=Dachblock
|
||||
Roof block Slab=Dachblockstufe
|
||||
Roof block Stair=Dachblocktreppe
|
||||
Streak Free Glass=Schlierenfreies Glas
|
||||
Streak Free Glass Slab=Schlierenfreies-Glas-Stufe
|
||||
Streak Free Glass Stair=Schlierenfreies-Glas-Treppe
|
||||
Tar=Teer
|
||||
Tar Slab=Teerstufe
|
||||
Tar Stair=Teertreppe
|
||||
Tarmac Spread=Asphaltboden
|
||||
Terrycloth towel=Frottiertuch
|
||||
Wood Framed Glass=Holzrahmenglas
|
||||
Wood Framed Glass Slab=Holzrahmenglasstufe
|
||||
Wood Framed Glass Stair=Holzrahmenglastreppe
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Kleines Bündel Stöcke
|
||||
Tar Knife=Teermesser
|
||||
Tar base=Teerbase
|
48
building_blocks/locale/building_blocks.es.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granito
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Adobe
|
||||
Adobe Slab=Losa de adobe
|
||||
Adobe Stair=Escaleras de adobe
|
||||
Brobble Spread=Mezcla de Ladroquines
|
||||
Chess board tiling=Azulejos de ajedrez
|
||||
Fake Grass=Hierba falsa
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Chimenea
|
||||
Grate=Reja
|
||||
Grate Slab=Losa de rejas
|
||||
Grate Stair=Escaleras de rejas
|
||||
Gravel Spread=Mezcla de gravilla
|
||||
Hardwood=Madera dura
|
||||
Hardwood Slab=Losa de madera dura
|
||||
Hardwood Stair=Escaleras de madera dura
|
||||
Marble=Mármol
|
||||
Marble Slab=Losa de mármol
|
||||
Marble Stair=Escaleras de mármol
|
||||
Roof block=Bloque de techo
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Vídrio sin rayas
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Alquitrán
|
||||
Tar Slab=Losa de alquitrán
|
||||
Tar Stair=Escaleras de alquitrán
|
||||
Tarmac Spread=Mezcla de asfalto
|
||||
Terrycloth towel=Toalla
|
||||
Wood Framed Glass=Vídrio enmarcado en madera
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Manojo de palitos
|
||||
Tar Knife=Cuchillo de alquitrán
|
||||
Tar base=Base de alquitrán
|
48
building_blocks/locale/building_blocks.fr.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granit
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Pisé
|
||||
Adobe Slab=Dalle en pisé
|
||||
Adobe Stair=Escalier en pisé
|
||||
Brobble Spread=Tapis rouge
|
||||
Chess board tiling=Pavage en échiquier
|
||||
Fake Grass=Herbe synthétique
|
||||
Fake Grass Slab=Dalle en herbe synthétique
|
||||
Fake Grass Stair=Escalier en herbe synthétique
|
||||
Fireplace=Cheminée
|
||||
Grate=Grille
|
||||
Grate Slab=Dalle en métal déployé
|
||||
Grate Stair=Escalier en métal déployé
|
||||
Gravel Spread=Tapis de gravier
|
||||
Hardwood=Bois dur (feuillu)
|
||||
Hardwood Slab=Dalle en bois dur (feuillu)
|
||||
Hardwood Stair=Escalier en bois dur (feuillu)
|
||||
Marble=Marbre
|
||||
Marble Slab=Dalle en marbre
|
||||
Marble Stair=Marche en marbre
|
||||
Roof block=Bloc de toit
|
||||
Roof block Slab=Dalle en bloc de toit
|
||||
Roof block Stair=Escalier en bloc de toit
|
||||
Streak Free Glass=Verre anti-rayures
|
||||
Streak Free Glass Slab=Dalle en verre anti-rayures
|
||||
Streak Free Glass Stair=Escalier en verre anti-rayures
|
||||
Tar=Goudron
|
||||
Tar Slab=Dalle en goudron
|
||||
Tar Stair=Marche en goudron
|
||||
Tarmac Spread=Tapis de goudron
|
||||
Terrycloth towel=Serviette éponge
|
||||
Wood Framed Glass=Verre encadré de bois
|
||||
Wood Framed Glass Slab=Dalle en verre encadré de bois
|
||||
Wood Framed Glass Stair=Escalier en verre encadré de bois
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Petit fagot de brindilles
|
||||
Tar Knife=Couteau à goudron
|
||||
Tar base=Pâte de goudron
|
48
building_blocks/locale/building_blocks.ms.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granit
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Adob
|
||||
Adobe Slab=Bidur Adob
|
||||
Adobe Stair=Tangga Adob
|
||||
Brobble Spread=Sebaran Batu Merah
|
||||
Chess board tiling=Jubin Papan Catur
|
||||
Fake Grass=Rumput Tiruan
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Pendiangan
|
||||
Grate=Jeriji
|
||||
Grate Slab=Bidur Jeriji
|
||||
Grate Stair=Tangga Jeriji
|
||||
Gravel Spread=Sebaran Kelikir
|
||||
Hardwood=Kayu Keras
|
||||
Hardwood Slab=Bidur Kayu Keras
|
||||
Hardwood Stair=Tangga Kayu Keras
|
||||
Marble=Marmar
|
||||
Marble Slab=Bidur Marmar
|
||||
Marble Stair=Tangga Marmar
|
||||
Roof block=Blok Bumbung
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Kaca Bebas Calar
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Tar
|
||||
Tar Slab=Bidur Tar
|
||||
Tar Stair=Tangga Tar
|
||||
Tarmac Spread=Sebaran Tar
|
||||
Terrycloth towel=Kain Tuala
|
||||
Wood Framed Glass=Kaca Berbingkai Kayu
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Seberkas Kecil Serpihan Kayu
|
||||
Tar Knife=Pisau Tar
|
||||
Tar base=Campuran Tar
|
48
building_blocks/locale/building_blocks.pt.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granito
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Argila
|
||||
Adobe Slab=Placa de argila
|
||||
Adobe Stair=Escada de Argila
|
||||
Brobble Spread=Calçado
|
||||
Chess board tiling=Revestimento de xadrez
|
||||
Fake Grass=Grama Falsa
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Lareira
|
||||
Grate=Grelha
|
||||
Grate Slab=Placa de Grelha
|
||||
Grate Stair=Escade de Grelha
|
||||
Gravel Spread=Espalhamento de Cascalho
|
||||
Hardwood=Madeira
|
||||
Hardwood Slab=Placa de madeira
|
||||
Hardwood Stair=Escada de madeira
|
||||
Marble=Mármore
|
||||
Marble Slab=Placa de Mármore
|
||||
Marble Stair=Escada de mármore
|
||||
Roof block=Bloco de telhado
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Vidro Sem Riscos
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Alcatrão
|
||||
Tar Slab=Placa de alcatrão
|
||||
Tar Stair=Escada de alcatrão
|
||||
Tarmac Spread=Espalhamento das Estradas
|
||||
Terrycloth towel=Toalha de Roupinha
|
||||
Wood Framed Glass=Vidro com Bordas de Madeira
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Pequeno amontoado de gravetos
|
||||
Tar Knife=Faca de Alcatrão
|
||||
Tar base=Base para alcatrão
|
48
building_blocks/locale/building_blocks.pt_BR.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granito
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Argila
|
||||
Adobe Slab=Placa de argila
|
||||
Adobe Stair=Escada de Argila
|
||||
Brobble Spread=Calçado
|
||||
Chess board tiling=Revestimento de xadrez
|
||||
Fake Grass=Grama Falsa
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Lareira
|
||||
Grate=Grelha
|
||||
Grate Slab=Placa de Grelha
|
||||
Grate Stair=Escade de Grelha
|
||||
Gravel Spread=Espalhamento de Cascalho
|
||||
Hardwood=Madeira
|
||||
Hardwood Slab=Placa de madeira
|
||||
Hardwood Stair=Escada de madeira
|
||||
Marble=Mármore
|
||||
Marble Slab=Placa de Mármore
|
||||
Marble Stair=Escada de mármore
|
||||
Roof block=Bloco de telhado
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Vidro Sem Riscos
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Alcatrão
|
||||
Tar Slab=Placa de alcatrão
|
||||
Tar Stair=Escada de alcatrão
|
||||
Tarmac Spread=Espalhamento das Estradas
|
||||
Terrycloth towel=Toalha de Roupinha
|
||||
Wood Framed Glass=Vidro com Bordas de Madeira
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Pequeno amontoado de gravetos
|
||||
Tar Knife=Faca de Alcatrão
|
||||
Tar base=Base para alcatrão
|
48
building_blocks/locale/building_blocks.ru.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Гранит
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Саман
|
||||
Adobe Slab=Саманная плита
|
||||
Adobe Stair=Саманная ступенька
|
||||
Brobble Spread=Настил кирпичного булыжника
|
||||
Chess board tiling=Шахматная плитка
|
||||
Fake Grass=Псевдо трава
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Камин
|
||||
Grate=Каминная решётка
|
||||
Grate Slab=Решётчатая плита
|
||||
Grate Stair=Решётчатая ступенька
|
||||
Gravel Spread=Настил гравия
|
||||
Hardwood=Твёрдая древесина
|
||||
Hardwood Slab=Плита из твёрдой древесины
|
||||
Hardwood Stair=Ступенька из твёрдой древесины
|
||||
Marble=Мрамор
|
||||
Marble Slab=Мраморная блита
|
||||
Marble Stair=Мраморная ступенька
|
||||
Roof block=Кровельный блок
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Стекло без стыков
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Смола
|
||||
Tar Slab=Плита из смолы
|
||||
Tar Stair=Ступенька из смолы
|
||||
Tarmac Spread=Покрытие гудронной смолой
|
||||
Terrycloth towel=Махровое полотенце
|
||||
Wood Framed Glass=Деревянное окно
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Небольшая связка палок
|
||||
Tar Knife=Смоляной нож
|
||||
Tar base=Смоляная основа
|
48
building_blocks/locale/building_blocks.zh_CN.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=花岗岩
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=土砖
|
||||
Adobe Slab=
|
||||
Adobe Stair=
|
||||
Brobble Spread=石砖路面
|
||||
Chess board tiling=棋盘铺贴
|
||||
Fake Grass=塑料草
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=壁炉
|
||||
Grate=磨碎
|
||||
Grate Slab=
|
||||
Grate Stair=
|
||||
Gravel Spread=碎石路面
|
||||
Hardwood=硬木
|
||||
Hardwood Slab=
|
||||
Hardwood Stair=
|
||||
Marble=大理石
|
||||
Marble Slab=
|
||||
Marble Stair=
|
||||
Roof block=天台
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=无条纹玻璃
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=焦油
|
||||
Tar Slab=
|
||||
Tar Stair=
|
||||
Tarmac Spread=柏油路面
|
||||
Terrycloth towel=毛巾
|
||||
Wood Framed Glass=木框玻璃
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=小捆棍子
|
||||
Tar Knife=焦油刀
|
||||
Tar base=焦油基
|
48
building_blocks/locale/template.txt
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=
|
||||
Adobe Slab=
|
||||
Adobe Stair=
|
||||
Brobble Spread=
|
||||
Chess board tiling=
|
||||
Fake Grass=
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=
|
||||
Grate=
|
||||
Grate Slab=
|
||||
Grate Stair=
|
||||
Gravel Spread=
|
||||
Hardwood=
|
||||
Hardwood Slab=
|
||||
Hardwood Stair=
|
||||
Marble=
|
||||
Marble Slab=
|
||||
Marble Stair=
|
||||
Roof block=
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=
|
||||
Tar Slab=
|
||||
Tar Stair=
|
||||
Tarmac Spread=
|
||||
Terrycloth towel=
|
||||
Wood Framed Glass=
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=
|
||||
Tar Knife=
|
||||
Tar base=
|
3
building_blocks/mod.conf
Normal file
@ -0,0 +1,3 @@
|
||||
name = building_blocks
|
||||
depends = default
|
||||
optional_depends = moreblocks, gloopblocks, stairs
|
@ -1,4 +1,4 @@
|
||||
local S = homedecor.gettext
|
||||
local S = minetest.get_translator("building_blocks")
|
||||
|
||||
local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"}
|
||||
|
||||
@ -29,9 +29,11 @@ local function building_blocks_stairs(nodename, def)
|
||||
stairs.register_stair_and_slab(name,nodename,
|
||||
stairs_groups,
|
||||
def.tiles,
|
||||
("%s Stair"):format(def.description),
|
||||
("%s Slab"):format(def.description),
|
||||
def.stair_desc,
|
||||
def.slab_desc,
|
||||
def.sounds
|
||||
--FIXME: Missing descriptions for Inner and Outer stairs
|
||||
-- See https://github.com/minetest/minetest_game/pull/2584
|
||||
)
|
||||
end
|
||||
end
|
||||
@ -40,6 +42,8 @@ end
|
||||
building_blocks_stairs("building_blocks:grate", {
|
||||
drawtype = "glasslike",
|
||||
description = S("Grate"),
|
||||
stair_desc = S("Grate Stair"),
|
||||
slab = S("Grate Slab"),
|
||||
tiles = {"building_blocks_grate.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
@ -50,6 +54,8 @@ building_blocks_stairs("building_blocks:grate", {
|
||||
building_blocks_stairs("building_blocks:smoothglass", {
|
||||
drawtype = "glasslike",
|
||||
description = S("Streak Free Glass"),
|
||||
stair_desc = S("Streak Free Glass Stair"),
|
||||
slab_desc = S("Streak Free Glass Slab"),
|
||||
tiles = {"building_blocks_sglass.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
@ -60,6 +66,8 @@ building_blocks_stairs("building_blocks:smoothglass", {
|
||||
building_blocks_stairs("building_blocks:woodglass", {
|
||||
drawtype = "glasslike",
|
||||
description = S("Wood Framed Glass"),
|
||||
stair_desc = S("Wood Framed Glass Stair"),
|
||||
slab_desc = S("Wood Framed Glass Slab"),
|
||||
tiles = {"building_blocks_wglass.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
@ -71,6 +79,8 @@ building_blocks_stairs("building_blocks:woodglass", {
|
||||
building_blocks_stairs("building_blocks:Adobe", {
|
||||
tiles = {"building_blocks_Adobe.png"},
|
||||
description = S("Adobe"),
|
||||
stair_desc = S("Adobe Stair"),
|
||||
slab_desc = S("Adobe Slab"),
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
@ -78,6 +88,8 @@ building_blocks_stairs("building_blocks:Adobe", {
|
||||
building_blocks_stairs("building_blocks:fakegrass", {
|
||||
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
|
||||
description = S("Fake Grass"),
|
||||
stair_desc = S("Fake Grass Stair"),
|
||||
slab_desc = S("Fake Grass Slab"),
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
@ -88,6 +100,8 @@ building_blocks_stairs("building_blocks:hardwood", {
|
||||
tiles = {"building_blocks_hardwood.png"},
|
||||
is_ground_content = true,
|
||||
description = S("Hardwood"),
|
||||
stair_desc = S("Hardwood Stair"),
|
||||
slab_desc = S("Hardwood Slab"),
|
||||
groups = {choppy=1,flammable=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
@ -95,11 +109,15 @@ building_blocks_stairs("building_blocks:Roofing", {
|
||||
tiles = {"building_blocks_Roofing.png"},
|
||||
is_ground_content = true,
|
||||
description = S("Roof block"),
|
||||
stair_desc = S("Roof block Stair"),
|
||||
slab_desc = S("Roof block Slab"),
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:Tar", {
|
||||
description = S("Tar"),
|
||||
stair_desc = S("Tar Stair"),
|
||||
slab_desc = S("Tar Slab"),
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=1, tar_block = 1},
|
||||
@ -107,6 +125,8 @@ building_blocks_stairs("building_blocks:Tar", {
|
||||
})
|
||||
building_blocks_stairs("building_blocks:Marble", {
|
||||
description = S("Marble"),
|
||||
stair_desc = S("Marble Stair"),
|
||||
slab_desc = S("Marble Slab"),
|
||||
tiles = {"building_blocks_marble.png"},
|
||||
is_ground_content = true,
|
||||
groups = {cracky=3, marble = 1},
|
||||
|
@ -1,4 +1,4 @@
|
||||
local S = homedecor.gettext
|
||||
local S = minetest.get_translator("building_blocks")
|
||||
|
||||
minetest.register_craftitem("building_blocks:sticks", {
|
||||
description = S("Small bundle of sticks"),
|
||||
|
@ -1,5 +1,3 @@
|
||||
local S = homedecor.gettext
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:sticks 2',
|
||||
|
@ -37,13 +37,14 @@ minetest.register_craft({
|
||||
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all("castle", "pavement_brick", "castle_masonry:pavement_brick", {
|
||||
stairsplus:register_all("castle_masonry", "pavement_brick", "castle_masonry:pavement_brick", {
|
||||
description = S("Pavement Brick"),
|
||||
tiles = {"castle_pavement_brick.png"},
|
||||
groups = {cracky=2, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
stairsplus:register_alias_all("castle", "pavement_brick", "castle_masonry", "pavement_brick")
|
||||
elseif minetest.get_modpath("stairs") then
|
||||
stairs.register_stair_and_slab("pavement_brick", "castle_masonry:pavement_brick",
|
||||
{cracky=2},
|
||||
|
@ -102,8 +102,8 @@ if minetest.get_modpath("moreblocks") then
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
stairsplus:register_stair_alias("castle", "stonewall", "castle_masonry", "stonewall")
|
||||
stairsplus:register_stair_alias("castle", "rubble", "castle_masonry", "rubble")
|
||||
stairsplus:register_alias_all("castle", "stonewall", "castle_masonry", "stonewall")
|
||||
stairsplus:register_alias_all("castle", "rubble", "castle_masonry", "rubble")
|
||||
|
||||
elseif minetest.get_modpath("stairs") then
|
||||
stairs.register_stair_and_slab("stonewall", "castle_masonry:stonewall",
|
||||
@ -151,7 +151,7 @@ minetest.register_craft({
|
||||
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all("castle", "dungeon_stone", "castle_masonry:dungeon_stone", {
|
||||
stairsplus:register_all("castle_masonry", "dungeon_stone", "castle_masonry:dungeon_stone", {
|
||||
description = S("Dungeon Stone"),
|
||||
tiles = {"castle_dungeon_stone.png"},
|
||||
groups = {cracky=2, not_in_creative_inventory=1},
|
||||
@ -159,7 +159,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
stairsplus:register_stair_alias("castle", "dungeon_stone", "castle_masonry", "dungeon_stone")
|
||||
stairsplus:register_alias_all("castle", "dungeon_stone", "castle_masonry", "dungeon_stone")
|
||||
|
||||
elseif minetest.get_modpath("stairs") then
|
||||
stairs.register_stair_and_slab("dungeon_stone", "castle_masonry:dungeon_stone",
|
||||
|
@ -4,6 +4,7 @@
|
||||
local modname = "cherrytree"
|
||||
local modpath = minetest.get_modpath(modname)
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
local fruit_grow_time = 1200
|
||||
|
||||
-- internationalization boilerplate
|
||||
local S = minetest.get_translator(minetest.get_current_modname())
|
||||
@ -31,8 +32,25 @@ minetest.register_node("cherrytree:cherries", {
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
minetest.set_node(pos, {name = "cherrytree:cherries", param2 = 1})
|
||||
end,
|
||||
})
|
||||
|
||||
on_dig = function(pos, node, digger)
|
||||
if digger:is_player() then
|
||||
local inv = digger:get_inventory()
|
||||
if inv:room_for_item("main", "cherrytree:cherries") then
|
||||
inv:add_item("main", "cherrytree:cherries")
|
||||
end
|
||||
end
|
||||
minetest.remove_node(pos)
|
||||
pos.y = pos.y + 1
|
||||
local node_above = minetest.get_node_or_nil(pos)
|
||||
if node_above and node_above.param2 == 0 and node_above.name == "cherrytree:blossom_leaves" then
|
||||
--20% of variation on time
|
||||
local twenty_percent = fruit_grow_time * 0.2
|
||||
local grow_time = math.random(fruit_grow_time - twenty_percent, fruit_grow_time + twenty_percent)
|
||||
minetest.get_node_timer(pos):start(grow_time)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Cherrytree
|
||||
|
||||
@ -59,7 +77,7 @@ if mg_name ~= "v6" and mg_name ~= "singlenode" then
|
||||
offset = 0.0005,
|
||||
scale = 0.00005,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 2,
|
||||
seed = 1242,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
@ -79,7 +97,6 @@ end
|
||||
minetest.register_node("cherrytree:sapling", {
|
||||
description = S("Cherrytree Tree Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"cherrytree_sapling.png"},
|
||||
inventory_image = "cherrytree_sapling.png",
|
||||
wield_image = "cherrytree_sapling.png",
|
||||
@ -142,7 +159,6 @@ minetest.register_node("cherrytree:wood", {
|
||||
minetest.register_node("cherrytree:blossom_leaves", {
|
||||
description = S("Cherrytree Blossom Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"cherrytree_blossom_leaves.png"},
|
||||
inventory_image = "cherrytree_blossom_leaves.png",
|
||||
wield_image = "cherrytree_blossom_leaves.png",
|
||||
@ -159,13 +175,23 @@ minetest.register_node("cherrytree:blossom_leaves", {
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
after_place_node = default.after_place_leaves,
|
||||
|
||||
on_timer = function(pos)
|
||||
pos.y = pos.y - 1
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if node and node.name == "air" then
|
||||
minetest.set_node(pos, {name = "cherrytree:cherries"})
|
||||
return false
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- cherrytree tree leaves
|
||||
minetest.register_node("cherrytree:leaves", {
|
||||
description = S("Cherrytree Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"cherrytree_leaves.png"},
|
||||
inventory_image = "cherrytree_leaves.png",
|
||||
wield_image = "cherrytree_leaves.png",
|
||||
@ -239,26 +265,6 @@ if minetest.get_modpath("stairs") ~= nil then
|
||||
)
|
||||
end
|
||||
|
||||
-- Chance to convert to normal leaves and cherry fruits
|
||||
minetest.register_abm({
|
||||
nodenames = {"cherrytree:blossom_leaves"},
|
||||
neighbors = {},
|
||||
interval = 600.0, -- Run every 10 minuts
|
||||
chance = 50, -- Select every 1 in 50 nodes
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if node.param2 == 1 then -- ignore manually placed leaves
|
||||
return
|
||||
end
|
||||
math.randomseed(os.time())
|
||||
local is_fruit = math.random(10)
|
||||
if is_fruit == 10 then
|
||||
minetest.set_node(pos, {name = "cherrytree:cherries"})
|
||||
else
|
||||
minetest.set_node(pos, {name = "cherrytree:leaves"})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
--Support for bonemeal
|
||||
|
||||
if minetest.get_modpath("bonemeal") ~= nil then
|
||||
|
@ -30,14 +30,14 @@ schematic = {
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:cherries", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
@ -70,28 +70,28 @@ schematic = {
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=1},
|
||||
{name="cherrytree:cherries", prob=126, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
@ -112,28 +112,28 @@ schematic = {
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:trunk", prob=254, param2=3},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:trunk", prob=254, param2=3},
|
||||
{name="cherrytree:trunk", prob=254, param2=3},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:trunk", prob=254, param2=3},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
@ -154,27 +154,27 @@ schematic = {
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
@ -196,9 +196,9 @@ schematic = {
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=1},
|
||||
{name="cherrytree:blossom_leaves", prob=126, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="cherrytree:blossom_leaves", prob=254, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
{name="air", prob=0, param2=0},
|
||||
|
@ -69,17 +69,17 @@ end
|
||||
if mg_name ~= "v6" and mg_name ~= "singlenode" then
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
place_on = {"rainf:meadow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0.00005,
|
||||
offset = 0.0008,
|
||||
scale = 0.00004,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 2,
|
||||
seed = 278,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"grassland"},
|
||||
biomes = {"rainf"},
|
||||
y_min = 1,
|
||||
y_max = 80,
|
||||
schematic = modpath.."/schematics/chestnuttree.mts",
|
||||
@ -96,7 +96,6 @@ end
|
||||
minetest.register_node("chestnuttree:sapling", {
|
||||
description = S("Chestnut Tree Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"chestnuttree_sapling.png"},
|
||||
inventory_image = "chestnuttree_sapling.png",
|
||||
wield_image = "chestnuttree_sapling.png",
|
||||
@ -156,7 +155,6 @@ minetest.register_node("chestnuttree:wood", {
|
||||
minetest.register_node("chestnuttree:leaves", {
|
||||
description = S("Chestnut Tree Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"chestnuttree_leaves.png"},
|
||||
inventory_image = "chestnuttree_leaves.png",
|
||||
wield_image = "chestnuttree_leaves.png",
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = chestnuttree
|
||||
description = Chesnut Tree for Grassland
|
||||
depends = default
|
||||
depends = rainf, default
|
||||
optional_depends = stairs, bonemeal
|
||||
|
@ -57,7 +57,7 @@ if mg_name ~= "v6" and mg_name ~= "singlenode" then
|
||||
offset = 0.0005,
|
||||
scale = 0.00004,
|
||||
spread = {x = 250, y = 250, z = 250},
|
||||
seed = 2,
|
||||
seed = 3456,
|
||||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
@ -77,7 +77,6 @@ end
|
||||
minetest.register_node("clementinetree:sapling", {
|
||||
description = S("Clementine Tree Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"clementinetree_sapling.png"},
|
||||
inventory_image = "clementinetree_sapling.png",
|
||||
wield_image = "clementinetree_sapling.png",
|
||||
@ -137,7 +136,6 @@ minetest.register_node("clementinetree:wood", {
|
||||
minetest.register_node("clementinetree:leaves", {
|
||||
description = S("Clementine Tree Leaves"),
|
||||
drawtype = "allfaces_optional",
|
||||
visual_scale = 1.2,
|
||||
tiles = {"clementinetree_leaves.png"},
|
||||
inventory_image = "clementinetree_leaves.png",
|
||||
wield_image = "clementinetree_leaves.png",
|
||||
|
21
computer/.luacheckrc
Normal file
@ -0,0 +1,21 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_comment_line_length = 999
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"unpack",
|
||||
"dump",
|
||||
table = { fields = { "copy", "getn" } },
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"default",
|
||||
"unifieddyes",
|
||||
"screwdriver",
|
||||
}
|
||||
|
||||
globals = {
|
||||
}
|
||||
|
@ -1,9 +1,8 @@
|
||||
|
||||
local S = homedecor.gettext
|
||||
local S = minetest.get_translator("computer")
|
||||
|
||||
-- Amiga 500 lookalike
|
||||
computer.register("computer:shefriendSOO", {
|
||||
description = "SheFriendSOO",
|
||||
description = S("SheFriendSOO"),
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
@ -17,7 +16,7 @@ computer.register("computer:shefriendSOO", {
|
||||
minetest.register_node("computer:vanio", {
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_laptop.obj",
|
||||
description = "Pony Vanio",
|
||||
description = S("Pony Vanio"),
|
||||
inventory_image = "computer_laptop_inv.png",
|
||||
tiles = {"computer_laptop.png"},
|
||||
paramtype = "light",
|
||||
@ -58,7 +57,7 @@ minetest.register_node("computer:vanio_off", {
|
||||
|
||||
-- Sony PlayStation lookalike
|
||||
computer.register("computer:slaystation", {
|
||||
description = "Pony SlayStation",
|
||||
description = S("Pony SlayStation"),
|
||||
inventory_image = "computer_ps1_inv.png",
|
||||
tiles_off = { top=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -75,7 +74,7 @@ computer.register("computer:slaystation", {
|
||||
|
||||
-- Sony PlayStation 2 lookalike
|
||||
computer.register("computer:slaystation2", {
|
||||
description = "Pony SlayStation 2",
|
||||
description = S("Pony SlayStation 2"),
|
||||
inventory_image = "computer_ps2_inv.png",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -93,7 +92,7 @@ computer.register("computer:slaystation2", {
|
||||
|
||||
-- Sinclair ZX Spectrum lookalike
|
||||
computer.register("computer:specter", {
|
||||
description = "SX Specter",
|
||||
description = S("SX Specter"),
|
||||
inventory_image = "computer_specter_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -105,7 +104,7 @@ computer.register("computer:specter", {
|
||||
|
||||
-- Nintendo Wii lookalike
|
||||
computer.register("computer:wee", {
|
||||
description = "Nientiendo Wee",
|
||||
description = S("Nientiendo Wee"),
|
||||
inventory_image = "computer_wii_inv.png",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -117,7 +116,7 @@ computer.register("computer:wee", {
|
||||
|
||||
-- Apple iPad lookalike
|
||||
minetest.register_node("computer:piepad", {
|
||||
description = "Snapple Piepad",
|
||||
description = S("Snapple Piepad"),
|
||||
drawtype = "signlike",
|
||||
tiles = {"computer_piepad_inv.png"},
|
||||
inventory_image = "computer_piepad_inv.png",
|
||||
@ -133,7 +132,7 @@ minetest.register_node("computer:piepad", {
|
||||
|
||||
-- Commodore 64 lookalike
|
||||
computer.register("computer:admiral64", {
|
||||
description = "Admiral64",
|
||||
description = S("Admiral64"),
|
||||
inventory_image = "computer_ad64_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -144,7 +143,7 @@ computer.register("computer:admiral64", {
|
||||
|
||||
-- Commodore 128 lookalike
|
||||
computer.register("computer:admiral128", {
|
||||
description = "Admiral128",
|
||||
description = S("Admiral128"),
|
||||
inventory_image = "computer_ad128_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -155,7 +154,7 @@ computer.register("computer:admiral128", {
|
||||
|
||||
-- XBox lookalike
|
||||
computer.register("computer:hueg_box", {
|
||||
description = "HUEG Box",
|
||||
description = S("HUEG Box"),
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(16, {
|
||||
-- X Y Z W H L
|
||||
@ -217,8 +216,17 @@ minetest.register_alias("computer:monitor_desktop", "computer:monitor")
|
||||
minetest.register_node("computer:router", {
|
||||
description = S("WIFI Router"),
|
||||
inventory_image = "computer_router_inv.png",
|
||||
tiles = {"computer_router_t.png","computer_router_bt.png","computer_router_l.png","computer_router_r.png","computer_router_b.png",
|
||||
{name="computer_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"computer_router_f.png"},
|
||||
tiles = {
|
||||
"computer_router_t.png",
|
||||
"computer_router_bt.png",
|
||||
"computer_router_l.png",
|
||||
"computer_router_r.png",
|
||||
"computer_router_b.png",
|
||||
{
|
||||
name = "computer_router_f_animated.png",
|
||||
animation = {type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}
|
||||
},
|
||||
}, --"computer_router_f.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
|
@ -1,4 +0,0 @@
|
||||
default
|
||||
homedecor_common
|
||||
basic_materials
|
||||
unifieddyes
|
@ -1,5 +1,4 @@
|
||||
computer = {}
|
||||
screwdriver = screwdriver or {}
|
||||
|
||||
computer.register = function (name, def)
|
||||
if (name:sub(1, 1) == ":") then name = name:sub(2) end
|
||||
|
35
computer/locale/computer.de.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=Admiral 128
|
||||
Admiral64=Admiral 64
|
||||
Computer Tower=Computerturm
|
||||
HUEG Box=YBOX
|
||||
Monitor and keyboard=Bildschirm und Tastatur
|
||||
Nientiendo Wee=Tinnendo iiW
|
||||
Not enough vertical space to place a server!=Es gibt nicht genug vertikalen Platz, um einen Server zu platzieren!
|
||||
Pony SlayStation=Pony Slaystation
|
||||
Pony SlayStation 2=Pony Slaystation 2
|
||||
Pony Vanio=Pony Oiva
|
||||
Rack Server=Serverschrank
|
||||
SX Specter=Z Inspektor
|
||||
SheFriendSOO=Freundin S00
|
||||
Snapple Piepad=Apfel-Ei-Pat
|
||||
WIFI Router=WiFi-Router
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=3D Drucker ("Bettschubser")
|
||||
Printer-Scanner Combo=Multifunktionsdrucker
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=L
|
||||
New Game=Neues Spiel
|
||||
Next...=Nächster…
|
||||
No room for place the Arcade!=Kein Platz, um den Arkadeautomaten zu platzieren!
|
||||
R=R
|
||||
Score: =Punktzahl:
|
||||
Tetris Arcade=Tetris-Arkadeautomat
|
35
computer/locale/computer.es.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Torre de ordenador
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Monitor y teclado
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=¡No hay suficiente espacio para colocar un servidor!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Servidor en rack
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Enrutador WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Impresora y escáner combinados
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Juego Nuevo
|
||||
Next...=
|
||||
No room for place the Arcade!=¡No hay lugar para colocar el arcade!
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=Arcade Tetris
|
35
computer/locale/computer.fr.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Ordinateur (tour)
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Écran et clavier
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Pas assez d'espace vertical pour placer un serveur !
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Serveur en rack
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Routeur WiFi
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Imprimante multi-fonction
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=G
|
||||
New Game=Nouveau Jeu
|
||||
Next...=Suivant…
|
||||
No room for place the Arcade!=Pas assez de place pour placer la borne d'arcade !
|
||||
R=D
|
||||
Score: =Score :
|
||||
Tetris Arcade=Borne Tetris
|
35
computer/locale/computer.it.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=
|
||||
HUEG Box=
|
||||
Monitor and keyboard=
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Non c'è abbastanza spazio verticale per mettere un frigorifero!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=
|
||||
Next...=
|
||||
No room for place the Arcade!=
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=
|
35
computer/locale/computer.ms.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Sistem Unit
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Monitor dan Papan Kekunci
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Tidak cukup ruang menegak untuk letak rak pelayan!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Rak Pelayan
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Penghala WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Pencetak Semua Dalam Satu
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Main Baru
|
||||
Next...=Seterusnya...
|
||||
No room for place the Arcade!=Tiada ruang untuk letak Arked!
|
||||
R=
|
||||
Score: =Markah:
|
||||
Tetris Arcade=Arked Tetris
|
35
computer/locale/computer.pt.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Gabinete do Computador
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Tela e teclado
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Sem espaço vertical suficiente para colocar um servidor.
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Rack para Servidor
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Roteador WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Tudo em Um Impressora-Scaner
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Novo Jogo
|
||||
Next...=
|
||||
No room for place the Arcade!=Sem espaço para colocar o Fliperama!
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=Fliperama Tetris
|
35
computer/locale/computer.pt_BR.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Gabinete do Computador
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Tela e teclado
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Sem espaço vertical suficiente para colocar um servidor.
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Rack para Servidor
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Roteador WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Tudo em Um Impressora-Scaner
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Novo Jogo
|
||||
Next...=
|
||||
No room for place the Arcade!=Sem espaço para colocar o Fliperama!
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=Fliperama Tetris
|