update biome_lib, bonemeal, digidisplay, digistuff, dreambuilder hotbar,
farming redo, roads, maptools, mesecons, moretrees, pipeworks, rgblightstone, signs_lib, technic (except I kept it back from that broken commit), unifiedmesecons, and worldedit removed the inventory sorter mod added my two dreambuilder management scripts (look in dreambuilder_mp_extras)
This commit is contained in:
parent
e5357b2191
commit
ddf955db23
@ -85,7 +85,7 @@ biome_lib.perlin_humidity = PerlinNoise(humidity_seeddiff, humidity_octaves, hum
|
||||
-- Local functions
|
||||
|
||||
local function get_biome_data(pos, perlin_fertile)
|
||||
local fertility = perlin_fertile:get2d({x=pos.x, y=pos.z})
|
||||
local fertility = perlin_fertile:get_2d({x=pos.x, y=pos.z})
|
||||
|
||||
if type(minetest.get_biome_data) == "function" then
|
||||
local data = minetest.get_biome_data(pos)
|
||||
|
@ -460,8 +460,8 @@ function bonemeal:on_use(pos, strength, node)
|
||||
end
|
||||
|
||||
-- check for tree growth if pointing at sapling
|
||||
-- if minetest.get_item_group(node.name, "sapling") > 0
|
||||
if random(5 - strength) == 1 then
|
||||
if minetest.get_item_group(node.name, "sapling") > 0
|
||||
and random(5 - strength) == 1 then
|
||||
check_sapling(pos, node.name)
|
||||
return
|
||||
end
|
||||
|
@ -71,7 +71,7 @@ local function updateDisplay(pos)
|
||||
end
|
||||
entity:set_properties({textures={etex}})
|
||||
entity:set_yaw((fdir.x ~= 0) and math.pi/2 or 0)
|
||||
entity:setpos(vector.add(pos,vector.multiply(fdir,0.39)))
|
||||
entity:set_pos(vector.add(pos,vector.multiply(fdir,0.39)))
|
||||
end
|
||||
|
||||
minetest.register_entity("digidisplay:text",{
|
||||
@ -97,6 +97,7 @@ for _,i in pairs({"tiny","small","medium","large","huge"}) do
|
||||
type = "fixed",
|
||||
fixed = {-0.5,-0.5,0.4,0.5,0.5,0.5},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec","field[channel;Channel;${channel}]")
|
||||
|
@ -11,6 +11,7 @@ minetest.register_node("digistuff:camera", {
|
||||
{
|
||||
receptor = {}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {cracky=2},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
|
@ -58,6 +58,7 @@ minetest.register_node("digistuff:card_reader",{
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.channel then meta:set_string("channel",fields.channel) end
|
||||
end,
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {
|
||||
|
90
digistuff/channelcopier.lua
Normal file
90
digistuff/channelcopier.lua
Normal file
@ -0,0 +1,90 @@
|
||||
minetest.register_tool("digistuff:channelcopier",{
|
||||
description = "Digilines Channel Copier (shift-click to copy, click to paste)",
|
||||
inventory_image = "digistuff_channelcopier.png",
|
||||
on_use = function(itemstack,player,pointed)
|
||||
if not (pointed and pointed.under) then return itemstack end
|
||||
if not (player and player:get_player_name()) then return end
|
||||
local pos = pointed.under
|
||||
local name = player:get_player_name()
|
||||
local node = minetest.get_node(pos)
|
||||
if not node then return itemstack end
|
||||
if minetest.registered_nodes[node.name]._digistuff_channelcopier_fieldname then
|
||||
if player:get_player_control().sneak then
|
||||
local channel = minetest.get_meta(pointed.under):get_string(minetest.registered_nodes[node.name]._digistuff_channelcopier_fieldname)
|
||||
if type(channel) == "string" and channel ~= "" then
|
||||
local stackmeta = itemstack:get_meta()
|
||||
stackmeta:set_string("channel",channel)
|
||||
stackmeta:set_string("description","Digilines Channel Copier, set to: "..channel)
|
||||
if player and player:get_player_name() then minetest.chat_send_player(player:get_player_name(),"Digilines channel copier set to "..minetest.colorize("#00FFFF",channel)..". Click another node to paste this channel there.") end
|
||||
end
|
||||
else
|
||||
if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
|
||||
minetest.record_protection_violation(pos,name)
|
||||
return itemstack
|
||||
end
|
||||
if minetest.registered_nodes[node.name]._digistuff_channelcopier_fieldname then
|
||||
local channel = itemstack:get_meta():get_string("channel")
|
||||
if type(channel) ~= "string" or channel == "" then
|
||||
minetest.chat_send_player(name,minetest.colorize("#FF5555","Error:").." No channel has been set yet. Shift-click to copy one.")
|
||||
return itemstack
|
||||
end
|
||||
local oldchannel = minetest.get_meta(pos):get_string(minetest.registered_nodes[node.name]._digistuff_channelcopier_fieldname)
|
||||
minetest.get_meta(pos):set_string(minetest.registered_nodes[node.name]._digistuff_channelcopier_fieldname,channel)
|
||||
if type(oldchannel) == "string" and oldchannel ~= "" then
|
||||
if channel == oldchannel then
|
||||
minetest.chat_send_player(name,"Channel of target node is already "..minetest.colorize("#00FFFF",oldchannel)..".")
|
||||
else
|
||||
minetest.chat_send_player(name,string.format("Channel of target node changed from %s to %s.",minetest.colorize("#00FFFF",oldchannel),minetest.colorize("#00FFFF",channel)))
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(name,"Channel of target node set to "..minetest.colorize("#00FFFF",channel)..".")
|
||||
end
|
||||
if type(minetest.registered_nodes[node.name]._digistuff_channelcopier_onset) == "function" then
|
||||
minetest.registered_nodes[node.name]._digistuff_channelcopier_onset(pos,node,player,channel,oldchannel)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "digistuff:channelcopier",
|
||||
recipe = {
|
||||
{"mesecons_fpga:programmer"},
|
||||
{"digilines:wire_std_00000000"}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
--NOTE: Asking to have your own mod added to here is not the right way to add compatibility with the channel copier.
|
||||
--Instead, include a _digistuff_channelcopier_fieldname field in your nodedef set to the name of the metadata field that contains the channel.
|
||||
--If you need an action to occur after the channel is set, place a function in _digistuff_channelcopier_onset.
|
||||
--Function signature is _digistuff_channelcopier_onset(pos,node,player,new_channel,old_channel)
|
||||
|
||||
local additionalnodes = {
|
||||
["digilines:chest"] = "channel",
|
||||
["digilines:lcd"] = "channel",
|
||||
["digilines:lightsensor"] = "channel",
|
||||
["digilines:rtc"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_1"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_2"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_3"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_4"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_5"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_6"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_7"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_8"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_9"] = "channel",
|
||||
["pipeworks:digiline_detector_tube_10"] = "channel",
|
||||
["pipeworks:digiline_filter"] = "channel",
|
||||
}
|
||||
|
||||
for name,field in pairs(additionalnodes) do
|
||||
if minetest.registered_nodes[name] and not minetest.registered_nodes[name]._digistuff_channelcopier_fieldname then
|
||||
minetest.override_item(name,{_digistuff_channelcopier_fieldname = field})
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -3,3 +3,4 @@ digilines
|
||||
mesecons?
|
||||
mesecons_mvps?
|
||||
screwdriver?
|
||||
pipeworks?
|
||||
|
@ -12,6 +12,7 @@ minetest.register_node("digistuff:detector", {
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec","size[8,4;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;6,2;radius;Radius;${radius}]button_exit[2.25,3;3,1;submit;Save]")
|
||||
end,
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local name = sender:get_player_name()
|
||||
if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
|
||||
|
@ -14,6 +14,7 @@ local components = {
|
||||
"piston",
|
||||
"timer",
|
||||
"cardreader",
|
||||
"channelcopier",
|
||||
}
|
||||
|
||||
if minetest.get_modpath("mesecons_luacontroller") then table.insert(components,"ioexpander") end
|
||||
@ -24,8 +25,8 @@ end
|
||||
|
||||
local http = minetest.request_http_api()
|
||||
if not http then
|
||||
minetest.log("error","digistuff is not allowed to use the HTTP API - digilines NIC will not be available!")
|
||||
minetest.log("error","If this functionality is desired, please add digistuff to your secure.http_mods setting")
|
||||
minetest.log("warning","digistuff is not allowed to use the HTTP API - digilines NIC will not be available!")
|
||||
minetest.log("warning","If this functionality is desired, please add digistuff to your secure.http_mods setting")
|
||||
else
|
||||
loadfile(string.format("%s%s%s.lua",minetest.get_modpath(minetest.get_current_modname()),DIR_DELIM,"nic"))(http)
|
||||
end
|
||||
|
@ -17,7 +17,7 @@ local implode_port_states = function(port)
|
||||
end
|
||||
|
||||
local gettiles = function(state)
|
||||
tiles = {
|
||||
local tiles = {
|
||||
"digistuff_ioexp_top.png",
|
||||
"jeija_microcontroller_bottom.png",
|
||||
"jeija_microcontroller_sides.png",
|
||||
@ -118,6 +118,7 @@ for i=0,15,1 do
|
||||
meta:set_int("don",0)
|
||||
meta:set_int("outstate",i)
|
||||
end,
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = gettiles(i),
|
||||
inventory_image = "digistuff_ioexp_top.png",
|
||||
drawtype = "nodebox",
|
||||
|
@ -13,6 +13,7 @@ for i=0,14,1 do
|
||||
{-0.25,0.4,-0.25,0.25,0.5,0.25},
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = i > 0 and {cracky = 1, not_in_creative_inventory = 1} or {cracky = 1},
|
||||
is_ground_content = false,
|
||||
light_source = i,
|
||||
|
@ -29,9 +29,10 @@ local valid_sounds = {
|
||||
crash = "mesecons_noteblock_crash",
|
||||
litecrash = "mesecons_noteblock_litecrash",
|
||||
fire = "fire_large",
|
||||
explosion = "tnt_explode",
|
||||
digistuff_piezo_short = "digistuff_piezo_short_single",
|
||||
digistuff_piezo_long = "digistuff_piezo_long_single"
|
||||
digistuff_piezo_long = "digistuff_piezo_long_single",
|
||||
digistuff_piston_extend = "digistuff_piston_extend",
|
||||
digistuff_piston_retract = "digistuff_piston_retract",
|
||||
}
|
||||
|
||||
local mod_sounds = {
|
||||
@ -54,19 +55,28 @@ local mod_sounds = {
|
||||
fake_fire = {
|
||||
fake_fire_extinguish = "fire_extinguish"
|
||||
},
|
||||
homedecor = {
|
||||
homedecor_doors_and_gates = {
|
||||
homedecor_book_close = "homedecor_book_close",
|
||||
homedecor_doorbell = "homedecor_doorbell",
|
||||
homedecor_door_close = "homedecor_door_close",
|
||||
homedecor_door_open = "homedecor_door_open",
|
||||
homedecor_faucet = "homedecor_faucet",
|
||||
homedecor_gate = "homedecor_gate_open_close",
|
||||
homedecor_gate = "homedecor_gate_open_close",
|
||||
},
|
||||
homedecor_bathroom = {
|
||||
homedecor_shower = "homedecor_shower",
|
||||
homedecor_telephone = "homedecor_telephone_ringing",
|
||||
homedecor_toilet = "homedecor_toilet_flush",
|
||||
homedecor_trash = "homedecor_trash_all",
|
||||
},
|
||||
homedecor_common = {
|
||||
homedecor_faucet = "homedecor_faucet",
|
||||
},
|
||||
homedecor_electrical = {
|
||||
homedecor_doorbell = "homedecor_doorbell",
|
||||
},
|
||||
homedecor_gastronomy = {
|
||||
homedecor_insert_coin = "insert_coin",
|
||||
homedecor_toaster = "toaster"
|
||||
homedecor_toaster = "toaster",
|
||||
},
|
||||
homedecor_trash_cans = {
|
||||
homedecor_trash = "homedecor_trash_all",
|
||||
},
|
||||
infrastructure = {
|
||||
infrastructure_emergency_phone = "infrastructure_emergency_phone"
|
||||
|
@ -21,6 +21,7 @@ minetest.register_node("digistuff:nic", {
|
||||
type = "fixed",
|
||||
fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 },
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
node_box = {
|
||||
--From Luacontroller
|
||||
type = "fixed",
|
||||
|
@ -1,5 +1,5 @@
|
||||
if not minetest.get_modpath("mesecons_noteblock") then
|
||||
minetest.log("error","mesecons_noteblock is not installed - digilines noteblock will not be available!")
|
||||
minetest.log("warning","mesecons_noteblock is not installed - digilines noteblock will not be available!")
|
||||
return
|
||||
end
|
||||
|
||||
@ -21,6 +21,7 @@ minetest.register_node("digistuff:noteblock", {
|
||||
tiles = {
|
||||
"mesecons_noteblock.png"
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local name = sender:get_player_name()
|
||||
if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
|
||||
@ -51,12 +52,23 @@ minetest.register_node("digistuff:noteblock", {
|
||||
if sound then minetest.sound_play(sound,{pos=pos}) end
|
||||
elseif type(msg) == "table" then
|
||||
if type(msg.sound) ~= "string" then return end
|
||||
for _,i in ipairs({"pitch","speed","volume","gain",}) do
|
||||
if type(msg[i]) == "string" then
|
||||
msg[i] = tonumber(msg[i])
|
||||
end
|
||||
end
|
||||
local sound = validnbsounds[msg.sound]
|
||||
if not msg.volume then msg.volume = msg.gain end
|
||||
local volume = 1
|
||||
if type(msg.volume) == "number" then
|
||||
volume = math.max(0,math.min(1,msg.volume))
|
||||
end
|
||||
if sound then minetest.sound_play({name=sound,gain=volume},{pos=pos}) end
|
||||
if not msg.pitch then msg.pitch = msg.speed end
|
||||
local pitch = 1
|
||||
if type(msg.pitch) == "number" then
|
||||
pitch = math.max(0.05,math.min(10,msg.pitch))
|
||||
end
|
||||
if sound then minetest.sound_play({name = sound,gain = volume,},{pos = pos,pitch = pitch,},true) end
|
||||
end
|
||||
end
|
||||
},
|
||||
|
@ -123,6 +123,11 @@ minetest.register_node("digistuff:panel", {
|
||||
"digistuff_panel_back.png",
|
||||
"digistuff_panel_front.png"
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
_digistuff_channelcopier_onset = function(pos)
|
||||
local helpmsg = "Channel has been set. Waiting for data..."
|
||||
digistuff.update_panel_formspec(pos,helpmsg)
|
||||
end,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
|
@ -14,6 +14,7 @@ minetest.register_node("digistuff:piezo", {
|
||||
digistuff.sounds_playing[pos_hash] = nil
|
||||
end
|
||||
end,
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {
|
||||
"digistuff_piezo_top.png",
|
||||
"digistuff_piezo_sides.png",
|
||||
|
@ -66,6 +66,7 @@ minetest.register_node("digistuff:piston", {
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.channel then meta:set_string("channel",fields.channel) end
|
||||
end,
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
digiline = {
|
||||
wire = {
|
||||
rules = {
|
||||
@ -124,6 +125,7 @@ minetest.register_node("digistuff:piston_ext", {
|
||||
{-0.5,-0.5,-1.5,0.5,0.5,0.5},
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
on_rotate = function() return false end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local name = sender:get_player_name()
|
||||
|
@ -95,6 +95,7 @@ minetest.register_node("digistuff:button", {
|
||||
rules = digistuff.button_get_rules,
|
||||
},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {dig_immediate = 2,digiline_receiver = 1,},
|
||||
description = "Digilines Button",
|
||||
on_construct = function(pos)
|
||||
@ -160,6 +161,7 @@ minetest.register_node("digistuff:button_off", {
|
||||
action = digistuff.button_handle_digilines,
|
||||
},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {dig_immediate = 2,not_in_creative_inventory = 1,digiline_receiver = 1,},
|
||||
drop = "digistuff:button",
|
||||
after_destruct = digistuff.remove_receiver,
|
||||
@ -204,6 +206,7 @@ minetest.register_node("digistuff:button_off_pushed", {
|
||||
action = digistuff.button_handle_digilines,
|
||||
},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
on_timer = digistuff.button_turnoff,
|
||||
groups = {dig_immediate = 2,not_in_creative_inventory = 1,digiline_receiver = 1,},
|
||||
drop = "digistuff:button",
|
||||
@ -240,6 +243,7 @@ minetest.register_node("digistuff:button_on", {
|
||||
{ -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
digiline =
|
||||
{
|
||||
receptor = {},
|
||||
@ -279,6 +283,7 @@ minetest.register_node("digistuff:button_on_pushed", {
|
||||
type = "fixed",
|
||||
fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 }
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
@ -338,6 +343,7 @@ minetest.register_node("digistuff:wall_knob", {
|
||||
{-0.4,-0.4,0,0.4,0.4,0.5},
|
||||
},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {dig_immediate = 2,digiline_receiver = 1,},
|
||||
description = "Digilines Wall Knob",
|
||||
on_construct = function(pos)
|
||||
@ -397,6 +403,7 @@ minetest.register_node("digistuff:wall_knob_configured", {
|
||||
{-0.4,-0.4,0,0.4,0.4,0.5},
|
||||
},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {dig_immediate = 2,digiline_receiver = 1,not_in_creative_inventory = 1,},
|
||||
description = "Digilines Wall Knob (configured state - you hacker you!)",
|
||||
drop = "digistuff:wall_knob",
|
||||
|
BIN
digistuff/textures/digistuff_channelcopier.png
Normal file
BIN
digistuff/textures/digistuff_channelcopier.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
@ -29,6 +29,7 @@ minetest.register_node("digistuff:timer", {
|
||||
{-3/16, -6/16, -3/16, 3/16, -5/16, 3/16}, -- IC
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
|
@ -2,6 +2,9 @@ digistuff.update_ts_formspec = function (pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local fs = "size[10,8]"..
|
||||
"background[0,0;0,0;digistuff_ts_bg.png;true]"
|
||||
if meta:get_int("realcoordinates") > 0 then
|
||||
fs = fs.."real_coordinates[true]"
|
||||
end
|
||||
if meta:get_int("init") == 0 then
|
||||
fs = fs.."field[3.75,3;3,1;channel;Channel;]"..
|
||||
"button_exit[4,3.75;2,1;save;Save]"
|
||||
@ -80,6 +83,8 @@ end
|
||||
digistuff.process_command = function (meta, data, msg)
|
||||
if msg.command == "clear" then
|
||||
data = {}
|
||||
elseif msg.command == "realcoordinates" then
|
||||
meta:set_int("realcoordinates",msg.enabled and 1 or 0)
|
||||
elseif msg.command == "addimage" then
|
||||
for _,i in pairs({"X","Y","W","H"}) do
|
||||
if not msg[i] or type(msg[i]) ~= "number" then
|
||||
@ -285,6 +290,11 @@ minetest.register_node("digistuff:touchscreen", {
|
||||
{ -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
_digistuff_channelcopier_onset = function(pos)
|
||||
minetest.get_meta(pos):set_int("init",1)
|
||||
digistuff.update_ts_formspec(pos)
|
||||
end,
|
||||
on_receive_fields = digistuff.ts_on_receive_fields,
|
||||
digiline =
|
||||
{
|
||||
|
@ -3,7 +3,7 @@ local maxslots = (string.sub(mtver.string, 1, 4) ~= "0.4.") and 32 or 23
|
||||
|
||||
local function validate_size(s)
|
||||
local size = s and tonumber(s) or 16
|
||||
if (size == 8 or size == 16 or size == 23 or size == 24 or size == 32)
|
||||
if (size == 8 or size == 10 or size == 16 or size == 23 or size == 24 or size == 32)
|
||||
and size <= maxslots then
|
||||
return size
|
||||
else
|
||||
@ -11,7 +11,7 @@ local function validate_size(s)
|
||||
end
|
||||
end
|
||||
|
||||
local hotbar_size_default = validate_size(minetest.setting_get("hotbar_size"))
|
||||
local hotbar_size_default = validate_size(minetest.settings:get("hotbar_size"))
|
||||
|
||||
local player_hotbar_settings = {}
|
||||
|
||||
|
BIN
dreambuilder_hotbar/textures/gui_hb_bg_10.png
Normal file
BIN
dreambuilder_hotbar/textures/gui_hb_bg_10.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 542 B |
184
dreambuilder_mp_extras/customize-dreambuilder.sh
Executable file
184
dreambuilder_mp_extras/customize-dreambuilder.sh
Executable file
@ -0,0 +1,184 @@
|
||||
#!/bin/bash
|
||||
|
||||
upstream_mods_path="/home/vanessa/Minetest-related/mods"
|
||||
modpack_path=$upstream_mods_path"/my_mods/dreambuilder_modpack"
|
||||
|
||||
# This script manages all of the various individual changes
|
||||
# for dreambuilder, e.g. updating mods, copying file components,
|
||||
# making changes to the code, etc.
|
||||
|
||||
rm -rf $modpack_path/*
|
||||
touch $modpack_path/modpack.txt
|
||||
|
||||
echo -e "\nBring all mods up-to-date from "$upstream_mods_path
|
||||
|
||||
cd $upstream_mods_path
|
||||
|
||||
# No trailing slashes on these items' paths!
|
||||
MODS_LIST="ShadowNinjas_mods/bedrock \
|
||||
my_mods/biome_lib \
|
||||
my_mods/coloredwood \
|
||||
my_mods/currency \
|
||||
my_mods/gloopblocks \
|
||||
my_mods/ilights \
|
||||
my_mods/moretrees \
|
||||
my_mods/misc_overrides \
|
||||
my_mods/nixie_tubes \
|
||||
my_mods/led_marquee \
|
||||
my_mods/pipeworks \
|
||||
my_mods/signs_lib \
|
||||
my_mods/basic_signs \
|
||||
my_mods/street_signs \
|
||||
my_mods/unifieddyes \
|
||||
my_mods/dreambuilder_mp_extras \
|
||||
my_mods/simple_streetlights \
|
||||
my_mods/basic_materials \
|
||||
my_mods/dreambuilder_hotbar \
|
||||
Calinous_mods/bedrock \
|
||||
Calinous_mods/maptools \
|
||||
Calinous_mods/moreblocks \
|
||||
Calinous_mods/moreores \
|
||||
Sokomines_mods/cottages \
|
||||
Sokomines_mods/locks \
|
||||
Sokomines_mods/travelnet \
|
||||
Sokomines_mods/windmill \
|
||||
RBAs_mods/datastorage \
|
||||
RBAs_mods/framedglass \
|
||||
RBAs_mods/unified_inventory \
|
||||
Mossmanikins_mods/memorandum \
|
||||
cheapies_mods/plasticbox \
|
||||
cheapies_mods/prefab_redo \
|
||||
cheapies_mods/invsaw \
|
||||
cheapies_mods/unifiedmesecons \
|
||||
cheapies_mods/digistuff \
|
||||
cheapies_mods/rgblightstone \
|
||||
cheapies_mods/solidcolor \
|
||||
cheapies_mods/arrowboards \
|
||||
cheapies_mods/digidisplay \
|
||||
Jeijas_mods/digilines \
|
||||
Jeijas_mods/jumping \
|
||||
CWzs_mods/player_textures \
|
||||
CWzs_mods/replacer \
|
||||
nekogloops_mods/glooptest \
|
||||
TenPlus1s_mods/farming \
|
||||
TenPlus1s_mods/bees \
|
||||
TenPlus1s_mods/bakedclay \
|
||||
TenPlus1s_mods/cblocks \
|
||||
TenPlus1s_mods/bonemeal \
|
||||
tumeninodes-mods/facade \
|
||||
Zeg9s_mods/steel \
|
||||
DonBatmans_mods/mymillwork \
|
||||
quartz \
|
||||
stained_glass \
|
||||
titanium \
|
||||
unifiedbricks \
|
||||
display_blocks \
|
||||
gardening \
|
||||
caverealms_lite \
|
||||
deezls_mods/extra_stairsplus \
|
||||
blox \
|
||||
bobblocks \
|
||||
campfire \
|
||||
notify_hud_provider"
|
||||
|
||||
MODPACKS_LIST="$(ls -d worldedit/*/) \
|
||||
$(ls -d my_mods/homedecor_modpack/*/) \
|
||||
$(ls -d RBAs_mods/technic/*/) \
|
||||
$(ls -d my_mods/plantlife_modpack/*/) \
|
||||
$(ls -d Zeg9s_mods/ufos/*/) \
|
||||
$(ls -d Jeijas_mods/mesecons/*/) \
|
||||
$(ls -d Philipbenrs_mods/castle-modpack/*/) \
|
||||
$(ls -d cheapies_mods/roads/*/) \
|
||||
$(ls -d cool_trees/*/)"
|
||||
|
||||
|
||||
for i in $MODS_LIST; do
|
||||
rsync -a $i $modpack_path --exclude .git*
|
||||
done
|
||||
|
||||
for i in $(echo $MODPACKS_LIST |sed "s:/ : :g; s:/$::"); do
|
||||
rsync -a $i $modpack_path --exclude .git*
|
||||
done
|
||||
|
||||
# above, all the stuff of the form $(ls -d foo/*/) are modpacks
|
||||
# those special commands copy out just the folders from within.
|
||||
|
||||
echo -e "\nConfigure Dreambuilder and its mods..."
|
||||
|
||||
# Disable some components
|
||||
|
||||
rm -f $modpack_path/dreambuilder_mp_extras/models/character.b3d
|
||||
|
||||
rm -rf $modpack_path/orbs_of_time
|
||||
|
||||
rm -f $modpack_path/bobblocks/trap.lua
|
||||
touch $modpack_path/bobblocks/trap.lua
|
||||
|
||||
rm -f $modpack_path/replacer/inspect.lua
|
||||
touch $modpack_path/replacer/inspect.lua
|
||||
|
||||
rm -rf $modpack_path/wrench
|
||||
|
||||
sed -i "s/bucket//" \
|
||||
$modpack_path/unifiedbricks/depends.txt
|
||||
|
||||
sed -i "s/mesecons =/foo =/" \
|
||||
$modpack_path/bobblocks/blocks.lua
|
||||
|
||||
sed -i "s/LOAD_OTHERGEN_MODULE = true/LOAD_OTHERGEN_MODULE = false/" \
|
||||
$modpack_path/glooptest/module.cfg
|
||||
|
||||
sed -i 's/"stairsplus_in_creative_inventory", true)/"stairsplus_in_creative_inventory", false)/' \
|
||||
$modpack_path/moreblocks/config.lua
|
||||
|
||||
echo "moreblocks.stairsplus_in_creative_inventory (Display Stairs+ nodes in creative inventory) bool false" \
|
||||
> $modpack_path/moreblocks/settingtypes.txt
|
||||
|
||||
rm -rf $modpack_path/worldedit_brush
|
||||
|
||||
# Add in all of the regular player skins for the player_textures mod
|
||||
|
||||
rm -f $modpack_path/player_textures/textures/*
|
||||
|
||||
LIST="player_Calinou.png
|
||||
player_cheapie.png
|
||||
player_crazyginger72.png
|
||||
player_Evergreen.png
|
||||
player_Jordach.png
|
||||
player_kaeza.png
|
||||
player_oOChainLynxOo.png
|
||||
player_PilzAdam_back.png
|
||||
player_PilzAdam.png
|
||||
player_playzooki.png
|
||||
player_sdzen.png
|
||||
player_ShadowNinja.png
|
||||
player_shadowzone.png
|
||||
player_Sokomine.png
|
||||
player_VanessaE.png
|
||||
player_Zeg9.png"
|
||||
|
||||
while read -r FILE; do
|
||||
cp /home/vanessa/Minetest-related/player_skins/$FILE \
|
||||
$modpack_path/player_textures/textures
|
||||
done <<< "$LIST"
|
||||
|
||||
cp -a /home/vanessa/Minetest-related/mods/my_mods/dreambuilder_mp_upstream_files/readme.md $modpack_path
|
||||
|
||||
cp /home/vanessa/Minetest-related/Scripts/customize-dreambuilder.sh $modpack_path"/dreambuilder_mp_extras/"
|
||||
cp /home/vanessa/Minetest-related/Scripts/update-dreambuilder-online-files.sh $modpack_path"/dreambuilder_mp_extras"
|
||||
|
||||
echo "Copying Dreambuilder to mods directory..."
|
||||
|
||||
rsync -a -v --delete $modpack_path /home/vanessa/.minetest/mods/
|
||||
|
||||
echo -e "\nCustomization completed. Here's what will be included in the modpack:\n"
|
||||
|
||||
ls $modpack_path
|
||||
|
||||
echo -e "\nUploading to the server..."
|
||||
|
||||
rsync -L --delete --progress -a -v -z -e "ssh" \
|
||||
--exclude=".git*" \
|
||||
--chown=minetest:minetest \
|
||||
/home/vanessa/Minetest-related/mods/my_mods/dreambuilder_modpack \
|
||||
minetest@daconcepts.com:/home/minetest/mods/my_mods
|
52
dreambuilder_mp_extras/update-dreambuilder-online-files.sh
Executable file
52
dreambuilder_mp_extras/update-dreambuilder-online-files.sh
Executable file
@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "\nBuilding Dreambuilder ..."
|
||||
echo -e "=================================================================\n"
|
||||
|
||||
/home/vanessa/Minetest-related/Scripts/customize-dreambuilder.sh
|
||||
|
||||
timestamp=`date +%Y%m%d-%H%M`
|
||||
|
||||
echo -e "\nCopy the Dreambuilder to /home/vanessa/.minetest/mods..."
|
||||
echo -e "=================================================================\n"
|
||||
|
||||
rsync -a --exclude=".git/" \
|
||||
/home/vanessa/Minetest-related/mods/my_mods/dreambuilder_modpack \
|
||||
/home/vanessa/.minetest/mods/
|
||||
|
||||
echo -e "\nUpdate git repo..."
|
||||
echo -e "=================================================================\n"
|
||||
|
||||
cd /home/vanessa/Minetest-related/mods/my_mods/dreambuilder_modpack
|
||||
git add .
|
||||
git commit -a
|
||||
git push
|
||||
git tag $timestamp
|
||||
git push --tags
|
||||
|
||||
echo -e "\nRecreate secondary game archive ..."
|
||||
echo -e "=================================================================\n"
|
||||
|
||||
echo "Build timestamp: $timestamp" > \
|
||||
/home/vanessa/Minetest-related/mods/my_mods/dreambuilder_modpack/build-date.txt
|
||||
|
||||
rm -f /home/vanessa/Minetest-related/Dreambuilder_Modpack.tar.bz2
|
||||
cd /home/vanessa/Minetest-related/mods/my_mods/
|
||||
|
||||
tar -jcf /home/vanessa/Digital-Audio-Concepts-Website/vanessa/hobbies/minetest/Dreambuilder_Modpack.tar.bz2 \
|
||||
--exclude=".git/*" \
|
||||
dreambuilder_modpack
|
||||
rm /home/vanessa/Minetest-related/mods/my_mods/dreambuilder_modpack/build-date.txt
|
||||
|
||||
echo -e "\nSync the local mod cache to the web server ..."
|
||||
echo -e "================================================\n"
|
||||
|
||||
rsync -L --exclude=\*.git \
|
||||
--delete --progress -a -v -z -O --checksum -e "ssh" \
|
||||
/home/vanessa/Minetest-related/mods/ \
|
||||
minetest@daconcepts.com:/home/minetest/www/my-main-mod-archive
|
||||
|
||||
/home/vanessa/Scripts/sync-website.sh
|
||||
|
||||
echo -e "\nDone. Build timestamp: $timestamp \n"
|
||||
|
@ -13,6 +13,7 @@ This mod works by adding your new plant to the {growing=1} group and numbering t
|
||||
|
||||
### Changelog:
|
||||
|
||||
- 1.44 - Added 'farming_stage_length' in mod settings for speed of crop growth, also thanks to TheDarkTiger for translation updates
|
||||
- 1.43 - Scythe works on use instead of right-click, added seed=1 groups to actual seeds and seed=2 group for plantable food items.
|
||||
- 1.42 - Soil needs water to be present within 3 blocks horizontally and 1 below to make wet soil, Jack 'o Lanterns now check protection, add chocolate block.
|
||||
- 1.41 - Each crop has it's own spawn rate (can be changed in farming.conf)
|
||||
|
@ -1,4 +1,6 @@
|
||||
|
||||
local S = farming.intllib
|
||||
|
||||
--= Helpers
|
||||
|
||||
local eth = minetest.get_modpath("ethereal")
|
||||
@ -29,7 +31,7 @@ if eth then
|
||||
alias("farming_plus:banana", "ethereal:banana")
|
||||
else
|
||||
minetest.register_node(":ethereal:banana", {
|
||||
description = "Banana",
|
||||
description = S("Banana"),
|
||||
drawtype = "torchlike",
|
||||
tiles = {"banana_single.png"},
|
||||
inventory_image = "banana_single.png",
|
||||
@ -47,7 +49,7 @@ else
|
||||
})
|
||||
|
||||
minetest.register_node(":ethereal:bananaleaves", {
|
||||
description = "Banana Leaves",
|
||||
description = S("Banana Leaves"),
|
||||
tiles = {"banana_leaf.png"},
|
||||
inventory_image = "banana_leaf.png",
|
||||
wield_image = "banana_leaf.png",
|
||||
@ -87,7 +89,7 @@ if eth then
|
||||
alias("farming_plus:orange_seed", "ethereal:orange_tree_sapling")
|
||||
else
|
||||
minetest.register_node(":ethereal:orange", {
|
||||
description = "Orange",
|
||||
description = S("Orange"),
|
||||
drawtype = "plantlike",
|
||||
tiles = {"farming_orange.png"},
|
||||
inventory_image = "farming_orange.png",
|
||||
@ -145,7 +147,7 @@ if eth then
|
||||
alias("farming_plus:strawberry", "ethereal:strawberry_7")
|
||||
else
|
||||
minetest.register_craftitem(":ethereal:strawberry", {
|
||||
description = "Strawberry",
|
||||
description = S("Strawberry"),
|
||||
inventory_image = "strawberry.png",
|
||||
wield_image = "strawberry.png",
|
||||
groups = {food_strawberry = 1, flammable = 2},
|
||||
|
@ -74,6 +74,7 @@ minetest.register_craft( {
|
||||
recipe = {
|
||||
{ "vessels:glass_bottle", "group:food_corn", "group:food_corn"},
|
||||
{ "group:food_corn", "group:food_corn", "group:food_corn"},
|
||||
{ "group:food_corn", "group:food_corn", "group:food_corn"},
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -78,7 +78,7 @@ crop_def.tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_mel
|
||||
crop_def.selection_box = {-.5, -.5, -.5, .5, .5, .5}
|
||||
crop_def.walkable = true
|
||||
crop_def.groups = {
|
||||
food_melon = 1, snappy = 1, oddly_breakable_by_hand = 1,
|
||||
food_melon = 1, snappy = 2, oddly_breakable_by_hand = 1,
|
||||
flammable = 2, plant = 1
|
||||
}
|
||||
--crop_def.drop = "farming:melon_slice 9"
|
||||
|
@ -33,7 +33,7 @@ minetest.register_craft({
|
||||
|
||||
-- ground pepper
|
||||
minetest.register_node("farming:pepper_ground", {
|
||||
description = ("Ground Pepper"),
|
||||
description = S("Ground Pepper"),
|
||||
inventory_image = "crops_pepper_ground.png",
|
||||
wield_image = "crops_pepper_ground.png",
|
||||
drawtype = "plantlike",
|
||||
|
@ -88,6 +88,7 @@ minetest.register_craft({
|
||||
|
||||
--- wooden scarecrow base
|
||||
minetest.register_node("farming:scarecrow_bottom", {
|
||||
description = S("Scarecrow Bottom"),
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
@ -203,9 +204,10 @@ minetest.register_node("farming:pumpkin_8", {
|
||||
"farming_pumpkin_side.png"
|
||||
},
|
||||
groups = {
|
||||
food_pumpkin = 1, choppy = 1, oddly_breakable_by_hand = 1,
|
||||
food_pumpkin = 1, choppy = 2, oddly_breakable_by_hand = 1,
|
||||
flammable = 2, plant = 1
|
||||
},
|
||||
drop = "farming:pumpkin_8",
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
|
@ -6,7 +6,7 @@ local S = farming.intllib
|
||||
-- Rye
|
||||
|
||||
farming.register_plant("farming:rye", {
|
||||
description = "Rye seed",
|
||||
description = S("Rye seed"),
|
||||
paramtype2 = "meshoptions",
|
||||
inventory_image = "farming_rye_seed.png",
|
||||
steps = 8,
|
||||
@ -14,6 +14,7 @@ farming.register_plant("farming:rye", {
|
||||
})
|
||||
|
||||
minetest.override_item("farming:rye", {
|
||||
description = S("Rye"),
|
||||
groups = {food_rye = 1, flammable = 4}
|
||||
})
|
||||
|
||||
@ -30,7 +31,7 @@ minetest.register_craft({
|
||||
-- Oats
|
||||
|
||||
farming.register_plant("farming:oat", {
|
||||
description = "Oat seed",
|
||||
description = S("Oat seed"),
|
||||
paramtype2 = "meshoptions",
|
||||
inventory_image = "farming_oat_seed.png",
|
||||
steps = 8,
|
||||
@ -38,6 +39,7 @@ farming.register_plant("farming:oat", {
|
||||
})
|
||||
|
||||
minetest.override_item("farming:oat", {
|
||||
description = S("Oats"),
|
||||
groups = {food_oats = 1, flammable = 4}
|
||||
})
|
||||
|
||||
@ -54,7 +56,7 @@ minetest.register_craft({
|
||||
-- Rice
|
||||
|
||||
farming.register_plant("farming:rice", {
|
||||
description = "Rice grains",
|
||||
description = S("Rice grains"),
|
||||
paramtype2 = "meshoptions",
|
||||
inventory_image = "farming_rice_seed.png",
|
||||
steps = 8,
|
||||
@ -62,18 +64,19 @@ farming.register_plant("farming:rice", {
|
||||
})
|
||||
|
||||
minetest.override_item("farming:rice", {
|
||||
description = S("Rice"),
|
||||
groups = {food_rice = 1, flammable = 4}
|
||||
})
|
||||
|
||||
minetest.register_craftitem("farming:rice_bread", {
|
||||
description = "Rice Bread",
|
||||
description = S("Rice Bread"),
|
||||
inventory_image = "farming_rice_bread.png",
|
||||
on_use = minetest.item_eat(5),
|
||||
groups = {food_rice_bread = 1, flammable = 2},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("farming:rice_flour", {
|
||||
description = "Rice Flour",
|
||||
description = S("Rice Flour"),
|
||||
inventory_image = "farming_rice_flour.png",
|
||||
groups = {food_rice_flour = 1, flammable = 1},
|
||||
})
|
||||
|
@ -20,7 +20,7 @@ minetest.register_craft({
|
||||
--= Salt
|
||||
|
||||
minetest.register_node("farming:salt", {
|
||||
description = ("Salt"),
|
||||
description = S("Salt"),
|
||||
inventory_image = "farming_salt.png",
|
||||
wield_image = "farming_salt.png",
|
||||
drawtype = "plantlike",
|
||||
@ -47,7 +47,7 @@ minetest.register_craft({
|
||||
--= Rose Water
|
||||
|
||||
minetest.register_node("farming:rose_water", {
|
||||
description = ("Rose Water"),
|
||||
description = S("Rose Water"),
|
||||
inventory_image = "farming_rose_water.png",
|
||||
wield_image = "farming_rose_water.png",
|
||||
drawtype = "plantlike",
|
||||
|
@ -321,7 +321,7 @@ end
|
||||
|
||||
-- hoe bomb item
|
||||
minetest.register_craftitem("farming:hoe_bomb", {
|
||||
description = S("Hoe Bomb (use or throw on grassy areas to hoe land"),
|
||||
description = S("Hoe Bomb (use or throw on grassy areas to hoe land)"),
|
||||
inventory_image = "farming_hoe_bomb.png",
|
||||
groups = {flammable = 2, not_in_creative_inventory = 1},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
@ -350,7 +350,7 @@ farming.add_to_scythe_not_drops = function(item)
|
||||
end
|
||||
|
||||
minetest.register_tool("farming:scythe_mithril", {
|
||||
description = S("Mithril Scythe (Use to harvest and replant crops)"),
|
||||
description = S("Mithril Scythe (Right-click to harvest and replant crops)"),
|
||||
inventory_image = "farming_scythe_mithril.png",
|
||||
sound = {breaks = "default_tool_breaks"},
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
farming = {
|
||||
mod = "redo",
|
||||
version = "20191202",
|
||||
version = "20200426",
|
||||
path = minetest.get_modpath("farming"),
|
||||
select = {
|
||||
type = "fixed",
|
||||
@ -79,7 +79,8 @@ end
|
||||
|
||||
|
||||
-- Growth Logic
|
||||
local STAGE_LENGTH_AVG = 160.0
|
||||
local STAGE_LENGTH_AVG = tonumber(
|
||||
minetest.settings:get("farming_stage_length")) or 160
|
||||
local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6
|
||||
|
||||
|
||||
|
@ -1,262 +0,0 @@
|
||||
# German Translation for farming mod.
|
||||
# Copyright (C) 2017
|
||||
# This file is distributed under the same license as the farming package.
|
||||
# Xanthin.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 1.27\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-03-31 HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2016-03-31 HO:MI+ZONE\n"
|
||||
"Last-Translator: Xanthin\n"
|
||||
"Language-Team: \n"
|
||||
"Language: German \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley Seed"
|
||||
msgstr "Gerstenkörner"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley"
|
||||
msgstr "Gerste"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Green Beans"
|
||||
msgstr "Grüne Bohnen"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Bean Pole (place on soil before planting beans)"
|
||||
msgstr "Bohnenstange (vor dem Pflanzen der Bohnen auf den\nAckerboden stellen)"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberries"
|
||||
msgstr "Blaubeeren"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberry Muffin"
|
||||
msgstr "Blaubeermuffin"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Carrot"
|
||||
msgstr "Möhre"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Golden Carrot"
|
||||
msgstr "Goldene Möhre"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cocoa Beans"
|
||||
msgstr "Kakaobohne"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cookie"
|
||||
msgstr "Keks"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Bar of Dark Chocolate"
|
||||
msgstr "Tafel Zartbitterschokolade"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Coffee Beans"
|
||||
msgstr "Kaffeebohnen"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Drinking Cup (empty)"
|
||||
msgstr "Tasse (leer)"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Cold Cup of Coffee"
|
||||
msgstr "Kalte Tasse Kaffee"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Hot Cup of Coffee"
|
||||
msgstr "Heiße Tasse Kaffee"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn"
|
||||
msgstr "Mais"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn on the Cob"
|
||||
msgstr "Maiskolben"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Bottle of Ethanol"
|
||||
msgstr "Flasche Ethanol"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton Seed"
|
||||
msgstr "Baumwollsamen"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton"
|
||||
msgstr "Baumwolle"
|
||||
|
||||
#: cucumber.lua
|
||||
msgid "Cucumber"
|
||||
msgstr "Gurke"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Donut"
|
||||
msgstr "Donut"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Chocolate Donut"
|
||||
msgstr "Schokodonut"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Apple Donut"
|
||||
msgstr "Apfeldonut"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Grapes"
|
||||
msgstr "Weintrauben"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Trellis (place on soil before planting grapes)"
|
||||
msgstr "Spalier (vor dem Pflanzen der Weintrauben auf den\nAckerboden stellen)"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Seed"
|
||||
msgstr "Hanfsamen"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Leaf"
|
||||
msgstr "Hanfblatt"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Bottle of Hemp Oil"
|
||||
msgstr "Flasche mit Hanföl"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Fibre"
|
||||
msgstr "Hanffaser"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Rope"
|
||||
msgstr "Hanfseil"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Hoe"
|
||||
msgstr "Hacke"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Wooden Hoe"
|
||||
msgstr "Holzhacke"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Stone Hoe"
|
||||
msgstr "Steinhacke"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Steel Hoe"
|
||||
msgstr "Stahlhacke"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Bronze Hoe"
|
||||
msgstr "Bronzehacke"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Mese Hoe"
|
||||
msgstr "Mesehacke"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Diamond Hoe"
|
||||
msgstr "Diamanthacke"
|
||||
|
||||
#: init.lua
|
||||
msgid "Seed"
|
||||
msgstr "Saatgut"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon Slice"
|
||||
msgstr "Melonenscheibe"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon"
|
||||
msgstr "Melone"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Potato"
|
||||
msgstr "Kartoffel"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Baked Potato"
|
||||
msgstr "Ofenkartoffel"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin"
|
||||
msgstr "Kürbis"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Slice"
|
||||
msgstr "Kürbisscheibe"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Jack 'O Lantern (punch to turn on and off)"
|
||||
msgstr "Kürbislaterne (Punch zum Ein- und Ausschalten)"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Bread"
|
||||
msgstr "Kürbisbrot"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Dough"
|
||||
msgstr "Kürbisteig"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberries"
|
||||
msgstr "Himbeeren"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberry Smoothie"
|
||||
msgstr "Himbeersmoothie"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb"
|
||||
msgstr "Rhabarber"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb Pie"
|
||||
msgstr "Rhabarberkuchen"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Soil"
|
||||
msgstr "Ackerboden"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Wet Soil"
|
||||
msgstr "Bewässerter Ackerboden"
|
||||
|
||||
#: sugar.lua
|
||||
msgid "Sugar"
|
||||
msgstr "Zucker"
|
||||
|
||||
#: tomato.lua
|
||||
msgid "Tomato"
|
||||
msgstr "Tomate"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat Seed"
|
||||
msgstr "Weizenkörner"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat"
|
||||
msgstr "Weizen"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Straw"
|
||||
msgstr "Stroh"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Flour"
|
||||
msgstr "Mehl"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Bread"
|
||||
msgstr "Brot"
|
195
farming/locale/de.txt
Normal file
195
farming/locale/de.txt
Normal file
@ -0,0 +1,195 @@
|
||||
# German translation of the farming mod by TenPlus1
|
||||
# textdomain: farming
|
||||
# author: Xanthin
|
||||
# author: TheDarkTiger
|
||||
# last update: 2020/Apr/26
|
||||
|
||||
###### folder . ######
|
||||
|
||||
### init.lua ###
|
||||
Seed=Saatgut
|
||||
|
||||
### compatibility.lua ###
|
||||
Banana=
|
||||
Banana Leaves=
|
||||
Orange=
|
||||
Strawberry=
|
||||
|
||||
### food.lua ###
|
||||
Sugar=Zucker
|
||||
Salt=
|
||||
Rose Water=
|
||||
Turkish Delight=
|
||||
Garlic Bread=
|
||||
Donut=Donut
|
||||
Chocolate Donut=Schokodonut
|
||||
Apple Donut=Apfeldonut
|
||||
Porridge=
|
||||
Jaffa Cake=
|
||||
|
||||
### hoes.lua ###
|
||||
Hoe=Hacke
|
||||
Wooden Hoe=Holzhacke
|
||||
Stone Hoe=Steinhacke
|
||||
Steel Hoe=Stahlhacke
|
||||
Bronze Hoe=Bronzehacke
|
||||
Mese Hoe=Mesehacke
|
||||
Diamond Hoe=Diamanthacke
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
Hoe Bomb (use or throw on grassy areas to hoe land)=
|
||||
Mithril Scythe (Right-click to harvest and replant crops)=
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
|
||||
### soil.lua ###
|
||||
Soil=Ackerboden
|
||||
Wet Soil=Bewässerter Ackerboden
|
||||
|
||||
### utensils.lua ###
|
||||
Wooden Bowl=
|
||||
Saucepan=
|
||||
Cooking Pot=
|
||||
Baking Tray=
|
||||
Skillet=
|
||||
Mortar and Pestle=
|
||||
Cutting Board=
|
||||
Juicer=
|
||||
Glass Mixing Bowl=
|
||||
|
||||
|
||||
###### folder ./crops ######
|
||||
|
||||
### barley.lua ###
|
||||
Barley Seed=Gerstenkörner
|
||||
Barley=Gerste
|
||||
|
||||
### beans.lua ###
|
||||
Green Beans=Grüne Bohnen
|
||||
Bean Pole (place on soil before planting beans)=Bohnenstange (vor dem Pflanzen der Bohnen auf den\nAckerboden stellen)
|
||||
|
||||
### beetroot.lua ###
|
||||
Beetroot=
|
||||
Beetroot Soup=
|
||||
|
||||
### blueberry.lua ###
|
||||
Blueberries=Blaubeeren
|
||||
Blueberry Muffin=Blaubeermuffin
|
||||
Blueberry Pie=
|
||||
|
||||
### carrot.lua ##
|
||||
Carrot=Möhre
|
||||
Carrot Juice=
|
||||
Golden Carrot=Goldene Möhre
|
||||
|
||||
### chili.lua ###
|
||||
Chili Pepper=
|
||||
Bowl of Chili=
|
||||
|
||||
### cocoa.lua ###
|
||||
Cocoa Beans=Kakaobohne
|
||||
Cookie=Keks
|
||||
Bar of Dark Chocolate=Tafel Zartbitterschokolade
|
||||
Chocolate Block=
|
||||
|
||||
### coffee.lua ###
|
||||
Coffee Beans=Kaffeebohnen
|
||||
Cup of Coffee=Tasse Kaffee
|
||||
|
||||
### corn.lua ###
|
||||
Corn=Mais
|
||||
Corn on the Cob=Maiskolben
|
||||
Cornstarch=
|
||||
Bottle of Ethanol=Flasche Ethanol
|
||||
|
||||
### cotton.lua ###
|
||||
Cotton Seed=Baumwollsamen
|
||||
Cotton=Baumwolle
|
||||
String=
|
||||
|
||||
### cucumber.lua ###
|
||||
Cucumber=Gurke
|
||||
|
||||
### garlic.lua ###
|
||||
Garlic clove=
|
||||
Garlic=
|
||||
Garlic Braid=
|
||||
|
||||
### grapes.lua ###
|
||||
Grapes=Weintrauben
|
||||
Trellis (place on soil before planting grapes)=Spalier (vor dem Pflanzen der Weintrauben auf den\nAckerboden stellen)
|
||||
|
||||
### hemp.lua ###
|
||||
Hemp Seed=Hanfsamen
|
||||
Hemp Leaf=Hanfblatt
|
||||
Bottle of Hemp Oil=Flasche mit Hanföl
|
||||
Hemp Fibre=Hanffaser
|
||||
Hemp Block=
|
||||
Hemp Rope=Hanfseil
|
||||
|
||||
### melon.lua ###
|
||||
Melon Slice=Melonenscheibe
|
||||
Melon=Melone
|
||||
|
||||
### onion.lua ###
|
||||
Onion=
|
||||
|
||||
### peas.lua ###
|
||||
Pea Pod=
|
||||
Peas=
|
||||
Pea Soup=
|
||||
|
||||
### pepper.lua ###
|
||||
Peppercorn=
|
||||
Pepper=
|
||||
Ground Pepper=
|
||||
|
||||
### pinapple.lua ###
|
||||
Pineapple Top=
|
||||
Pineapple=
|
||||
Pineapple Ring=
|
||||
Pineapple Juice=
|
||||
|
||||
### potato.lua ###
|
||||
Potato=Kartoffel
|
||||
Baked Potato=Ofenkartoffel
|
||||
Cucumber and Potato Salad=
|
||||
|
||||
### pumpkin.lua ###
|
||||
Pumpkin Slice=Kürbisscheibe
|
||||
Jack 'O Lantern (punch to turn on and off)=Kürbislaterne (Punch zum Ein- und Ausschalten)
|
||||
Scarecrow Bottom=
|
||||
Pumpkin Bread=Kürbisbrot
|
||||
Pumpkin Dough=Kürbisteig
|
||||
Pumpkin=Kürbis
|
||||
|
||||
### raspberry.lua ###
|
||||
Raspberries=Himbeeren
|
||||
Raspberry Smoothie=Himbeersmoothie
|
||||
|
||||
### rhubarb.lua ###
|
||||
Rhubarb=Rhabarber
|
||||
Rhubarb Pie=Rhabarberkuchen
|
||||
|
||||
### ryeoatrice.lua ###
|
||||
Rye=
|
||||
Rye seed=
|
||||
Oat=
|
||||
Oat seed=
|
||||
Rice=
|
||||
Rice grains=
|
||||
Rice Bread=
|
||||
Rice Flour=
|
||||
Multigrain Flour=
|
||||
Multigrain Bread=
|
||||
|
||||
### tomato.lua ###
|
||||
Tomato=Tomate
|
||||
|
||||
### wheat.lua ###
|
||||
Wheat Seed=Weizenkörner
|
||||
Wheat=Weizen
|
||||
Straw=Stroh
|
||||
Flour=Mehl
|
||||
Bread=Brot
|
||||
Sliced Bread=
|
||||
Toast=
|
||||
Toast Sandwich=
|
@ -1,259 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-27 20:21+0200\n"
|
||||
"PO-Revision-Date: 2018-03-27 22:16+0200\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
"Last-Translator: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Language: fr\n"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley Seed"
|
||||
msgstr "Graine d'orge"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley"
|
||||
msgstr "Orge"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Green Beans"
|
||||
msgstr "Haricots verts"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Bean Pole (place on soil before planting beans)"
|
||||
msgstr "Tuteur pour haricots (placer sur le sol avant de planter des haricots)"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberries"
|
||||
msgstr "Myrtilles"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberry Muffin"
|
||||
msgstr "Gâteau aux myrtilles"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Carrot"
|
||||
msgstr "Carotte"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Golden Carrot"
|
||||
msgstr "Carotte dorée"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cocoa Beans"
|
||||
msgstr "Fèves de chocolat"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cookie"
|
||||
msgstr "Biscuit"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Bar of Dark Chocolate"
|
||||
msgstr "Barre de chocolat noir"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Coffee Beans"
|
||||
msgstr "Grains de café"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Drinking Cup (empty)"
|
||||
msgstr "Tasse (vide)"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Cold Cup of Coffee"
|
||||
msgstr "Tasse de café froid"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Hot Cup of Coffee"
|
||||
msgstr "Tasse de café chaud"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn"
|
||||
msgstr "Maïs"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn on the Cob"
|
||||
msgstr "Épi de maïs"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Bottle of Ethanol"
|
||||
msgstr "Bouteille de'éthanol"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton Seed"
|
||||
msgstr "Graines de coton"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton"
|
||||
msgstr "Coton"
|
||||
|
||||
#: cucumber.lua
|
||||
msgid "Cucumber"
|
||||
msgstr "Concombre"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Donut"
|
||||
msgstr "Beignet"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Chocolate Donut"
|
||||
msgstr "Beignet au chocolat"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Apple Donut"
|
||||
msgstr "Beignet aux pommes"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Grapes"
|
||||
msgstr "Raisins"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Trellis (place on soil before planting grapes)"
|
||||
msgstr "Treillis (placer sur le sol avant de planter les raisins)"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Seed"
|
||||
msgstr "Graines de chanvre"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Leaf"
|
||||
msgstr "Feuille de chanvre"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Bottle of Hemp Oil"
|
||||
msgstr "Bouteille d'huile de chanvre"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Fibre"
|
||||
msgstr "Fibre de chanvre"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Rope"
|
||||
msgstr "Corde de chanvre"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Wooden Hoe"
|
||||
msgstr "Houe en bois"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Stone Hoe"
|
||||
msgstr "Houe en pierre"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Steel Hoe"
|
||||
msgstr "Houe en acier"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Bronze Hoe"
|
||||
msgstr "Houe en bronze"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Mese Hoe"
|
||||
msgstr "Houe en mese"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Diamond Hoe"
|
||||
msgstr "Houe en diamant"
|
||||
|
||||
#: init.lua
|
||||
msgid "Seed"
|
||||
msgstr "Graine"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon Slice"
|
||||
msgstr "Tranche de melon"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon"
|
||||
msgstr "Melon"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Potato"
|
||||
msgstr "Pomme de terre"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Baked Potato"
|
||||
msgstr "Pomme de terre cuite"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin"
|
||||
msgstr "Citrouille"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Slice"
|
||||
msgstr "Tranche de citrouille"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Jack 'O Lantern (punch to turn on and off)"
|
||||
msgstr "Jack 'O Lantern (tapé pour allumer et éteindre)"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Bread"
|
||||
msgstr "Pain à la citrouille"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Dough"
|
||||
msgstr "Pâte à la citrouille"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberries"
|
||||
msgstr "Framboises"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberry Smoothie"
|
||||
msgstr "Smoothie aux framboises"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb"
|
||||
msgstr "Rhubarbe"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb Pie"
|
||||
msgstr "Tarte à la rhubarbe"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Soil"
|
||||
msgstr "Sol"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Wet Soil"
|
||||
msgstr "Sol humide"
|
||||
|
||||
#: sugar.lua
|
||||
msgid "Sugar"
|
||||
msgstr "Sucre"
|
||||
|
||||
#: tomato.lua
|
||||
msgid "Tomato"
|
||||
msgstr "Tomate"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat Seed"
|
||||
msgstr "Graine de blé"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat"
|
||||
msgstr "Blé"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Straw"
|
||||
msgstr "Paille"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Flour"
|
||||
msgstr "Farine"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Bread"
|
||||
msgstr "Pain"
|
195
farming/locale/fr.txt
Normal file
195
farming/locale/fr.txt
Normal file
@ -0,0 +1,195 @@
|
||||
# Traduction Française du mod farming par TenPlus1
|
||||
# textdomain: farming
|
||||
# author: Papaou30
|
||||
# author: TheDarkTiger
|
||||
# last update: 2020/Apr/26
|
||||
|
||||
###### folder . ######
|
||||
|
||||
### init.lua ###
|
||||
Seed=Graine
|
||||
|
||||
### compatibility.lua ###
|
||||
Banana=Banane
|
||||
Banana Leaves=Feuilles de Banane
|
||||
Orange=Orange
|
||||
Strawberry=Fraise
|
||||
|
||||
### food.lua ###
|
||||
Sugar=Sucre
|
||||
Salt=Sel
|
||||
Rose Water=Eau de Rose
|
||||
Turkish Delight=Douceur Turque
|
||||
Garlic Bread=Pain à l'Ail
|
||||
Donut=Beignet
|
||||
Chocolate Donut=Beignet au chocolat
|
||||
Apple Donut=Beignet aux pommes
|
||||
Porridge=Gruau de céréales
|
||||
Jaffa Cake=Petit gâteau à l'orange "Jaffa"
|
||||
|
||||
### hoes.lua ###
|
||||
Hoe=Binette
|
||||
Wooden Hoe=Binette en Bois
|
||||
Stone Hoe=Binette en Pierre
|
||||
Steel Hoe=Binette en Acier
|
||||
Bronze Hoe=Binette en Bronze
|
||||
Mese Hoe=Binette en Mese
|
||||
Diamond Hoe=Binette en Diamant
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
Hoe Bomb (use or throw on grassy areas to hoe land)=Bombe à binnage (Actionner ou lancer sur une zone herbeuse pour la binner)
|
||||
Mithril Scythe (Right-click to harvest and replant crops)=Faux en Mithril (Récolte et replante des graines)
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
|
||||
### soil.lua ###
|
||||
Soil=Sol binné
|
||||
Wet Soil=Sol binné humide
|
||||
|
||||
### utensils.lua ###
|
||||
Wooden Bowl=Bol en Bois
|
||||
Saucepan=Casserole
|
||||
Cooking Pot=Fait-tout
|
||||
Baking Tray=Lèche-frite
|
||||
Skillet=Poêle
|
||||
Mortar and Pestle=Mortier et Pilon
|
||||
Cutting Board=Planche à découper
|
||||
Juicer=Presse-agrumes
|
||||
Glass Mixing Bowl=Terrine en Verre
|
||||
|
||||
|
||||
###### folder ./crops ######
|
||||
|
||||
### barley.lua ###
|
||||
Barley Seed=Graine d'Orge
|
||||
Barley=Orge
|
||||
|
||||
### beans.lua ###
|
||||
Green Beans=Haricots verts
|
||||
Bean Pole (place on soil before planting beans)=Tuteur pour haricots (placer sur le sol avant de planter des haricots)
|
||||
|
||||
### beetroot.lua ###
|
||||
Beetroot=Betrave
|
||||
Beetroot Soup=Soupe de Betrave
|
||||
|
||||
### blueberry.lua ###
|
||||
Blueberries=Myrtilles
|
||||
Blueberry Muffin=Muffin aux Myrtilles
|
||||
Blueberry Pie=Tarte aux Myrtilles
|
||||
|
||||
### carrot.lua ##
|
||||
Carrot=Carotte
|
||||
Carrot Juice=Jus de Carotte
|
||||
Golden Carrot=Carotte dorée
|
||||
|
||||
### chili.lua ###
|
||||
Chili Pepper=Piment Rouge
|
||||
Bowl of Chili=Assiette de Chilli
|
||||
|
||||
### cocoa.lua ###
|
||||
Cocoa Beans=Fèves de Cacao
|
||||
Cookie=Cookie
|
||||
Bar of Dark Chocolate=Tablette de Chocolat noir
|
||||
Chocolate Block=Block de Chocolat
|
||||
|
||||
### coffee.lua ###
|
||||
Coffee Beans=Grains de café
|
||||
Cup of Coffee=Tasse de café
|
||||
|
||||
### corn.lua ###
|
||||
Corn=Maïs
|
||||
Corn on the Cob=Cobette (Maïs cuit)
|
||||
Cornstarch=Fécule de Maïs
|
||||
Bottle of Ethanol=Bouteille d'Éthanol
|
||||
|
||||
### cotton.lua ###
|
||||
Cotton Seed=Graines de Coton
|
||||
Cotton=Coton
|
||||
String=Ficelle
|
||||
|
||||
### cucumber.lua ###
|
||||
Cucumber=Concombre
|
||||
|
||||
### garlic.lua ###
|
||||
Garlic clove=Gousse d'Ail
|
||||
Garlic=Tête d'Ail
|
||||
Garlic Braid=Ail tressé
|
||||
|
||||
### grapes.lua ###
|
||||
Grapes=Raisins
|
||||
Trellis (place on soil before planting grapes)=Treillis (placer sur le sol avant de planter la vigne)
|
||||
|
||||
### hemp.lua ###
|
||||
Hemp Seed=Graines de Chanvre
|
||||
Hemp Leaf=Feuille de Chanvre
|
||||
Bottle of Hemp Oil=Bouteille d'huile de Chanvre
|
||||
Hemp Fibre=Fibre de Chanvre
|
||||
Hemp Block=Bloc de Chanvre
|
||||
Hemp Rope=Corde de Chanvre
|
||||
|
||||
### melon.lua ###
|
||||
Melon Slice=Tranche de Melon
|
||||
Melon=Melon
|
||||
|
||||
### onion.lua ###
|
||||
Onion=Oignon
|
||||
|
||||
### peas.lua ###
|
||||
Pea Pod=Cosse de Petit-poids
|
||||
Peas=Petit-poids
|
||||
Pea Soup=Soupe de Petit-poids
|
||||
|
||||
### pepper.lua ###
|
||||
Peppercorn=Grain de Poivre
|
||||
Pepper=Poivron
|
||||
Ground Pepper=Poivre moulu
|
||||
|
||||
### pinapple.lua ###
|
||||
Pineapple Top=Pousse d'Ananas
|
||||
Pineapple=Ananas
|
||||
Pineapple Ring=Tranche d'Ananas
|
||||
Pineapple Juice=Jus d'Ananas
|
||||
|
||||
### potato.lua ###
|
||||
Potato=Pomme de terre
|
||||
Baked Potato=Pomme de terre cuite
|
||||
Cucumber and Potato Salad=Salade de Pomme de terre au Concombre
|
||||
|
||||
### pumpkin.lua ###
|
||||
Pumpkin Slice=Tranche de Citrouille
|
||||
Jack 'O Lantern (punch to turn on and off)=Jack 'O Lantern (Frapper pour allumer et éteindre)
|
||||
Scarecrow Bottom=Base d'Epouventail
|
||||
Pumpkin Bread=Pain à la Citrouille
|
||||
Pumpkin Dough=Pâton de pain à la Citrouille
|
||||
Pumpkin=Citrouille
|
||||
|
||||
### raspberry.lua ###
|
||||
Raspberries=Framboises
|
||||
Raspberry Smoothie=Smoothie aux Framboises
|
||||
|
||||
### rhubarb.lua ###
|
||||
Rhubarb=Rhubarbe
|
||||
Rhubarb Pie=Tarte à la rhubarbe
|
||||
|
||||
### ryeoatrice.lua ###
|
||||
Rye=Seigle
|
||||
Rye seed=Grains de Seigle
|
||||
Oat=Orge
|
||||
Oat seed=Grains d'Orge
|
||||
Rice=Riz
|
||||
Rice grains=Grain de Riz
|
||||
Rice Bread=Pain de Riz
|
||||
Rice Flour=Farine de Riz
|
||||
Multigrain Flour=Farine Multi-céréales
|
||||
Multigrain Bread=Pain aux Céréales
|
||||
|
||||
### tomato.lua ###
|
||||
Tomato=Tomate
|
||||
|
||||
### wheat.lua ###
|
||||
Wheat Seed=Grain de blé
|
||||
Wheat=Blé
|
||||
Straw=Paille
|
||||
Flour=Farine
|
||||
Bread=Pain
|
||||
Sliced Bread=Tranche de Pain
|
||||
Toast=Pain Grillé
|
||||
Toast Sandwich=Sandwich au Pain
|
@ -1,258 +0,0 @@
|
||||
# Portuguese Translation for farming mod.
|
||||
# Copyright (C) 2017
|
||||
# This file is distributed under the same license as the farming package.
|
||||
# BrunoMine <borgesdossantosbruno@gmail.com>, 2017.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 1.27\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-16 17:38-0300\n"
|
||||
"PO-Revision-Date: 2017-08-17 17:01-0300\n"
|
||||
"Last-Translator: BrunoMine <borgesdossantosbruno@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: Portuguese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Gtranslator 2.91.7\n"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley Seed"
|
||||
msgstr "Sementes de Cevada"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley"
|
||||
msgstr "Cevada"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Green Beans"
|
||||
msgstr "Feijoes Verdes"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Bean Pole (place on soil before planting beans)"
|
||||
msgstr "Apoio de feijao (coloque no solo antes de plantar feijao)"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberries"
|
||||
msgstr "Mirtilos"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberry Muffin"
|
||||
msgstr "Muffin de Mirtilos"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Carrot"
|
||||
msgstr "Cenoura"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Golden Carrot"
|
||||
msgstr "Cenoura Dourada"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cocoa Beans"
|
||||
msgstr "Amendoas de Cacau"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cookie"
|
||||
msgstr "Cookie"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Bar of Dark Chocolate"
|
||||
msgstr "Barra de Chocolate Preto"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Coffee Beans"
|
||||
msgstr "Grao de Cafe"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Drinking Cup (empty)"
|
||||
msgstr "Xicara (vazia)"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Cold Cup of Coffee"
|
||||
msgstr "Xicara de Cafe Frio"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Hot Cup of Coffee"
|
||||
msgstr "Xicara de Cafe Quente"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn"
|
||||
msgstr "Milho"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn on the Cob"
|
||||
msgstr "Espiga de Milho"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Bottle of Ethanol"
|
||||
msgstr "Garrafa de Etanol"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton Seed"
|
||||
msgstr "Sementes de Algodao"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton"
|
||||
msgstr "Algodao"
|
||||
|
||||
#: cucumber.lua
|
||||
msgid "Cucumber"
|
||||
msgstr "Pepino"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Donut"
|
||||
msgstr "Donut"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Chocolate Donut"
|
||||
msgstr "Donut de Chocolate"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Apple Donut"
|
||||
msgstr "Donut de Maça"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Grapes"
|
||||
msgstr "Uvas"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Trellis (place on soil before planting grapes)"
|
||||
msgstr "Grade de Ripas (colocar no solo antes de plantar uvas)"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Seed"
|
||||
msgstr "Sementes de Canhamo"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Leaf"
|
||||
msgstr "Folha de Canhamo"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Bottle of Hemp Oil"
|
||||
msgstr "Garrafa de Oleo de Canhamo"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Fibre"
|
||||
msgstr "Fibra de Canhamo"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Rope"
|
||||
msgstr "Corda de Canhamo"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Wooden Hoe"
|
||||
msgstr "Enxada de Madeira"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Stone Hoe"
|
||||
msgstr "Enxada de Pedra"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Steel Hoe"
|
||||
msgstr "Enxada de Aço"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Bronze Hoe"
|
||||
msgstr "Enxada de Bronze"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Mese Hoe"
|
||||
msgstr "Enxada de Mese"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Diamond Hoe"
|
||||
msgstr "Enxada de Diamante"
|
||||
|
||||
#: init.lua
|
||||
msgid "Seed"
|
||||
msgstr "Sementes"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon Slice"
|
||||
msgstr "Sementes de Melancia"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon"
|
||||
msgstr "Melancia"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Potato"
|
||||
msgstr "Batata"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Baked Potato"
|
||||
msgstr "Batata Cozida"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin"
|
||||
msgstr "Abobora"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Slice"
|
||||
msgstr "Pedaço de Abobora"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Jack 'O Lantern (punch to turn on and off)"
|
||||
msgstr "Jack 'O Lantern (Socos para ligar e desligar)"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Bread"
|
||||
msgstr "Pao de Abobora"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Dough"
|
||||
msgstr "Massa de Abobora"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberries"
|
||||
msgstr "Framboesa"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberry Smoothie"
|
||||
msgstr "Batida de Framboesa"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb"
|
||||
msgstr "Ruibarbo"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb Pie"
|
||||
msgstr "Torta de Ruibarbo"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Soil"
|
||||
msgstr "Solo"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Wet Soil"
|
||||
msgstr "Solo Seco"
|
||||
|
||||
#: sugar.lua
|
||||
msgid "Sugar"
|
||||
msgstr "Açucar"
|
||||
|
||||
#: tomato.lua
|
||||
msgid "Tomato"
|
||||
msgstr "Tomate"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat Seed"
|
||||
msgstr "Sementes de Trigo"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat"
|
||||
msgstr "Trigo"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Straw"
|
||||
msgstr "Palha"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Flour"
|
||||
msgstr "Farinha"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Bread"
|
||||
msgstr "Pao"
|
195
farming/locale/pt.txt
Normal file
195
farming/locale/pt.txt
Normal file
@ -0,0 +1,195 @@
|
||||
# Portuguese translation of the farming mod by TenPlus1
|
||||
# textdomain: farming
|
||||
# author: BrunoMine <borgesdossantosbruno@gmail.com>
|
||||
# author: TheDarkTiger
|
||||
# last update: 2020/Apr/26
|
||||
|
||||
###### folder . ######
|
||||
|
||||
### init.lua ###
|
||||
Seed=Sementes
|
||||
|
||||
### compatibility.lua ###
|
||||
Banana=
|
||||
Banana Leaves=
|
||||
Orange=
|
||||
Strawberry=
|
||||
|
||||
### food.lua ###
|
||||
Sugar=Açucar
|
||||
Salt=
|
||||
Rose Water=
|
||||
Turkish Delight=
|
||||
Garlic Bread=
|
||||
Donut=Donut
|
||||
Chocolate Donut=Donut de Chocolate
|
||||
Apple Donut=Donut de Maça
|
||||
Porridge=
|
||||
Jaffa Cake=
|
||||
|
||||
### hoes.lua ###
|
||||
Hoe=Enxada
|
||||
Wooden Hoe=Enxada de Madeira
|
||||
Stone Hoe=Enxada de Pedra
|
||||
Steel Hoe=Enxada de Aço
|
||||
Bronze Hoe=Enxada de Bronze
|
||||
Mese Hoe=Enxada de Mese
|
||||
Diamond Hoe=Enxada de Diamante
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
Hoe Bomb (use or throw on grassy areas to hoe land)=
|
||||
Mithril Scythe (Right-click to harvest and replant crops)=
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
|
||||
### soil.lua ###
|
||||
Soil=Solo
|
||||
Wet Soil=Solo Seco
|
||||
|
||||
### utensils.lua ###
|
||||
Wooden Bowl=
|
||||
Saucepan=
|
||||
Cooking Pot=
|
||||
Baking Tray=
|
||||
Skillet=
|
||||
Mortar and Pestle=
|
||||
Cutting Board=
|
||||
Juicer=
|
||||
Glass Mixing Bowl=
|
||||
|
||||
|
||||
###### folder ./crops ######
|
||||
|
||||
### barley.lua ###
|
||||
Barley Seed=Sementes de Cevada
|
||||
Barley=Cevada
|
||||
|
||||
### beans.lua ###
|
||||
Green Beans=Feijoes Verdes
|
||||
Bean Pole (place on soil before planting beans)=Apoio de feijao (coloque no solo antes de plantar feijao)
|
||||
|
||||
### beetroot.lua ###
|
||||
Beetroot=
|
||||
Beetroot Soup=
|
||||
|
||||
### blueberry.lua ###
|
||||
Blueberries=Mirtilos
|
||||
Blueberry Muffin=Muffin de Mirtilos
|
||||
Blueberry Pie=
|
||||
|
||||
### carrot.lua ##
|
||||
Carrot=Cenoura
|
||||
Carrot Juice=
|
||||
Golden Carrot=Cenoura Dourada
|
||||
|
||||
### chili.lua ###
|
||||
Chili Pepper=
|
||||
Bowl of Chili=
|
||||
|
||||
### cocoa.lua ###
|
||||
Cocoa Beans=Amendoas de Cacau
|
||||
Cookie=Cookie
|
||||
Bar of Dark Chocolate=Barra de Chocolate Preto
|
||||
Chocolate Block=
|
||||
|
||||
### coffee.lua ###
|
||||
Coffee Beans=Grao de Cafe
|
||||
Cup of Coffee=Xicara de Cafe
|
||||
|
||||
### corn.lua ###
|
||||
Corn=Milho
|
||||
Corn on the Cob=Espiga de Milho
|
||||
Cornstarch=
|
||||
Bottle of Ethanol=Garrafa de Etanol
|
||||
|
||||
### cotton.lua ###
|
||||
Cotton Seed=Sementes de Algodao
|
||||
Cotton=Algodao
|
||||
String=
|
||||
|
||||
### cucumber.lua ###
|
||||
Cucumber=Pepino
|
||||
|
||||
### garlic.lua ###
|
||||
Garlic clove=
|
||||
Garlic=
|
||||
Garlic Braid=
|
||||
|
||||
### grapes.lua ###
|
||||
Grapes=Uvas
|
||||
Trellis (place on soil before planting grapes)=Grade de Ripas (colocar no solo antes de plantar uvas)
|
||||
|
||||
### hemp.lua ###
|
||||
Hemp Seed=Sementes de Canhamo
|
||||
Hemp Leaf=Folha de Canhamo
|
||||
Bottle of Hemp Oil=Garrafa de Oleo de Canhamo
|
||||
Hemp Fibre=Fibra de Canhamo
|
||||
Hemp Block=
|
||||
Hemp Rope=Corda de Canhamo
|
||||
|
||||
### melon.lua ###
|
||||
Melon Slice=Sementes de Melancia
|
||||
Melon=Melancia
|
||||
|
||||
### onion.lua ###
|
||||
Onion=
|
||||
|
||||
### peas.lua ###
|
||||
Pea Pod=
|
||||
Peas=
|
||||
Pea Soup=
|
||||
|
||||
### pepper.lua ###
|
||||
Peppercorn=
|
||||
Pepper=
|
||||
Ground Pepper=
|
||||
|
||||
### pinapple.lua ###
|
||||
Pineapple Top=
|
||||
Pineapple=
|
||||
Pineapple Ring=
|
||||
Pineapple Juice=
|
||||
|
||||
### potato.lua ###
|
||||
Potato=Batata
|
||||
Baked Potato=Batata Cozida
|
||||
Cucumber and Potato Salad=
|
||||
|
||||
### pumpkin.lua ###
|
||||
Pumpkin Slice=Pedaço de Abobora
|
||||
Jack 'O Lantern (punch to turn on and off)=Jack 'O Lantern (Socos para ligar e desligar)
|
||||
Scarecrow Bottom=
|
||||
Pumpkin Bread=Pao de Abobora
|
||||
Pumpkin Dough=Massa de Abobora
|
||||
Pumpkin=Abobora
|
||||
|
||||
### raspberry.lua ###
|
||||
Raspberries=Framboesa
|
||||
Raspberry Smoothie=Batida de Framboesa
|
||||
|
||||
### rhubarb.lua ###
|
||||
Rhubarb=Ruibarbo
|
||||
Rhubarb Pie=Torta de Ruibarbo
|
||||
|
||||
### ryeoatrice.lua ###
|
||||
Rye=
|
||||
Rye seed=
|
||||
Oat=
|
||||
Oat seed=
|
||||
Rice=
|
||||
Rice grains=
|
||||
Rice Bread=
|
||||
Rice Flour=
|
||||
Multigrain Flour=
|
||||
Multigrain Bread=
|
||||
|
||||
### tomato.lua ###
|
||||
Tomato=Tomate
|
||||
|
||||
### wheat.lua ###
|
||||
Wheat Seed=Sementes de Trigo
|
||||
Wheat=Trigo
|
||||
Straw=Palha
|
||||
Flour=Farinha
|
||||
Bread=Pao
|
||||
Sliced Bread=
|
||||
Toast=
|
||||
Toast Sandwich=
|
@ -1,262 +0,0 @@
|
||||
# Russian translation for farming mod.
|
||||
# Copyright (C) 2018
|
||||
# This file is distributed under the same license as the farming package.
|
||||
# codexp <codexp@gmx.net>, 2018.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 1.27\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 01:25+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: Russian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley Seed"
|
||||
msgstr "семена ячменя"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley"
|
||||
msgstr "ячмень"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Green Beans"
|
||||
msgstr "зеленая фасоль"
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Bean Pole (place on soil before planting beans)"
|
||||
msgstr "жердь для бобовых (установите на почву перед посадкой бобовых)"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberries"
|
||||
msgstr "голубика"
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberry Muffin"
|
||||
msgstr "кекс из голубики"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Carrot"
|
||||
msgstr "морковь"
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Golden Carrot"
|
||||
msgstr "золотая морковь"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cocoa Beans"
|
||||
msgstr "бобы какао"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cookie"
|
||||
msgstr "печенье"
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Bar of Dark Chocolate"
|
||||
msgstr "плитка темного шоколада"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Coffee Beans"
|
||||
msgstr "кофе в зернах"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Drinking Cup (empty)"
|
||||
msgstr "чашка (пустая)"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Cold Cup of Coffee"
|
||||
msgstr "холодная чашка кофе"
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Hot Cup of Coffee"
|
||||
msgstr "горячая чашка кофе"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn"
|
||||
msgstr "кукуруза"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn on the Cob"
|
||||
msgstr "початок кукурузы"
|
||||
|
||||
#: corn.lua
|
||||
msgid "Bottle of Ethanol"
|
||||
msgstr "бутылка этилового спирта"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton Seed"
|
||||
msgstr "семена хлопка"
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton"
|
||||
msgstr "хлопок"
|
||||
|
||||
#: cucumber.lua
|
||||
msgid "Cucumber"
|
||||
msgstr "огурец"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Donut"
|
||||
msgstr "пончик"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Chocolate Donut"
|
||||
msgstr "шоколадный пончик"
|
||||
|
||||
#: donut.lua
|
||||
msgid "Apple Donut"
|
||||
msgstr "яблочный пончик"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Grapes"
|
||||
msgstr "виноград"
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Trellis (place on soil before planting grapes)"
|
||||
msgstr "решетка (поставьте на почву для посадки винограда)"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Seed"
|
||||
msgstr "семена конопли"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Leaf"
|
||||
msgstr "листья конопли"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Bottle of Hemp Oil"
|
||||
msgstr "бутылка конопляного масла"
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Fibre"
|
||||
msgstr ""
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Rope"
|
||||
msgstr "Пенька"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Hoe"
|
||||
msgstr "мотыга"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Wooden Hoe"
|
||||
msgstr "деревянная мотыга"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Stone Hoe"
|
||||
msgstr "каменная мотыга"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Steel Hoe"
|
||||
msgstr "стальная мотыга"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Bronze Hoe"
|
||||
msgstr "бронзовая мотыга"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Mese Hoe"
|
||||
msgstr "магическая мотыга"
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Diamond Hoe"
|
||||
msgstr "алмазная мотыга"
|
||||
|
||||
#: init.lua
|
||||
msgid "Seed"
|
||||
msgstr "семена"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon Slice"
|
||||
msgstr "ломтик арбуза"
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon"
|
||||
msgstr "арбуз"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Potato"
|
||||
msgstr "картофель"
|
||||
|
||||
#: potato.lua
|
||||
msgid "Baked Potato"
|
||||
msgstr "запеченный картофель"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin"
|
||||
msgstr "тыква"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Slice"
|
||||
msgstr "ломтик тыквы"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Jack 'O Lantern (punch to turn on and off)"
|
||||
msgstr "светильник джека (удар для включения и отключения)"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Bread"
|
||||
msgstr "тыквенный хлеб"
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Dough"
|
||||
msgstr "тыквенное тесто"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberries"
|
||||
msgstr "малина"
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberry Smoothie"
|
||||
msgstr "малиновый коктейль"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb"
|
||||
msgstr "ревень"
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb Pie"
|
||||
msgstr "пирог из ревеня"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Soil"
|
||||
msgstr "земля"
|
||||
|
||||
#: soil.lua
|
||||
msgid "Wet Soil"
|
||||
msgstr "мокрая земля"
|
||||
|
||||
#: sugar.lua
|
||||
msgid "Sugar"
|
||||
msgstr "сахар"
|
||||
|
||||
#: tomato.lua
|
||||
msgid "Tomato"
|
||||
msgstr "помидор"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat Seed"
|
||||
msgstr ""
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat"
|
||||
msgstr "семена пшеницы"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Straw"
|
||||
msgstr "солома"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Flour"
|
||||
msgstr "мука"
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Bread"
|
||||
msgstr "хлеб"
|
195
farming/locale/ru.txt
Normal file
195
farming/locale/ru.txt
Normal file
@ -0,0 +1,195 @@
|
||||
# Russian translation of the farming mod by TenPlus1
|
||||
# textdomain: farming
|
||||
# author: codexp <codexp@gmx.net>
|
||||
# author: TheDarkTiger
|
||||
# last update: 2020/Apr/26
|
||||
|
||||
###### folder . ######
|
||||
|
||||
### init.lua ###
|
||||
Seed=семена
|
||||
|
||||
### compatibility.lua ###
|
||||
Banana=
|
||||
Banana Leaves=
|
||||
Orange=
|
||||
Strawberry=
|
||||
|
||||
### food.lua ###
|
||||
Sugar=сахар
|
||||
Salt=
|
||||
Rose Water=
|
||||
Turkish Delight=
|
||||
Garlic Bread=
|
||||
Donut=пончик
|
||||
Chocolate Donut=шоколадный пончик
|
||||
Apple Donut=яблочный пончик
|
||||
Porridge=
|
||||
Jaffa Cake=
|
||||
|
||||
### hoes.lua ###
|
||||
Hoe=мотыга
|
||||
Wooden Hoe=деревянная мотыга
|
||||
Stone Hoe=каменная мотыга
|
||||
Steel Hoe=стальная мотыга
|
||||
Bronze Hoe=бронзовая мотыга
|
||||
Mese Hoe=магическая мотыга
|
||||
Diamond Hoe=алмазная мотыга
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
Hoe Bomb (use or throw on grassy areas to hoe land)=
|
||||
Mithril Scythe (Right-click to harvest and replant crops)=
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
|
||||
### soil.lua ###
|
||||
Soil=земля
|
||||
Wet Soil=мокрая земля
|
||||
|
||||
### utensils.lua ###
|
||||
Wooden Bowl=
|
||||
Saucepan=
|
||||
Cooking Pot=
|
||||
Baking Tray=
|
||||
Skillet=
|
||||
Mortar and Pestle=
|
||||
Cutting Board=
|
||||
Juicer=
|
||||
Glass Mixing Bowl=
|
||||
|
||||
|
||||
###### folder ./crops ######
|
||||
|
||||
### barley.lua ###
|
||||
Barley Seed=семена ячменя
|
||||
Barley=ячмень
|
||||
|
||||
### beans.lua ###
|
||||
Green Beans=зеленая фасоль
|
||||
Bean Pole (place on soil before planting beans)=жердь для бобовых (установите на почву перед посадкой бобовых)
|
||||
|
||||
### beetroot.lua ###
|
||||
Beetroot=
|
||||
Beetroot Soup=
|
||||
|
||||
### blueberry.lua ###
|
||||
Blueberries=голубика
|
||||
Blueberry Muffin=кекс из голубики
|
||||
Blueberry Pie=
|
||||
|
||||
### carrot.lua ##
|
||||
Carrot=морковь
|
||||
Carrot Juice=
|
||||
Golden Carrot=золотая морковь
|
||||
|
||||
### chili.lua ###
|
||||
Chili Pepper=
|
||||
Bowl of Chili=
|
||||
|
||||
### cocoa.lua ###
|
||||
Cocoa Beans=бобы какао
|
||||
Cookie=печенье
|
||||
Bar of Dark Chocolate=плитка темного шоколада
|
||||
Chocolate Block=
|
||||
|
||||
### coffee.lua ###
|
||||
Coffee Beans=кофе в зернах
|
||||
Cup of Coffee=чашка кофе
|
||||
|
||||
### corn.lua ###
|
||||
Corn=кукуруза
|
||||
Corn on the Cob=початок кукурузы
|
||||
Cornstarch=
|
||||
Bottle of Ethanol=бутылка этилового спирта
|
||||
|
||||
### cotton.lua ###
|
||||
Cotton Seed=семена хлопка
|
||||
Cotton=хлопок
|
||||
String=
|
||||
|
||||
### cucumber.lua ###
|
||||
Cucumber=огурец
|
||||
|
||||
### garlic.lua ###
|
||||
Garlic clove=
|
||||
Garlic=
|
||||
Garlic Braid=
|
||||
|
||||
### grapes.lua ###
|
||||
Grapes=виноград
|
||||
Trellis (place on soil before planting grapes)=решетка (поставьте на почву для посадки винограда)
|
||||
|
||||
### hemp.lua ###
|
||||
Hemp Seed=семена конопли
|
||||
Hemp Leaf=листья конопли
|
||||
Bottle of Hemp Oil=бутылка конопляного масла
|
||||
Hemp Fibre=
|
||||
Hemp Block=
|
||||
Hemp Rope=Пенька
|
||||
|
||||
### melon.lua ###
|
||||
Melon Slice=ломтик арбуза
|
||||
Melon=арбуз
|
||||
|
||||
### onion.lua ###
|
||||
Onion=
|
||||
|
||||
### peas.lua ###
|
||||
Pea Pod=
|
||||
Peas=
|
||||
Pea Soup=
|
||||
|
||||
### pepper.lua ###
|
||||
Peppercorn=
|
||||
Pepper=
|
||||
Ground Pepper=
|
||||
|
||||
### pinapple.lua ###
|
||||
Pineapple Top=
|
||||
Pineapple=
|
||||
Pineapple Ring=
|
||||
Pineapple Juice=
|
||||
|
||||
### potato.lua ###
|
||||
Potato=картофель
|
||||
Baked Potato=запеченный картофель
|
||||
Cucumber and Potato Salad=
|
||||
|
||||
### pumpkin.lua ###
|
||||
Pumpkin Slice=ломтик тыквы
|
||||
Jack 'O Lantern (punch to turn on and off)=светильник джека (удар для включения и отключения)
|
||||
Scarecrow Bottom=
|
||||
Pumpkin Bread=тыквенный хлеб
|
||||
Pumpkin Dough=тыквенное тесто
|
||||
Pumpkin=тыква
|
||||
|
||||
### raspberry.lua ###
|
||||
Raspberries=малина
|
||||
Raspberry Smoothie=малиновый коктейль
|
||||
|
||||
### rhubarb.lua ###
|
||||
Rhubarb=ревень
|
||||
Rhubarb Pie=пирог из ревеня
|
||||
|
||||
### ryeoatrice.lua ###
|
||||
Rye=
|
||||
Rye seed=
|
||||
Oat=
|
||||
Oat seed=
|
||||
Rice=
|
||||
Rice grains=
|
||||
Rice Bread=
|
||||
Rice Flour=
|
||||
Multigrain Flour=
|
||||
Multigrain Bread=
|
||||
|
||||
### tomato.lua ###
|
||||
Tomato=помидор
|
||||
|
||||
### wheat.lua ###
|
||||
Wheat Seed=
|
||||
Wheat=семена пшеницы
|
||||
Straw=солома
|
||||
Flour=мука
|
||||
Bread=хлеб
|
||||
Sliced Bread=
|
||||
Toast=
|
||||
Toast Sandwich=
|
@ -1,258 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-16 17:38-0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley Seed"
|
||||
msgstr ""
|
||||
|
||||
#: barley.lua
|
||||
msgid "Barley"
|
||||
msgstr ""
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Green Beans"
|
||||
msgstr ""
|
||||
|
||||
#: beanpole.lua
|
||||
msgid "Bean Pole (place on soil before planting beans)"
|
||||
msgstr ""
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberries"
|
||||
msgstr ""
|
||||
|
||||
#: blueberry.lua
|
||||
msgid "Blueberry Muffin"
|
||||
msgstr ""
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Carrot"
|
||||
msgstr ""
|
||||
|
||||
#: carrot.lua
|
||||
msgid "Golden Carrot"
|
||||
msgstr ""
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cocoa Beans"
|
||||
msgstr ""
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Cookie"
|
||||
msgstr ""
|
||||
|
||||
#: cocoa.lua
|
||||
msgid "Bar of Dark Chocolate"
|
||||
msgstr ""
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Coffee Beans"
|
||||
msgstr ""
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Drinking Cup (empty)"
|
||||
msgstr ""
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Cold Cup of Coffee"
|
||||
msgstr ""
|
||||
|
||||
#: coffee.lua
|
||||
msgid "Hot Cup of Coffee"
|
||||
msgstr ""
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn"
|
||||
msgstr ""
|
||||
|
||||
#: corn.lua
|
||||
msgid "Corn on the Cob"
|
||||
msgstr ""
|
||||
|
||||
#: corn.lua
|
||||
msgid "Bottle of Ethanol"
|
||||
msgstr ""
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton Seed"
|
||||
msgstr ""
|
||||
|
||||
#: cotton.lua
|
||||
msgid "Cotton"
|
||||
msgstr ""
|
||||
|
||||
#: cucumber.lua
|
||||
msgid "Cucumber"
|
||||
msgstr ""
|
||||
|
||||
#: donut.lua
|
||||
msgid "Donut"
|
||||
msgstr ""
|
||||
|
||||
#: donut.lua
|
||||
msgid "Chocolate Donut"
|
||||
msgstr ""
|
||||
|
||||
#: donut.lua
|
||||
msgid "Apple Donut"
|
||||
msgstr ""
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Grapes"
|
||||
msgstr ""
|
||||
|
||||
#: grapes.lua
|
||||
msgid "Trellis (place on soil before planting grapes)"
|
||||
msgstr ""
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Seed"
|
||||
msgstr ""
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Leaf"
|
||||
msgstr ""
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Bottle of Hemp Oil"
|
||||
msgstr ""
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Fibre"
|
||||
msgstr ""
|
||||
|
||||
#: hemp.lua
|
||||
msgid "Hemp Rope"
|
||||
msgstr ""
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Wooden Hoe"
|
||||
msgstr ""
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Stone Hoe"
|
||||
msgstr ""
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Steel Hoe"
|
||||
msgstr ""
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Bronze Hoe"
|
||||
msgstr ""
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Mese Hoe"
|
||||
msgstr ""
|
||||
|
||||
#: hoes.lua
|
||||
msgid "Diamond Hoe"
|
||||
msgstr ""
|
||||
|
||||
#: init.lua
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon Slice"
|
||||
msgstr ""
|
||||
|
||||
#: melon.lua
|
||||
msgid "Melon"
|
||||
msgstr ""
|
||||
|
||||
#: potato.lua
|
||||
msgid "Potato"
|
||||
msgstr ""
|
||||
|
||||
#: potato.lua
|
||||
msgid "Baked Potato"
|
||||
msgstr ""
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin"
|
||||
msgstr ""
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Slice"
|
||||
msgstr ""
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Jack 'O Lantern (punch to turn on and off)"
|
||||
msgstr ""
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Bread"
|
||||
msgstr ""
|
||||
|
||||
#: pumpkin.lua
|
||||
msgid "Pumpkin Dough"
|
||||
msgstr ""
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberries"
|
||||
msgstr ""
|
||||
|
||||
#: raspberry.lua
|
||||
msgid "Raspberry Smoothie"
|
||||
msgstr ""
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb"
|
||||
msgstr ""
|
||||
|
||||
#: rhubarb.lua
|
||||
msgid "Rhubarb Pie"
|
||||
msgstr ""
|
||||
|
||||
#: soil.lua
|
||||
msgid "Soil"
|
||||
msgstr ""
|
||||
|
||||
#: soil.lua
|
||||
msgid "Wet Soil"
|
||||
msgstr ""
|
||||
|
||||
#: sugar.lua
|
||||
msgid "Sugar"
|
||||
msgstr ""
|
||||
|
||||
#: tomato.lua
|
||||
msgid "Tomato"
|
||||
msgstr ""
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat Seed"
|
||||
msgstr ""
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Wheat"
|
||||
msgstr ""
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Straw"
|
||||
msgstr ""
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Flour"
|
||||
msgstr ""
|
||||
|
||||
#: wheat.lua
|
||||
msgid "Bread"
|
||||
msgstr ""
|
194
farming/locale/template.txt
Normal file
194
farming/locale/template.txt
Normal file
@ -0,0 +1,194 @@
|
||||
# Translation of the farming mod by TenPlus1
|
||||
# textdomain: farming
|
||||
# author: (you)
|
||||
# last update: 2020/Apr/26
|
||||
|
||||
###### folder . ######
|
||||
|
||||
### init.lua ###
|
||||
Seed=
|
||||
|
||||
### compatibility.lua ###
|
||||
Banana=
|
||||
Banana Leaves=
|
||||
Orange=
|
||||
Strawberry=
|
||||
|
||||
### food.lua ###
|
||||
Sugar=
|
||||
Salt=
|
||||
Rose Water=
|
||||
Turkish Delight=
|
||||
Garlic Bread=
|
||||
Donut=
|
||||
Chocolate Donut=
|
||||
Apple Donut=
|
||||
Porridge=
|
||||
Jaffa Cake=
|
||||
|
||||
### hoes.lua ###
|
||||
Hoe=
|
||||
Wooden Hoe=
|
||||
Stone Hoe=
|
||||
Steel Hoe=
|
||||
Bronze Hoe=
|
||||
Mese Hoe=
|
||||
Diamond Hoe=
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
Hoe Bomb (use or throw on grassy areas to hoe land)=
|
||||
Mithril Scythe (Right-click to harvest and replant crops)=
|
||||
# Surcharge du mod [Toolranks] à faire #
|
||||
|
||||
### soil.lua ###
|
||||
Soil=
|
||||
Wet Soil=
|
||||
|
||||
### utensils.lua ###
|
||||
Wooden Bowl=
|
||||
Saucepan=
|
||||
Cooking Pot=
|
||||
Baking Tray=
|
||||
Skillet=
|
||||
Mortar and Pestle=
|
||||
Cutting Board=
|
||||
Juicer=
|
||||
Glass Mixing Bowl=
|
||||
|
||||
|
||||
###### folder ./crops ######
|
||||
|
||||
### barley.lua ###
|
||||
Barley Seed=
|
||||
Barley=
|
||||
|
||||
### beans.lua ###
|
||||
Green Beans=
|
||||
Bean Pole (place on soil before planting beans)=
|
||||
|
||||
### beetroot.lua ###
|
||||
Beetroot=
|
||||
Beetroot Soup=
|
||||
|
||||
### blueberry.lua ###
|
||||
Blueberries=
|
||||
Blueberry Muffin=
|
||||
Blueberry Pie=
|
||||
|
||||
### carrot.lua ##
|
||||
Carrot=
|
||||
Carrot Juice=
|
||||
Golden Carrot=
|
||||
|
||||
### chili.lua ###
|
||||
Chili Pepper=
|
||||
Bowl of Chili=
|
||||
|
||||
### cocoa.lua ###
|
||||
Cocoa Beans=
|
||||
Cookie=
|
||||
Bar of Dark Chocolate=
|
||||
Chocolate Block=
|
||||
|
||||
### coffee.lua ###
|
||||
Coffee Beans=
|
||||
Cup of Coffee=
|
||||
|
||||
### corn.lua ###
|
||||
Corn=
|
||||
Corn on the Cob=
|
||||
Cornstarch=
|
||||
Bottle of Ethanol=
|
||||
|
||||
### cotton.lua ###
|
||||
Cotton Seed=
|
||||
Cotton=
|
||||
String=
|
||||
|
||||
### cucumber.lua ###
|
||||
Cucumber=
|
||||
|
||||
### garlic.lua ###
|
||||
Garlic clove=
|
||||
Garlic=
|
||||
Garlic Braid=
|
||||
|
||||
### grapes.lua ###
|
||||
Grapes=
|
||||
Trellis (place on soil before planting grapes)=
|
||||
|
||||
### hemp.lua ###
|
||||
Hemp Seed=
|
||||
Hemp Leaf=
|
||||
Bottle of Hemp Oil=
|
||||
Hemp Fibre=
|
||||
Hemp Block=
|
||||
Hemp Rope=
|
||||
|
||||
### melon.lua ###
|
||||
Melon Slice=
|
||||
Melon=
|
||||
|
||||
### onion.lua ###
|
||||
Onion=
|
||||
|
||||
### peas.lua ###
|
||||
Pea Pod=
|
||||
Peas=
|
||||
Pea Soup=
|
||||
|
||||
### pepper.lua ###
|
||||
Peppercorn=
|
||||
Pepper=
|
||||
Ground Pepper=
|
||||
|
||||
### pinapple.lua ###
|
||||
Pineapple Top=
|
||||
Pineapple=
|
||||
Pineapple Ring=
|
||||
Pineapple Juice=
|
||||
|
||||
### potato.lua ###
|
||||
Potato=
|
||||
Baked Potato=
|
||||
Cucumber and Potato Salad=
|
||||
|
||||
### pumpkin.lua ###
|
||||
Pumpkin Slice=
|
||||
Jack 'O Lantern (punch to turn on and off)=
|
||||
Scarecrow Bottom=
|
||||
Pumpkin Bread=
|
||||
Pumpkin Dough=
|
||||
Pumpkin=
|
||||
|
||||
### raspberry.lua ###
|
||||
Raspberries=
|
||||
Raspberry Smoothie=
|
||||
|
||||
### rhubarb.lua ###
|
||||
Rhubarb=
|
||||
Rhubarb Pie=
|
||||
|
||||
### ryeoatrice.lua ###
|
||||
Rye=
|
||||
Rye seed=
|
||||
Oat=
|
||||
Oat seed=
|
||||
Rice=
|
||||
Rice grains=
|
||||
Rice Bread=
|
||||
Rice Flour=
|
||||
Multigrain Flour=
|
||||
Multigrain Bread=
|
||||
|
||||
### tomato.lua ###
|
||||
Tomato=
|
||||
|
||||
### wheat.lua ###
|
||||
Wheat Seed=
|
||||
Wheat=
|
||||
Straw=
|
||||
Flour=
|
||||
Bread=
|
||||
Sliced Bread=
|
||||
Toast=
|
||||
Toast Sandwich=
|
2
farming/settingtypes.txt
Normal file
2
farming/settingtypes.txt
Normal file
@ -0,0 +1,2 @@
|
||||
# Contains a value used for speed of crop growth in seconds
|
||||
farming_stage_length (Farming Stage Length) float 160.0
|
@ -2,10 +2,38 @@
|
||||
|
||||
infrastructure.sound_handles = {}
|
||||
|
||||
local soundnames = {
|
||||
"gstype2",
|
||||
"safetrantype1",
|
||||
"safetrantype3",
|
||||
"wch",
|
||||
"nl",
|
||||
"uk",
|
||||
"de",
|
||||
}
|
||||
|
||||
local soundfriendlynames = {
|
||||
["gstype2"] = "US - GS \"Type 2\"",
|
||||
["safetrantype1"] = "US - Safetran \"Type 1\"",
|
||||
["safetrantype3"] = "US - Safetran \"Type 3\"",
|
||||
["wch"] = "US - WCH",
|
||||
["nl"] = "Netherlands",
|
||||
["uk"] = "UK",
|
||||
["de"] = "Germany",
|
||||
}
|
||||
|
||||
function infrastructure.play_bell(pos)
|
||||
local pos_hash = minetest.hash_node_position(pos)
|
||||
if not infrastructure.sound_handles[pos_hash] then
|
||||
infrastructure.sound_handles[pos_hash] = minetest.sound_play("infrastructure_ebell",
|
||||
local meta = minetest.get_meta(pos)
|
||||
local soundname = "infrastructure_ebell_"
|
||||
local selectedsound = meta:get_string("selectedsound")
|
||||
if selectedsound and string.len(selectedsound) > 0 then
|
||||
soundname = soundname..selectedsound
|
||||
else
|
||||
soundname = soundname.."gstype2"
|
||||
end
|
||||
infrastructure.sound_handles[pos_hash] = minetest.sound_play(soundname,
|
||||
{pos = pos, gain = AUTOMATIC_WARNING_DEVICE_VOLUME, loop = true, max_hear_distance = 30,})
|
||||
end
|
||||
end
|
||||
@ -74,6 +102,96 @@ function infrastructure.activate_lights(pos)
|
||||
end
|
||||
end
|
||||
|
||||
local function ebell_updateformspec(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local fs = "size[5,3]"
|
||||
fs = fs.."field[0.3,0.3;5,1;channel;Channel;${channel}]"
|
||||
fs = fs.."label[0,0.7;Model (changes will be applied on next start)]"
|
||||
fs = fs.."dropdown[0,1.1;5;sound;"
|
||||
for _,model in ipairs(soundnames) do
|
||||
fs = fs..minetest.formspec_escape(soundfriendlynames[model])..","
|
||||
end
|
||||
fs = string.sub(fs,1,-2)
|
||||
local idx = 1
|
||||
local selected = meta:get_string("selectedsound")
|
||||
for k,v in ipairs(soundnames) do
|
||||
if selected == v then idx = k end
|
||||
end
|
||||
fs = fs..";"..idx.."]"
|
||||
fs = fs.."button_exit[1,2.1;2,1;save;OK]"
|
||||
meta:set_string("formspec",fs)
|
||||
end
|
||||
|
||||
minetest.register_node("infrastructure:ebell",{
|
||||
description = "Railroad Crossing Electronic Bell",
|
||||
tiles = {
|
||||
"streets_pole.png",
|
||||
"streets_pole.png",
|
||||
"infrastructure_ebell_sides.png",
|
||||
"infrastructure_ebell_sides.png",
|
||||
"infrastructure_ebell_sides.png",
|
||||
"infrastructure_ebell_sides.png",
|
||||
},
|
||||
paramtype = "light",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.2,-0.5,-0.2,0.2,-0.35,0.2,},
|
||||
{-0.12,-0.35,-0.12,0.12,0.2,0.12,},
|
||||
},
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {cracky = 3,},
|
||||
on_destruct = infrastructure.stop_bell,
|
||||
after_place_node = ebell_updateformspec,
|
||||
on_receive_fields = function(pos,formname,fields,sender)
|
||||
if not fields.save then return end
|
||||
local name = sender:get_player_name()
|
||||
if minetest.is_protected(pos,name) and not minetest.check_player_privs(name,{protection_bypass=true}) then
|
||||
minetest.record_protection_violation(pos,name)
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.channel then
|
||||
meta:set_string("channel",fields.channel)
|
||||
end
|
||||
if fields.sound then
|
||||
for _,sound in ipairs(soundnames) do
|
||||
if fields.sound == soundfriendlynames[sound] then
|
||||
meta:set_string("selectedsound",sound)
|
||||
ebell_updateformspec(pos)
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
digiline = {
|
||||
wire = {
|
||||
rules = {
|
||||
{x = 1,y = 0,z = 0},
|
||||
{x = -1,y = 0,z = 0},
|
||||
{x = 0,y = 0,z = 1},
|
||||
{x = 0,y = 0,z = -1},
|
||||
{x = 0,y = -1,z = 0},
|
||||
},
|
||||
},
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = function(pos,node,channel,msg)
|
||||
local setchan = minetest.get_meta(pos):get_string("channel")
|
||||
if setchan ~= channel then
|
||||
return
|
||||
end
|
||||
if msg == "bell_on" or msg == "on" then
|
||||
infrastructure.play_bell(pos)
|
||||
elseif msg == "bell_off" or msg == "off" then
|
||||
infrastructure.stop_bell(pos)
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("infrastructure:automatic_warning_device_top", {
|
||||
tiles = {
|
||||
"infrastructure_traffic_lights_side.png",
|
||||
@ -364,6 +482,7 @@ minetest.register_node("infrastructure:automatic_warning_device_bottom", {
|
||||
{-1/16, 0, -1/16, 1/16, 3, 1/16}
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
|
||||
on_construct = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
|
@ -336,6 +336,7 @@ minetest.register_node("infrastructure:boom_barrier_bottom", {
|
||||
{-1/8, -1/2, -1/8, 1/8, 0, 1/8}
|
||||
}
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
|
||||
after_dig_node = function(pos)
|
||||
pos.y = pos.y + 1
|
||||
|
@ -25,6 +25,7 @@ for i = 1, 6 do
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[channel;Channel;${channel}]")
|
||||
end,
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
groups = {cracky = 3, not_in_creative_inventory = (i == 1 and 0 or 1)},
|
||||
light_source = TRAFFIC_LIGHTS_LIGHT_RANGE,
|
||||
drop = "infrastructure:lane_control_lights_1",
|
||||
|
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_de.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_de.ogg
Normal file
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_gstype2.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_gstype2.ogg
Normal file
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_nl.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_nl.ogg
Normal file
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_safetrantype1.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_safetrantype1.ogg
Normal file
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_safetrantype3.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_safetrantype3.ogg
Normal file
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_uk.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_uk.ogg
Normal file
Binary file not shown.
BIN
infrastructure/sounds/infrastructure_ebell_wch.ogg
Normal file
BIN
infrastructure/sounds/infrastructure_ebell_wch.ogg
Normal file
Binary file not shown.
BIN
infrastructure/textures/infrastructure_ebell_sides.png
Normal file
BIN
infrastructure/textures/infrastructure_ebell_sides.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
@ -1,9 +0,0 @@
|
||||
To craft a sorting wand:
|
||||
|
||||
S S X
|
||||
S S X
|
||||
X S X
|
||||
|
||||
To sort your own inventory use /sort
|
||||
|
||||
TODO: sort your hotbar separately
|
@ -1 +0,0 @@
|
||||
default
|
@ -1,245 +0,0 @@
|
||||
--------------------------------------------------------
|
||||
-- supporting junk
|
||||
|
||||
|
||||
function min(a,b)
|
||||
if a < b then
|
||||
return a
|
||||
else
|
||||
return b
|
||||
end
|
||||
end
|
||||
|
||||
if not string.starts then
|
||||
function string.starts(String,Start)
|
||||
return string.sub(String,1,string.len(Start))==Start
|
||||
end
|
||||
end
|
||||
|
||||
--------------------------------------------------------
|
||||
|
||||
function sortInventory(inv,sorter)
|
||||
local tabl = inv:get_list("main")
|
||||
if(tabl == nil) then
|
||||
-- we don't sort furnaces!
|
||||
return false
|
||||
end
|
||||
|
||||
table.sort(tabl,sorter)
|
||||
-- note take_item will set the name to '' when empty
|
||||
-- NEVER reduce the inventory array size for chests
|
||||
inv:set_list('main',tabl)
|
||||
return true
|
||||
end
|
||||
|
||||
sorters = {
|
||||
wise = function(a,b)
|
||||
-- XXX: this needs to have stricter ordering!
|
||||
-- (why is air scoring higher than the end?)
|
||||
if(a == nil) then
|
||||
if b == nil then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
elseif b == nil then
|
||||
return true
|
||||
end
|
||||
|
||||
local aname = a:get_name()
|
||||
local bname = b:get_name()
|
||||
-- make sure empty slots go at the end
|
||||
|
||||
if(string.len(aname) == 0) then
|
||||
return false
|
||||
end
|
||||
if(string.len(bname) == 0) then
|
||||
return true
|
||||
end
|
||||
|
||||
-- if the nodes are entirely different, sorted
|
||||
if (aname ~= bname) then
|
||||
return aname < bname
|
||||
end
|
||||
|
||||
-- same node types
|
||||
-- may need to collapse the two together!
|
||||
local bothmax = a:get_stack_max()
|
||||
if bothmax == 1 then
|
||||
-- it's unstackable
|
||||
local awear = a:get_wear()
|
||||
local bwear = b:get_wear()
|
||||
return awear < bwear
|
||||
end
|
||||
local acount = a:get_count()
|
||||
local bcount = b:get_count()
|
||||
if(acount == bothmax) then
|
||||
--print('same?',acount,bcount,bothmax)
|
||||
return bcount ~= bothmax
|
||||
elseif (bcount == bothmax) then
|
||||
--print('bcount bothmax derp')
|
||||
return false
|
||||
end
|
||||
local num = min(bcount,bothmax-acount)
|
||||
a:add_item(b:take_item(num))
|
||||
-- nothing can have both count AND wear, right?
|
||||
-- now a:count > b:count so a should go first
|
||||
--print('numnum',num)
|
||||
return true
|
||||
end,
|
||||
amount = function(a,b)
|
||||
return a:get_count() > b:get_count()
|
||||
end,
|
||||
wear = function(a,b)
|
||||
return a:get_wear() < b:get_wear()
|
||||
end,
|
||||
-- etc...
|
||||
}
|
||||
|
||||
function registerWand(method,sorter)
|
||||
if method == nil then
|
||||
name = "inventory_sorter:wand"
|
||||
sorter = sorters.wise
|
||||
assert(sorter ~= nil)
|
||||
desc = 'Chest Sorter'
|
||||
image = 'inventory_sorter_wand.png'
|
||||
else
|
||||
name = "inventory_sorter:wand_"..method
|
||||
desc = "Chest Sorter ("..method..')'
|
||||
image = 'inventory_sorter_wand_'..method..'.png'
|
||||
end
|
||||
|
||||
minetest.register_tool(name, {
|
||||
description = desc,
|
||||
inventory_image = image,
|
||||
wield_image = image,
|
||||
stack_max = 1,
|
||||
tool_capabilities = {
|
||||
full_punch_interval=0,
|
||||
max_drop_level=0
|
||||
},
|
||||
on_use = function(self,user,punched)
|
||||
local pos = minetest.get_pointed_thing_position(punched)
|
||||
if pos==nil then
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if(inv == nil) then
|
||||
minetest.chat_send_player(user:get_player_name(),"That can't be sorted.","Sorter -!-")
|
||||
return
|
||||
end
|
||||
-- this isn't exported, but default locked chest does this
|
||||
local owner = meta:get_string("owner")
|
||||
if(owner ~= nil and string.len(owner) ~= 0 and user:get_player_name() ~= owner) then
|
||||
minetest.chat_send_player(user:get_player_name(),"That's not yours!","Sorter -!-")
|
||||
return
|
||||
end
|
||||
-- Sokomine's shared chest locks
|
||||
if locks ~= nil then
|
||||
if punched == nil or punched.name == nil then
|
||||
punched = minetest.get_node(pos)
|
||||
end
|
||||
if punched and punched.name:starts('locks:') and not locks:lock_allow_use(pos,user) then
|
||||
-- the error has already been reported (yay side effects)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if(sortInventory(inv,sorter)) then
|
||||
minetest.chat_send_player(user:get_player_name(),"Chest sorted.","Sorter -!-")
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
function debugSorter(a,b)
|
||||
result = sorters.wise(a,b)
|
||||
function derp(a)
|
||||
return a:get_name()..":"..a:get_count()..":"..a:get_wear()
|
||||
end
|
||||
if a then
|
||||
a = derp(a)
|
||||
end
|
||||
if b then
|
||||
b = derp(b)
|
||||
end
|
||||
if result then
|
||||
print('a goes first',a,b)
|
||||
else
|
||||
print('b goes first',a,b)
|
||||
end
|
||||
return result
|
||||
end
|
||||
function test()
|
||||
function thingy(name,stack_max)
|
||||
return {
|
||||
get_name=function(self) return name end,
|
||||
get_stack_max=function(self) return stack_max end,
|
||||
get_count=function(self) return stack_max end,
|
||||
get_wear=function(self) return 1/stack_max end,
|
||||
take_item=function() end,
|
||||
add_item=function() end,
|
||||
derp=function()
|
||||
return name..', '..tostring(stack_max)
|
||||
end
|
||||
}
|
||||
end
|
||||
tabl = {thingy('thing1',1),thingy('hting2',1),nil,thingy('thing1',2),thingy('thing1',4),thingy('thing1',10)}
|
||||
table.sort(tabl,sorter)
|
||||
for n,v in pairs(tabl) do
|
||||
print(n,v:get_name(),v:get_count())
|
||||
end
|
||||
end
|
||||
-- test()
|
||||
-- print('yay')
|
||||
-- error('...')
|
||||
|
||||
for name,sorter in pairs(sorters) do
|
||||
registerWand(name,sorter)
|
||||
end
|
||||
|
||||
registerWand()
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'inventory_sorter:wand',
|
||||
recipe = {
|
||||
{'default:stick','default:stick',''},
|
||||
{'default:stick','default:stick',''},
|
||||
{'','default:stick',''}
|
||||
}
|
||||
})
|
||||
|
||||
-- is this one automatic...?
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'inventory_sorter:wand',
|
||||
recipe = {
|
||||
{'','default:stick','default:stick'},
|
||||
{'','default:stick','default:stick'},
|
||||
{'','','default:stick'}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_chatcommand('sort',{
|
||||
params = '[optional algorithm: amount,wear]',
|
||||
description = 'Sort your inventory! No takebacks.',
|
||||
privs={interact=true},
|
||||
func = function(name,param)
|
||||
local sorter = sorters.wise;
|
||||
if string.len(param) > 0 then
|
||||
sorter = sorters[param];
|
||||
if sorter == nil then
|
||||
minetest.chat_send_player(name,"/sort [algorithm]","Sorter -!-")
|
||||
minetest.chat_send_player(name,"Valid algorithms:","Sorter -!-")
|
||||
for n,v in pairs(sorters) do
|
||||
minetest.chat_send_player(name,' '..n,"Sorter -!-")
|
||||
end
|
||||
return;
|
||||
end
|
||||
end
|
||||
if(sortInventory(minetest.get_player_by_name(name):get_inventory(),sorter)) then
|
||||
minetest.chat_send_player(name,"Sorted.","Sorter -!-")
|
||||
end
|
||||
end
|
||||
})
|
Binary file not shown.
Before Width: | Height: | Size: 192 B |
@ -1 +0,0 @@
|
||||
inventory_sorter_wand.png
|
@ -1 +0,0 @@
|
||||
inventory_sorter_wand.png
|
@ -1 +0,0 @@
|
||||
inventory_sorter_wand.png
|
@ -14,7 +14,13 @@ minetest.register_craftitem("maptools:copper_coin", {
|
||||
inventory_image = "maptools_copper_coin.png",
|
||||
wield_scale = {x = 0.5, y = 0.5, z = 0.25},
|
||||
stack_max = 10000,
|
||||
groups = {not_in_creative_inventory = maptools.creative},
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft ({
|
||||
output = "maptools:copper_coin 10",
|
||||
type = "shapeless",
|
||||
recipe = { "default:copper_ingot", "default:copper_ingot" }
|
||||
})
|
||||
|
||||
minetest.register_craftitem("maptools:silver_coin", {
|
||||
@ -22,15 +28,27 @@ minetest.register_craftitem("maptools:silver_coin", {
|
||||
inventory_image = "maptools_silver_coin.png",
|
||||
wield_scale = {x = 0.5, y = 0.5, z = 0.25},
|
||||
stack_max = 10000,
|
||||
groups = {not_in_creative_inventory = maptools.creative},
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreores") then
|
||||
minetest.register_craft ({
|
||||
output = "maptools:silver_coin 10",
|
||||
type = "shapeless",
|
||||
recipe = { "moreores:silver_ingot", "moreores:silver_ingot" }
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craftitem("maptools:gold_coin", {
|
||||
description = S("Gold Coin"),
|
||||
inventory_image = "maptools_gold_coin.png",
|
||||
wield_scale = {x = 0.5, y = 0.5, z = 0.25},
|
||||
stack_max = 10000,
|
||||
groups = {not_in_creative_inventory = maptools.creative},
|
||||
})
|
||||
|
||||
minetest.register_craft ({
|
||||
output = "maptools:gold_coin 10",
|
||||
type = "shapeless",
|
||||
recipe = { "default:gold_ingot", "default:gold_ingot" }
|
||||
})
|
||||
|
||||
minetest.register_craftitem("maptools:infinitefuel", {
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = maptools
|
||||
description = Adds various special versions of normal blocks, tools, and other map maintainer tools.
|
||||
depends = default
|
||||
optional_depends = intllib
|
||||
optional_depends = intllib, moreores
|
||||
|
@ -285,7 +285,7 @@ function mesecon.mvps_move_objects(pos, dir, nodestack, movefactor)
|
||||
end
|
||||
movefactor = movefactor or 1
|
||||
dir = vector.multiply(dir, movefactor)
|
||||
for id, obj in pairs(minetest.object_refs) do
|
||||
for id, obj in pairs(minetest.get_objects_inside_radius(pos, #nodestack + 1)) do
|
||||
local obj_pos = obj:get_pos()
|
||||
local cbox = obj:get_properties().collisionbox
|
||||
local min_pos = vector.add(obj_pos, vector.new(cbox[1], cbox[2], cbox[3]))
|
||||
|
@ -1,3 +1,3 @@
|
||||
name = moretrees
|
||||
depends = default, biome_lib, vessels
|
||||
optional_depends = doors stairs, moreblocks, intllib, farming
|
||||
optional_depends = doors, stairs, moreblocks, intllib, farming
|
||||
|
@ -119,6 +119,18 @@ for i in ipairs(moretrees.treelist) do
|
||||
},
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
|
||||
"moretrees:" ..treename.. "_sapling",
|
||||
-- minp, maxp to be checked, relative to sapling pos
|
||||
-- minp_relative.y = 1 because sapling pos has been checked
|
||||
{x = -3, y = 1, z = -3},
|
||||
{x = 3, y = 6, z = 3},
|
||||
-- maximum interval of interior volume check
|
||||
4)
|
||||
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
local moretrees_leaves_inventory_image = nil
|
||||
@ -261,7 +273,19 @@ for i in ipairs(moretrees.treelist) do
|
||||
},
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
drop = "moretrees:"..treename.."_sapling"
|
||||
drop = "moretrees:"..treename.."_sapling",
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
|
||||
"moretrees:" ..treename.. "_sapling_ongen",
|
||||
-- minp, maxp to be checked, relative to sapling pos
|
||||
-- minp_relative.y = 1 because sapling pos has been checked
|
||||
{x = -3, y = 1, z = -3},
|
||||
{x = 3, y = 6, z = 3},
|
||||
-- maximum interval of interior volume check
|
||||
4)
|
||||
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
local fruitname = nil
|
||||
|
@ -80,7 +80,7 @@ if digiline_enabled and pipeworks.enable_digiline_detector_tube then
|
||||
|
||||
local setchan = meta:get_string("channel")
|
||||
|
||||
digiline:receptor_send(pos, digiline.rules.default, setchan, stack:to_string())
|
||||
digiline:receptor_send(pos, digiline.rules.default, setchan, stack:to_table())
|
||||
|
||||
return pipeworks.notvel(pipeworks.meseadjlist, velocity)
|
||||
end},
|
||||
|
@ -4,21 +4,17 @@ License:
|
||||
---Code: WTFPL
|
||||
---Textures: "white" image by VanessaE (WTFPL), "palette" image is from here: https://commons.wikimedia.org/wiki/File:256colour.png
|
||||
|
||||
Depends: mesecons_lightstone, digilines
|
||||
(neither is in depends.txt since the order doesn't matter)
|
||||
Depends: digilines
|
||||
(should load without it but won't be real useful)
|
||||
|
||||
Instructions:
|
||||
|
||||
* Grab one from the creative inventory, or craft one:
|
||||
nothing green lightstone nothing
|
||||
red lightstone luacontroller blue lightstone
|
||||
nothing digiline nothing
|
||||
|
||||
* Place the thing
|
||||
* Right-click and set a channel
|
||||
* Send a digilines message to it on that channel with the color you want (choices listed below)
|
||||
|
||||
Colors available: Any 6-digit hex color, such as "FF0000", "#c0ffee", "123456"... (will be set to the nearest color available)
|
||||
Colors available for 256-color version: Any 6-digit hex color, such as "FF0000", "#c0ffee", "123456"... (will be set to the nearest color available)
|
||||
Colors available for true-color version: Any 6-digit hex color, all values are supported
|
||||
|
||||
Group addressing mode:
|
||||
|
||||
@ -36,8 +32,8 @@ blue yellow
|
||||
|
||||
send this:
|
||||
|
||||
{{"red","green"},
|
||||
{"blue","yellow"}}
|
||||
{{"FF0000","00FF00"},
|
||||
{"0000FF","FFFF00"}}
|
||||
|
||||
Note that if you are using group addressing mode, if there is an already-configured RGB lightstone node directly above the one you are setting up,
|
||||
punching the one you are setting up (or right-clicking and selecting the Auto-Fill option) will attempt to auto-fill it (incrementing the Y address) from the one above.
|
||||
|
@ -8,7 +8,7 @@ else
|
||||
end
|
||||
end
|
||||
|
||||
function rgblightstone.autofill(pos, player)
|
||||
function rgblightstone.autofill(pos,player)
|
||||
local name = player:get_player_name()
|
||||
if minetest.is_protected(pos, name) and not minetest.check_player_privs(name, { protection_bypass = true }) then
|
||||
minetest.record_protection_violation(pos, name)
|
||||
@ -37,119 +37,247 @@ function rgblightstone.autofill(pos, player)
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("rgblightstone:rgblightstone", {
|
||||
tiles = {"rgblightstone_white.png"},
|
||||
palette = "rgblightstone_palette.png",
|
||||
groups = {cracky=2},
|
||||
description = "RGB Lightstone",
|
||||
paramtype2 = "color",
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[8,5;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;2,2;addrx;X Address;${addrx}]field[5,2;2,2;addry;Y Address;${addry}]button_exit[2.25,3;3,1;submit;Save]button_exit[2.25,4;3,1;autofill;Auto-Fill From Node Above]label[3,2;Leave address blank\nfor individual mode]")
|
||||
meta:set_string("infotext","Not configured! Right-click to set up manually, or punch to auto-fill from the node above.")
|
||||
meta:set_string("color","000000")
|
||||
end,
|
||||
on_punch = function(pos, node, player, pointed_thing)
|
||||
rgblightstone.autofill(pos,player)
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
local name = sender:get_player_name()
|
||||
if minetest.is_protected(pos, name) and not minetest.check_player_privs(name, { protection_bypass = true }) then
|
||||
minetest.record_protection_violation(pos, name)
|
||||
function rgblightstone.handle_digilines(pos,node,channel,msg,truecolor)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local setchan = meta:get_string("channel")
|
||||
if channel ~= setchan then
|
||||
return
|
||||
end
|
||||
|
||||
local addrx = tonumber(meta:get_string("addrx"))
|
||||
local addry = tonumber(meta:get_string("addry"))
|
||||
|
||||
if type(msg) == "table" then
|
||||
if not (addrx and addry and type(msg[addry]) == "table" and msg[addry][addrx]) then
|
||||
return
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.autofill then
|
||||
rgblightstone.autofill(pos,sender)
|
||||
msg = msg[addry][addrx]
|
||||
end
|
||||
|
||||
--Validation starts here
|
||||
if type(msg) ~= "string" then
|
||||
return
|
||||
end
|
||||
msg = string.upper(msg)
|
||||
--Drop a leading # if present (e.g. "#FF55AA")
|
||||
if string.sub(msg,1,1) == "#" then
|
||||
msg = string.sub(msg,2)
|
||||
end
|
||||
--Check length
|
||||
if string.len(msg) ~= 6 then
|
||||
return
|
||||
end
|
||||
--Make sure there aren't any invalid chars
|
||||
local acceptable_chars = {["0"]=true,["1"]=true,["2"]=true,["3"]=true,["4"]=true,["5"]=true,["6"]=true,["7"]=true,["8"]=true,["9"]=true,["A"]=true,["B"]=true,["C"]=true,["D"]=true,["E"]=true,["F"]=true}
|
||||
for i = 1,6,1 do
|
||||
if not acceptable_chars[string.sub(msg,i,i)] then
|
||||
return
|
||||
else
|
||||
if fields.channel then
|
||||
meta:set_string("channel", fields.channel)
|
||||
meta:set_string("infotext","")
|
||||
end
|
||||
if fields.addrx then meta:set_string("addrx",fields.addrx) end
|
||||
if fields.addry then meta:set_string("addry",fields.addry) end
|
||||
end
|
||||
end,
|
||||
light_source = 0,
|
||||
digiline = {
|
||||
wire = {
|
||||
rules = {
|
||||
{x = 1,y = 0,z = 0},
|
||||
{x = -1,y = 0,z = 0},
|
||||
{x = 0,y = 0,z = 1},
|
||||
{x = 0,y = 0,z = -1},
|
||||
{x = 0,y = 1,z = 0},
|
||||
{x = 0,y = -1,z = 0},
|
||||
},
|
||||
},
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local setchan = meta:get_string("channel")
|
||||
if channel ~= setchan then
|
||||
return
|
||||
end
|
||||
end
|
||||
--Should be a valid hex color by this point
|
||||
|
||||
meta:set_string("color",msg)
|
||||
|
||||
--Split into three colors
|
||||
local r = tonumber(string.sub(msg,1,2),16)
|
||||
local g = tonumber(string.sub(msg,3,4),16)
|
||||
local b = tonumber(string.sub(msg,5,6),16)
|
||||
|
||||
--Convert RGB to HSV... or at least V, for the light
|
||||
local v = math.max(r,g,b)
|
||||
v = math.floor(v/255*14)
|
||||
v = math.max(0,math.min(14,v))
|
||||
|
||||
local addrx = tonumber(meta:get_string("addrx"))
|
||||
local addry = tonumber(meta:get_string("addry"))
|
||||
if truecolor then
|
||||
node.name = "rgblightstone:rgblightstone_truecolor_"..v
|
||||
minetest.swap_node(pos,node)
|
||||
rgblightstone.update_entity(pos)
|
||||
else
|
||||
--Round to nearest available values and convert to a pixel count in the palette
|
||||
r = math.floor(r/32)
|
||||
g = math.floor(g/32)
|
||||
b = math.floor(b/64) --Blue has one fewer bit
|
||||
|
||||
local paletteidx = 32*g+4*r+b
|
||||
|
||||
if type(msg) == "table" then
|
||||
if not (addrx and addry and type(msg[addry]) == "table" and msg[addry][addrx]) then
|
||||
return
|
||||
end
|
||||
msg = msg[addry][addrx]
|
||||
end
|
||||
--Set the color
|
||||
node.name = "rgblightstone:rgblightstone_"..v
|
||||
node.param2 = paletteidx
|
||||
minetest.swap_node(pos,node)
|
||||
end
|
||||
end
|
||||
|
||||
--Validation starts here
|
||||
if type(msg) ~= "string" then
|
||||
return
|
||||
end
|
||||
msg = string.upper(msg)
|
||||
--Drop a leading # if present (e.g. "#FF55AA")
|
||||
if string.sub(msg,1,1) == "#" then
|
||||
msg = string.sub(msg,2)
|
||||
end
|
||||
--Check length
|
||||
if string.len(msg) ~= 6 then
|
||||
return
|
||||
end
|
||||
--Make sure there aren't any invalid chars
|
||||
local acceptable_chars = {["0"]=true,["1"]=true,["2"]=true,["3"]=true,["4"]=true,["5"]=true,["6"]=true,["7"]=true,["8"]=true,["9"]=true,["A"]=true,["B"]=true,["C"]=true,["D"]=true,["E"]=true,["F"]=true}
|
||||
for i = 1,6,1 do
|
||||
if not acceptable_chars[string.sub(msg,i,i)] then
|
||||
return
|
||||
else
|
||||
end
|
||||
end
|
||||
--Should be a valid hex color by this point
|
||||
|
||||
--Split into three colors
|
||||
local r = tonumber(string.sub(msg,1,2),16)
|
||||
local g = tonumber(string.sub(msg,3,4),16)
|
||||
local b = tonumber(string.sub(msg,5,6),16)
|
||||
|
||||
--Round to nearest available values and convert to a pixel count in the palette
|
||||
r = math.floor(r/32)
|
||||
g = math.floor(g/32)
|
||||
b = math.floor(b/64) --Blue has one fewer bit
|
||||
|
||||
local paletteidx = 32*g+4*r+b
|
||||
|
||||
--Set the color
|
||||
node.param2 = paletteidx
|
||||
minetest.swap_node(pos,node)
|
||||
function rgblightstone.handle_fields(pos,formname,fields,sender)
|
||||
local name = sender:get_player_name()
|
||||
if minetest.is_protected(pos, name) and not minetest.check_player_privs(name, { protection_bypass = true }) then
|
||||
minetest.record_protection_violation(pos, name)
|
||||
return
|
||||
end
|
||||
}
|
||||
}
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fields.autofill then
|
||||
rgblightstone.autofill(pos,sender)
|
||||
else
|
||||
if fields.channel then
|
||||
meta:set_string("channel", fields.channel)
|
||||
meta:set_string("infotext","")
|
||||
end
|
||||
if fields.addrx then meta:set_string("addrx",fields.addrx) end
|
||||
if fields.addry then meta:set_string("addry",fields.addry) end
|
||||
end
|
||||
end
|
||||
|
||||
function rgblightstone.update_entity(pos)
|
||||
local objs = minetest.get_objects_inside_radius(pos,0.5)
|
||||
for _,obj in ipairs(objs) do
|
||||
if obj:get_luaentity() and obj:get_luaentity().name == "rgblightstone:entity" then
|
||||
obj:remove()
|
||||
end
|
||||
end
|
||||
local obj = minetest.add_entity(pos,"rgblightstone:entity")
|
||||
local tex = "rgblightstone_white.png^[colorize:#"..minetest.get_meta(pos):get_string("color")..":255"
|
||||
obj:set_properties({textures = {tex,tex,tex,tex,tex,tex}})
|
||||
end
|
||||
|
||||
minetest.register_entity("rgblightstone:entity",{
|
||||
hp_max = 1,
|
||||
physical = false,
|
||||
collisionbox = {0,0,0,0,0,0},
|
||||
visual_size = {x=1,y=1},
|
||||
visual = "cube",
|
||||
static_save = false,
|
||||
})
|
||||
|
||||
for i=0,14,1 do
|
||||
minetest.register_node("rgblightstone:rgblightstone_"..i, {
|
||||
tiles = {"rgblightstone_white.png"},
|
||||
palette = "rgblightstone_palette.png",
|
||||
groups = i == 0 and {cracky = 2,} or {cracky = 2,not_in_creative_inventory = 1,},
|
||||
description = i == 0 and "256-Color RGB Lightstone" or "256-Color RGB Lightstone (lit state - you hacker you!)",
|
||||
paramtype2 = "color",
|
||||
light_source = i,
|
||||
drop = "rgblightstone:rgblightstone_0",
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[8,5;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;2,2;addrx;X Address;${addrx}]field[5,2;2,2;addry;Y Address;${addry}]button_exit[2.25,3;3,1;submit;Save]button_exit[2.25,4;3,1;autofill;Auto-Fill From Node Above]label[3,2;Leave address blank\nfor individual mode]")
|
||||
meta:set_string("infotext","Not configured! Right-click to set up manually, or punch to auto-fill from the node above.")
|
||||
meta:set_string("color","000000")
|
||||
end,
|
||||
on_punch = function(pos,node,player,pointed_thing)
|
||||
rgblightstone.autofill(pos,player)
|
||||
end,
|
||||
on_receive_fields = rgblightstone.handle_fields,
|
||||
light_source = 0,
|
||||
digiline = {
|
||||
wire = {
|
||||
rules = {
|
||||
{x = 1,y = 0,z = 0},
|
||||
{x = -1,y = 0,z = 0},
|
||||
{x = 0,y = 0,z = 1},
|
||||
{x = 0,y = 0,z = -1},
|
||||
{x = 0,y = 1,z = 0},
|
||||
{x = 0,y = -1,z = 0},
|
||||
},
|
||||
},
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = function(pos,node,channel,msg)
|
||||
rgblightstone.handle_digilines(pos,node,channel,msg,false)
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("rgblightstone:rgblightstone_truecolor_"..i, {
|
||||
tiles = {"rgblightstone_white.png^[colorize:#000000:255"},
|
||||
groups = i == 0 and {cracky = 2,} or {cracky = 2,not_in_creative_inventory = 1,},
|
||||
description = i == 0 and "True-Color RGB Lightstone" or "True-Color RGB Lightstone (lit state - you hacker you!)",
|
||||
light_source = i,
|
||||
drop = "rgblightstone:rgblightstone_truecolor_0",
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[8,5;]field[1,1;6,2;channel;Channel;${channel}]field[1,2;2,2;addrx;X Address;${addrx}]field[5,2;2,2;addry;Y Address;${addry}]button_exit[2.25,3;3,1;submit;Save]button_exit[2.25,4;3,1;autofill;Auto-Fill From Node Above]label[3,2;Leave address blank\nfor individual mode]")
|
||||
meta:set_string("infotext","Not configured! Right-click to set up manually, or punch to auto-fill from the node above.")
|
||||
meta:set_string("color","000000")
|
||||
rgblightstone.update_entity(pos)
|
||||
end,
|
||||
on_punch = function(pos,node,player,pointed_thing)
|
||||
rgblightstone.autofill(pos,player)
|
||||
end,
|
||||
after_destruct = function(pos)
|
||||
local objs = minetest.get_objects_inside_radius(pos,0.5)
|
||||
for _,obj in ipairs(objs) do
|
||||
if obj:get_luaentity() and obj:get_luaentity().name == "rgblightstone:entity" then
|
||||
obj:remove()
|
||||
end
|
||||
end
|
||||
end,
|
||||
paramtype = "light",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {{-0.45,-0.45,-0.45,0.45,0.45,0.45}}
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {{-0.5,-0.5,-0.5,0.5,0.5,0.5}}
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {{-0.5,-0.5,-0.5,0.5,0.5,0.5}}
|
||||
},
|
||||
on_receive_fields = rgblightstone.handle_fields,
|
||||
light_source = 0,
|
||||
digiline = {
|
||||
wire = {
|
||||
rules = {
|
||||
{x = 1,y = 0,z = 0},
|
||||
{x = -1,y = 0,z = 0},
|
||||
{x = 0,y = 0,z = 1},
|
||||
{x = 0,y = 0,z = -1},
|
||||
{x = 0,y = 1,z = 0},
|
||||
{x = 0,y = -1,z = 0},
|
||||
},
|
||||
},
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = function(pos,node,channel,msg)
|
||||
rgblightstone.handle_digilines(pos,node,channel,msg,true)
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
local tclist = {}
|
||||
for i=0,14,1 do table.insert(tclist,"rgblightstone:rgblightstone_truecolor_"..i) end
|
||||
|
||||
minetest.register_lbm({
|
||||
name = "rgblightstone:restore_entities",
|
||||
label = "Restore true-color rgblightstone entities",
|
||||
nodenames = tclist,
|
||||
run_at_every_load = true,
|
||||
action = rgblightstone.update_entity,
|
||||
})
|
||||
|
||||
minetest.register_alias("rgblightstone:rgblightstone","rgblightstone:rgblightstone_0")
|
||||
minetest.register_alias("rgblightstone:rgblightstone_truecolor","rgblightstone:rgblightstone_truecolor_0")
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "rgblightstone:rgblightstone",
|
||||
output = "rgblightstone:rgblightstone_0",
|
||||
recipe = {
|
||||
{"","mesecons_lightstone:lightstone_green_off",""},
|
||||
{"mesecons_lightstone:lightstone_red_off","mesecons_luacontroller:luacontroller0000","mesecons_lightstone:lightstone_blue_off"},
|
||||
{"","digilines:wire_std_00000000",""}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "rgblightstone:rgblightstone_truecolor_0",
|
||||
recipe = {
|
||||
{"","rgblightstone:rgblightstone_0",""},
|
||||
{"rgblightstone:rgblightstone_0","mesecons_luacontroller:luacontroller0000","rgblightstone:rgblightstone_0"},
|
||||
{"","digilines:wire_std_00000000",""}
|
||||
}
|
||||
})
|
||||
|
2
rgblightstone/mod.conf
Normal file
2
rgblightstone/mod.conf
Normal file
@ -0,0 +1,2 @@
|
||||
name = rgblightstone
|
||||
description = RGB Lightstone
|
@ -159,7 +159,7 @@ local ctexcache = {}
|
||||
minetest.register_entity("signs_lib:text", {
|
||||
collisionbox = { 0, 0, 0, 0, 0, 0 },
|
||||
visual = "mesh",
|
||||
mesh = "signs_lib_standard_wall_sign_entity.obj",
|
||||
mesh = "signs_lib_standard_sign_entity_wall.obj",
|
||||
textures = {},
|
||||
static_save = false,
|
||||
backface_culling = false
|
||||
|
@ -159,6 +159,16 @@ local function get_receive_fields(name, data)
|
||||
return function(pos, formname, fields, sender)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local page = "main"
|
||||
|
||||
local owner = meta:get_string("owner")
|
||||
if owner ~= "" then
|
||||
-- prevent modification of locked chests
|
||||
if owner ~= sender:get_player_name() then return end
|
||||
elseif not fields.quit then
|
||||
-- prevent modification of protected chests
|
||||
if minetest.is_protected(pos, sender:get_player_name()) then return end
|
||||
end
|
||||
|
||||
if fields.sort or (data.autosort and fields.quit and meta:get_int("autosort") == 1) then
|
||||
sort_inventory(meta:get_inventory())
|
||||
end
|
||||
|
@ -391,6 +391,7 @@ minetest.register_node(":streets:beacon_hybrid_off",{
|
||||
type = "fixed",
|
||||
fixed = streets.hbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_hb_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -425,6 +426,7 @@ minetest.register_node(":streets:beacon_hybrid_yellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.hbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_hb_yellow.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -459,6 +461,7 @@ minetest.register_node(":streets:beacon_hybrid_red",{
|
||||
type = "fixed",
|
||||
fixed = streets.hbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_hb_red.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -493,6 +496,7 @@ minetest.register_node(":streets:beacon_hybrid_flashyellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.hbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_hb_flashyellow.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -530,6 +534,7 @@ minetest.register_node(":streets:beacon_hybrid_flashred",{
|
||||
type = "fixed",
|
||||
fixed = streets.hbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_hb_flashred.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -568,6 +573,7 @@ minetest.register_node(":streets:beacon_off",{
|
||||
type = "fixed",
|
||||
fixed = streets.bBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -602,6 +608,7 @@ minetest.register_node(":streets:beacon_red",{
|
||||
type = "fixed",
|
||||
fixed = streets.bBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_b_red.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -636,6 +643,7 @@ minetest.register_node(":streets:beacon_yellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.bBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_yellow.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -670,6 +678,7 @@ minetest.register_node(":streets:beacon_flashred",{
|
||||
type = "fixed",
|
||||
fixed = streets.bBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_b_flashred.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -707,6 +716,7 @@ minetest.register_node(":streets:beacon_flashyellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.bBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_warn.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -745,6 +755,7 @@ minetest.register_node(":streets:trafficlight_top_extender_left_off",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_left_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -780,6 +791,7 @@ minetest.register_node(":streets:trafficlight_top_extender_left_yellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tle_left_yellow.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -815,6 +827,7 @@ minetest.register_node(":streets:trafficlight_top_extender_left_flashyellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_left_warn.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -853,6 +866,7 @@ minetest.register_node(":streets:trafficlight_top_extender_left_flashyellow_alt"
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_left_warn_alt.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -891,6 +905,7 @@ minetest.register_node(":streets:trafficlight_top_extender_left_flashgreen",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tle_left_flashgreen.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -929,6 +944,7 @@ minetest.register_node(":streets:trafficlight_top_extender_left_green",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tle_left_green.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -964,6 +980,7 @@ minetest.register_node(":streets:trafficlight_top_extender_right_off",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_right_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -999,6 +1016,7 @@ minetest.register_node(":streets:trafficlight_top_extender_right_yellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tle_right_yellow.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1034,6 +1052,7 @@ minetest.register_node(":streets:trafficlight_top_extender_right_flashyellow",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_right_warn.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -1072,6 +1091,7 @@ minetest.register_node(":streets:trafficlight_top_extender_right_flashyellow_alt
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_right_warn_alt.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -1110,6 +1130,7 @@ minetest.register_node(":streets:trafficlight_top_extender_right_flashgreen",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tle_right_flashgreen.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
@ -1148,6 +1169,7 @@ minetest.register_node(":streets:trafficlight_top_extender_right_green",{
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tle_right_green.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1185,6 +1207,7 @@ minetest.register_node(":streets:pedlight_top_off",{
|
||||
type = "fixed",
|
||||
fixed = streets.plBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_pl_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1219,6 +1242,7 @@ minetest.register_node(":streets:pedlight_top_dontwalk",{
|
||||
type = "fixed",
|
||||
fixed = streets.plBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1243,6 +1267,7 @@ minetest.register_node(":streets:pedlight_top_walk",{
|
||||
type = "fixed",
|
||||
fixed = streets.plBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1270,6 +1295,7 @@ minetest.register_node(":streets:pedlight_top_flashingdontwalk",{
|
||||
type = "fixed",
|
||||
fixed = streets.plBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1297,6 +1323,7 @@ minetest.register_node(":streets:pedlight_top_flashingwalk",{
|
||||
type = "fixed",
|
||||
fixed = streets.plBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1371,6 +1398,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1405,6 +1433,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1429,6 +1458,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1453,6 +1483,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1477,6 +1508,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1504,6 +1536,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1531,6 +1564,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1558,6 +1592,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1585,6 +1620,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1612,6 +1648,7 @@ for _,i in pairs({"","_left","_right"}) do
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1638,6 +1675,7 @@ minetest.register_node(":streets:trafficlight_rrfb_off",{
|
||||
type = "fixed",
|
||||
fixed = streets.rrfbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_rrfb_off.png"},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
@ -1672,6 +1710,7 @@ minetest.register_node(":streets:trafficlight_rrfb_on",{
|
||||
type = "fixed",
|
||||
fixed = streets.rrfbBox
|
||||
},
|
||||
_digistuff_channelcopier_fieldname = "channel",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_rrfb_on.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=0.75},
|
||||
|
@ -277,35 +277,6 @@ minetest.override_item("mesecons_extrawires:crossover_on",{
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_lbm({
|
||||
name = "unifiedmesecons:convert",
|
||||
label = "Convert insulated mesecons to use param2 coloring",
|
||||
nodenames = {
|
||||
"mesecons_insulated:insulated_off",
|
||||
"mesecons_insulated:insulated_on",
|
||||
"mesecons_extrawires:corner_off",
|
||||
"mesecons_extrawires:corner_on",
|
||||
"mesecons_extrawires:tjunction_off",
|
||||
"mesecons_extrawires:tjunction_on",
|
||||
},
|
||||
action = function(pos,node)
|
||||
local name = node.name
|
||||
if string.find(name,"insulated") then
|
||||
name = "mesecons_insulated:insulated_blue_"
|
||||
elseif string.find(name,"corner") then
|
||||
name = "mesecons_extrawires:insulated_corner_blue_"
|
||||
elseif string.find(name,"tjunction") then
|
||||
name = "mesecons_extrawires:insulated_tjunction_blue_"
|
||||
end
|
||||
if string.sub(node.name,-3,-1) == "_on" then
|
||||
node.name = name.."on"
|
||||
else
|
||||
node.name = name.."off"
|
||||
end
|
||||
node.param2 = (node.param2 % 32) + 128
|
||||
minetest.swap_node(pos,node)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mesecons_extrawires:insulated_corner_white_off 3",
|
||||
|
@ -98,21 +98,6 @@ worldedit.marker_move = function(name, marker, deltavector)
|
||||
return true
|
||||
end
|
||||
|
||||
-- Updates the location ingame of the markers
|
||||
worldedit.marker_update = function(name, marker)
|
||||
if marker == nil then
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
elseif marker == 1 then
|
||||
worldedit.mark_pos1(name)
|
||||
elseif marker == 2 then
|
||||
worldedit.mark_pos2(name)
|
||||
else
|
||||
minetest.debug(
|
||||
"worldedit: Invalid execution of function update_markers")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Returns two vectors with the directions for volumetric expansion
|
||||
worldedit.get_expansion_directions = function(mark1, mark2)
|
||||
|
@ -1,5 +1,5 @@
|
||||
worldedit.register_command("outset", {
|
||||
params = "[h|v] <amount>",
|
||||
params = "[h/v] <amount>",
|
||||
description = "Outset the selected region.",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
@ -38,7 +38,7 @@ worldedit.register_command("outset", {
|
||||
|
||||
|
||||
worldedit.register_command("inset", {
|
||||
params = "[h|v] <amount>",
|
||||
params = "[h/v] <amount>",
|
||||
description = "Inset the selected region.",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
@ -47,9 +47,7 @@ worldedit.register_command("inset", {
|
||||
if find == nil then
|
||||
return false
|
||||
end
|
||||
|
||||
local hv_test = dir:find("[^hv]+")
|
||||
if hv_test ~= nil then
|
||||
if dir:find("[^hv]") ~= nil then
|
||||
return false, "Invalid direction."
|
||||
end
|
||||
|
||||
@ -77,8 +75,8 @@ worldedit.register_command("inset", {
|
||||
|
||||
|
||||
worldedit.register_command("shift", {
|
||||
params = "[x|y|z|?|up|down|left|right|front|back] [+|-]<amount>",
|
||||
description = "Moves the selection region. Does not move contents.",
|
||||
params = "x/y/z/?/up/down/left/right/front/back [+/-]<amount>",
|
||||
description = "Shifts the selection area without moving its contents",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -112,8 +110,8 @@ worldedit.register_command("shift", {
|
||||
|
||||
|
||||
worldedit.register_command("expand", {
|
||||
params = "[+|-]<x|y|z|?|up|down|left|right|front|back> <amount> [reverse-amount]",
|
||||
description = "expand the selection in one or two directions at once",
|
||||
params = "[+/-]x/y/z/?/up/down/left/right/front/back <amount> [reverse amount]",
|
||||
description = "Expands the selection in the selected absolute or relative axis",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -161,8 +159,8 @@ worldedit.register_command("expand", {
|
||||
|
||||
|
||||
worldedit.register_command("contract", {
|
||||
params = "[+|-]<x|y|z|?|up|down|left|right|front|back> <amount> [reverse-amount]",
|
||||
description = "contract the selection in one or two directions at once",
|
||||
params = "[+/-]x/y/z/?/up/down/left/right/front/back <amount> [reverse amount]",
|
||||
description = "Contracts the selection in the selected absolute or relative axis",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -207,3 +205,62 @@ worldedit.register_command("contract", {
|
||||
return true, "Region contracted by " .. (amount + rev_amount) .. " nodes"
|
||||
end,
|
||||
})
|
||||
|
||||
worldedit.register_command("cubeapply", {
|
||||
params = "<size>/(<sizex> <sizey> <sizez>) <command> [parameters]",
|
||||
description = "Select a cube with side length <size> around position 1 and run <command> on region",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 1,
|
||||
parse = function(param)
|
||||
local found, _, sidex, sidey, sidez, cmd, args =
|
||||
param:find("^(%d+)%s+(%d+)%s+(%d+)%s+([^%s]+)%s*(.*)$")
|
||||
if found == nil then
|
||||
found, _, sidex, cmd, args = param:find("^(%d+)%s+([^%s]+)%s*(.*)$")
|
||||
if found == nil then
|
||||
return false
|
||||
end
|
||||
sidey = sidex
|
||||
sidez = sidex
|
||||
end
|
||||
sidex = tonumber(sidex)
|
||||
sidey = tonumber(sidey)
|
||||
sidez = tonumber(sidez)
|
||||
if sidex < 1 or sidey < 1 or sidez < 1 then
|
||||
return false
|
||||
end
|
||||
local cmddef = worldedit.registered_commands[cmd]
|
||||
if cmddef == nil or cmddef.require_pos ~= 2 then
|
||||
return false, "invalid usage: //" .. cmd .. " cannot be used with cubeapply"
|
||||
end
|
||||
-- run parsing of target command
|
||||
local parsed = {cmddef.parse(args)}
|
||||
if not table.remove(parsed, 1) then
|
||||
return false, parsed[1]
|
||||
end
|
||||
return true, sidex, sidey, sidez, cmd, parsed
|
||||
end,
|
||||
nodes_needed = function(name, sidex, sidey, sidez, cmd, parsed)
|
||||
-- its not possible to defer to the target command at this point
|
||||
return sidex * sidey * sidez
|
||||
end,
|
||||
func = function(name, sidex, sidey, sidez, cmd, parsed)
|
||||
local cmddef = assert(worldedit.registered_commands[cmd])
|
||||
local success, missing_privs = minetest.check_player_privs(name, cmddef.privs)
|
||||
if not success then
|
||||
worldedit.player_notify(name, "Missing privileges: " ..
|
||||
table.concat(missing_privs, ", "))
|
||||
return
|
||||
end
|
||||
|
||||
-- update region to be the cuboid the user wanted
|
||||
local half = vector.divide(vector.new(sidex, sidey, sidez), 2)
|
||||
local sizea, sizeb = vector.apply(half, math.floor), vector.apply(half, math.ceil)
|
||||
local center = worldedit.pos1[name]
|
||||
worldedit.pos1[name] = vector.subtract(center, sizea)
|
||||
worldedit.pos2[name] = vector.add(center, vector.subtract(sizeb, 1))
|
||||
worldedit.marker_update(name)
|
||||
|
||||
-- actually run target command
|
||||
return cmddef.func(name, unpack(parsed))
|
||||
end,
|
||||
})
|
||||
|
@ -216,7 +216,10 @@ worldedit.register_command("about", {
|
||||
params = "",
|
||||
description = "Get information about the WorldEdit mod",
|
||||
func = function(name)
|
||||
worldedit.player_notify(name, "WorldEdit " .. worldedit.version_string .. " is available on this server. Type //help to get a list of commands, or get more information at https://github.com/Uberi/Minetest-WorldEdit")
|
||||
worldedit.player_notify(name, "WorldEdit " .. worldedit.version_string..
|
||||
" is available on this server. Type //help to get a list of "..
|
||||
"commands, or get more information at "..
|
||||
"https://github.com/Uberi/Minetest-WorldEdit")
|
||||
end,
|
||||
})
|
||||
|
||||
@ -333,8 +336,7 @@ worldedit.register_command("reset", {
|
||||
func = function(name)
|
||||
worldedit.pos1[name] = nil
|
||||
worldedit.pos2[name] = nil
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
worldedit.set_pos[name] = nil
|
||||
--make sure the user does not try to confirm an operation after resetting pos:
|
||||
reset_pending(name)
|
||||
@ -347,8 +349,7 @@ worldedit.register_command("mark", {
|
||||
description = "Show markers at the region positions",
|
||||
privs = {worldedit=true},
|
||||
func = function(name)
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
worldedit.player_notify(name, "region marked")
|
||||
end,
|
||||
})
|
||||
@ -361,8 +362,7 @@ worldedit.register_command("unmark", {
|
||||
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
|
||||
worldedit.pos1[name] = nil
|
||||
worldedit.pos2[name] = nil
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
worldedit.pos1[name] = pos1
|
||||
worldedit.pos2[name] = pos2
|
||||
worldedit.player_notify(name, "region unmarked")
|
||||
@ -431,7 +431,7 @@ worldedit.register_command("p", {
|
||||
})
|
||||
|
||||
worldedit.register_command("fixedpos", {
|
||||
params = "set1/set2 x y z",
|
||||
params = "set1/set2 <x> <y> <z>",
|
||||
description = "Set a WorldEdit region position to the position at (<x>, <y>, <z>)",
|
||||
privs = {worldedit=true},
|
||||
parse = function(param)
|
||||
@ -540,7 +540,7 @@ worldedit.register_command("param2", {
|
||||
parse = function(param)
|
||||
local param2 = tonumber(param)
|
||||
if not param2 then
|
||||
return false, "Invalid or missing param2 argument"
|
||||
return false
|
||||
elseif param2 < 0 or param2 > 255 then
|
||||
return false, "Param2 is out of range (must be between 0 and 255 inclusive!)"
|
||||
end
|
||||
@ -554,7 +554,7 @@ worldedit.register_command("param2", {
|
||||
})
|
||||
|
||||
worldedit.register_command("mix", {
|
||||
params = "<node1> [<weighting1>] [<node2> [<weighting2>]] ...",
|
||||
params = "<node1> [count1] <node2> [count2] ...",
|
||||
description = "Fill the current WorldEdit region with a random mix of <node1>, ...",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
@ -774,7 +774,7 @@ end
|
||||
|
||||
worldedit.register_command("hollowcylinder", {
|
||||
params = "x/y/z/? <length> <radius1> [radius2] <node>",
|
||||
description = "Add hollow cylinder at WorldEdit position 1 along the x/y/z/? axis with length <length>, base radius <radius1> (and top radius [radius2]), composed of <node>",
|
||||
description = "Add hollow cylinder at WorldEdit position 1 along the given axis with length <length>, base radius <radius1> (and top radius [radius2]), composed of <node>",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 1,
|
||||
parse = check_cylinder,
|
||||
@ -795,7 +795,7 @@ worldedit.register_command("hollowcylinder", {
|
||||
|
||||
worldedit.register_command("cylinder", {
|
||||
params = "x/y/z/? <length> <radius1> [radius2] <node>",
|
||||
description = "Add cylinder at WorldEdit position 1 along the x/y/z/? axis with length <length>, base radius <radius1> (and top radius [radius2]), composed of <node>",
|
||||
description = "Add cylinder at WorldEdit position 1 along the given axis with length <length>, base radius <radius1> (and top radius [radius2]), composed of <node>",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 1,
|
||||
parse = check_cylinder,
|
||||
@ -828,7 +828,7 @@ end
|
||||
|
||||
worldedit.register_command("hollowpyramid", {
|
||||
params = "x/y/z/? <height> <node>",
|
||||
description = "Add hollow pyramid centered at WorldEdit position 1 along the x/y/z/? axis with height <height>, composed of <node>",
|
||||
description = "Add hollow pyramid centered at WorldEdit position 1 along the given axis with height <height>, composed of <node>",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 1,
|
||||
parse = check_pyramid,
|
||||
@ -848,7 +848,7 @@ worldedit.register_command("hollowpyramid", {
|
||||
|
||||
worldedit.register_command("pyramid", {
|
||||
params = "x/y/z/? <height> <node>",
|
||||
description = "Add pyramid centered at WorldEdit position 1 along the x/y/z/? axis with height <height>, composed of <node>",
|
||||
description = "Add pyramid centered at WorldEdit position 1 along the given axis with height <height>, composed of <node>",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 1,
|
||||
parse = check_pyramid,
|
||||
@ -893,7 +893,7 @@ worldedit.register_command("spiral", {
|
||||
|
||||
worldedit.register_command("copy", {
|
||||
params = "x/y/z/? <amount>",
|
||||
description = "Copy the current WorldEdit region along the x/y/z/? axis by <amount> nodes",
|
||||
description = "Copy the current WorldEdit region along the given axis by <amount> nodes",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -920,7 +920,7 @@ worldedit.register_command("copy", {
|
||||
|
||||
worldedit.register_command("move", {
|
||||
params = "x/y/z/? <amount>",
|
||||
description = "Move the current WorldEdit region along the x/y/z/? axis by <amount> nodes",
|
||||
description = "Move the current WorldEdit region along the given axis by <amount> nodes",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -945,15 +945,14 @@ worldedit.register_command("move", {
|
||||
|
||||
pos1[axis] = pos1[axis] + amount
|
||||
pos2[axis] = pos2[axis] + amount
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
worldedit.player_notify(name, count .. " nodes moved")
|
||||
end,
|
||||
})
|
||||
|
||||
worldedit.register_command("stack", {
|
||||
params = "x/y/z/? <count>",
|
||||
description = "Stack the current WorldEdit region along the x/y/z/? axis <count> times",
|
||||
description = "Stack the current WorldEdit region along the given axis <count> times",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -1037,8 +1036,7 @@ worldedit.register_command("stretch", {
|
||||
--reset markers to scaled positions
|
||||
worldedit.pos1[name] = pos1
|
||||
worldedit.pos2[name] = pos2
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
|
||||
worldedit.player_notify(name, count .. " nodes stretched")
|
||||
end,
|
||||
@ -1046,7 +1044,7 @@ worldedit.register_command("stretch", {
|
||||
|
||||
worldedit.register_command("transpose", {
|
||||
params = "x/y/z/? x/y/z/?",
|
||||
description = "Transpose the current WorldEdit region along the x/y/z/? and x/y/z/? axes",
|
||||
description = "Transpose the current WorldEdit region along the given axes",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -1068,8 +1066,7 @@ worldedit.register_command("transpose", {
|
||||
--reset markers to transposed positions
|
||||
worldedit.pos1[name] = pos1
|
||||
worldedit.pos2[name] = pos2
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
|
||||
worldedit.player_notify(name, count .. " nodes transposed")
|
||||
end,
|
||||
@ -1077,7 +1074,7 @@ worldedit.register_command("transpose", {
|
||||
|
||||
worldedit.register_command("flip", {
|
||||
params = "x/y/z/?",
|
||||
description = "Flip the current WorldEdit region along the x/y/z/? axis",
|
||||
description = "Flip the current WorldEdit region along the given axis",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -1095,8 +1092,8 @@ worldedit.register_command("flip", {
|
||||
})
|
||||
|
||||
worldedit.register_command("rotate", {
|
||||
params = "<axis> <angle>",
|
||||
description = "Rotate the current WorldEdit region around the axis <axis> by angle <angle> (90 degree increment)",
|
||||
params = "x/y/z/? <angle>",
|
||||
description = "Rotate the current WorldEdit region around the given axis by angle <angle> (90 degree increment)",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
parse = function(param)
|
||||
@ -1119,8 +1116,7 @@ worldedit.register_command("rotate", {
|
||||
--reset markers to rotated positions
|
||||
worldedit.pos1[name] = pos1
|
||||
worldedit.pos2[name] = pos2
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
|
||||
worldedit.player_notify(name, count .. " nodes rotated")
|
||||
end,
|
||||
@ -1187,6 +1183,85 @@ worldedit.register_command("drain", {
|
||||
end,
|
||||
})
|
||||
|
||||
local clearcut_cache
|
||||
|
||||
local function clearcut(pos1, pos2)
|
||||
-- decide which nodes we consider plants
|
||||
if clearcut_cache == nil then
|
||||
clearcut_cache = {}
|
||||
for name, def in pairs(minetest.registered_nodes) do
|
||||
local groups = def.groups or {}
|
||||
if (
|
||||
-- the groups say so
|
||||
groups.flower or groups.grass or groups.flora or groups.plant or
|
||||
groups.leaves or groups.tree or groups.leafdecay or groups.sapling or
|
||||
-- drawtype heuristic
|
||||
(def.is_ground_content and def.buildable_to and
|
||||
(def.sunlight_propagates or not def.walkable)
|
||||
and def.drawtype == "plantlike") or
|
||||
-- if it's flammable, it probably needs to go too
|
||||
(def.is_ground_content and not def.walkable and groups.flammable)
|
||||
) then
|
||||
clearcut_cache[name] = true
|
||||
end
|
||||
end
|
||||
end
|
||||
local plants = clearcut_cache
|
||||
|
||||
local count = 0
|
||||
local prev, any
|
||||
|
||||
for x = pos1.x, pos2.x do
|
||||
for z = pos1.z, pos2.z do
|
||||
prev = false
|
||||
any = false
|
||||
-- first pass: remove floating nodes that would be left over
|
||||
for y = pos1.y, pos2.y do
|
||||
local n = minetest.get_node({x=x, y=y, z=z}).name
|
||||
if plants[n] then
|
||||
prev = true
|
||||
any = true
|
||||
elseif prev then
|
||||
local def = minetest.registered_nodes[n] or {}
|
||||
local groups = def.groups or {}
|
||||
if groups.attached_node or (def.buildable_to and groups.falling_node) then
|
||||
minetest.remove_node({x=x, y=y, z=z})
|
||||
count = count + 1
|
||||
else
|
||||
prev = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- second pass: remove plants, top-to-bottom to avoid item drops
|
||||
if any then
|
||||
for y = pos2.y, pos1.y, -1 do
|
||||
local n = minetest.get_node({x=x, y=y, z=z}).name
|
||||
if plants[n] then
|
||||
minetest.remove_node({x=x, y=y, z=z})
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return count
|
||||
end
|
||||
|
||||
worldedit.register_command("clearcut", {
|
||||
params = "",
|
||||
description = "Remove any plant, tree or foilage-like nodes in the selected region",
|
||||
privs = {worldedit=true},
|
||||
require_pos = 2,
|
||||
nodes_needed = check_region,
|
||||
func = function(name)
|
||||
local pos1, pos2 = worldedit.sort_pos(worldedit.pos1[name], worldedit.pos2[name])
|
||||
local count = clearcut(pos1, pos2)
|
||||
worldedit.player_notify(name, count .. " nodes removed")
|
||||
end,
|
||||
})
|
||||
|
||||
worldedit.register_command("hide", {
|
||||
params = "",
|
||||
description = "Hide all nodes in the current WorldEdit region non-destructively",
|
||||
@ -1346,9 +1421,8 @@ worldedit.register_command("allocate", {
|
||||
end
|
||||
|
||||
worldedit.pos1[name] = nodepos1
|
||||
worldedit.mark_pos1(name)
|
||||
worldedit.pos2[name] = nodepos2
|
||||
worldedit.mark_pos2(name)
|
||||
worldedit.marker_update(name)
|
||||
|
||||
worldedit.player_notify(name, count .. " nodes allocated")
|
||||
end,
|
||||
|
@ -2,57 +2,60 @@ worldedit.marker1 = {}
|
||||
worldedit.marker2 = {}
|
||||
worldedit.marker_region = {}
|
||||
|
||||
local init_sentinel = "new" .. tostring(math.random(99999))
|
||||
|
||||
--marks worldedit region position 1
|
||||
worldedit.mark_pos1 = function(name)
|
||||
worldedit.mark_pos1 = function(name, region_too)
|
||||
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
|
||||
|
||||
if pos1 ~= nil then
|
||||
--make area stay loaded
|
||||
local manip = minetest.get_voxel_manip()
|
||||
manip:read_from_map(pos1, pos1)
|
||||
end
|
||||
if worldedit.marker1[name] ~= nil then --marker already exists
|
||||
worldedit.marker1[name]:remove() --remove marker
|
||||
worldedit.marker1[name] = nil
|
||||
end
|
||||
if pos1 ~= nil then
|
||||
--make area stay loaded
|
||||
local manip = minetest.get_voxel_manip()
|
||||
manip:read_from_map(pos1, pos1)
|
||||
|
||||
--add marker
|
||||
worldedit.marker1[name] = minetest.add_entity(pos1, "worldedit:pos1")
|
||||
worldedit.marker1[name] = minetest.add_entity(pos1, "worldedit:pos1", init_sentinel)
|
||||
if worldedit.marker1[name] ~= nil then
|
||||
worldedit.marker1[name]:get_luaentity().player_name = name
|
||||
end
|
||||
end
|
||||
worldedit.mark_region(name)
|
||||
if region_too == nil or region_too then
|
||||
worldedit.mark_region(name)
|
||||
end
|
||||
end
|
||||
|
||||
--marks worldedit region position 2
|
||||
worldedit.mark_pos2 = function(name)
|
||||
worldedit.mark_pos2 = function(name, region_too)
|
||||
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
|
||||
|
||||
if pos2 ~= nil then
|
||||
--make area stay loaded
|
||||
local manip = minetest.get_voxel_manip()
|
||||
manip:read_from_map(pos2, pos2)
|
||||
end
|
||||
if worldedit.marker2[name] ~= nil then --marker already exists
|
||||
worldedit.marker2[name]:remove() --remove marker
|
||||
worldedit.marker2[name] = nil
|
||||
end
|
||||
if pos2 ~= nil then
|
||||
--make area stay loaded
|
||||
local manip = minetest.get_voxel_manip()
|
||||
manip:read_from_map(pos2, pos2)
|
||||
|
||||
--add marker
|
||||
worldedit.marker2[name] = minetest.add_entity(pos2, "worldedit:pos2")
|
||||
worldedit.marker2[name] = minetest.add_entity(pos2, "worldedit:pos2", init_sentinel)
|
||||
if worldedit.marker2[name] ~= nil then
|
||||
worldedit.marker2[name]:get_luaentity().player_name = name
|
||||
end
|
||||
end
|
||||
worldedit.mark_region(name)
|
||||
if region_too == nil or region_too then
|
||||
worldedit.mark_region(name)
|
||||
end
|
||||
end
|
||||
|
||||
worldedit.mark_region = function(name)
|
||||
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]
|
||||
|
||||
if worldedit.marker_region[name] ~= nil then --marker already exists
|
||||
--wip: make the area stay loaded somehow
|
||||
for _, entity in ipairs(worldedit.marker_region[name]) do
|
||||
entity:remove()
|
||||
end
|
||||
@ -82,7 +85,8 @@ worldedit.mark_region = function(name)
|
||||
|
||||
--XY plane markers
|
||||
for _, z in ipairs({pos1.z - 0.5, pos2.z + 0.5}) do
|
||||
local marker = minetest.add_entity({x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}, "worldedit:region_cube")
|
||||
local entpos = {x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}
|
||||
local marker = minetest.add_entity(entpos, "worldedit:region_cube", init_sentinel)
|
||||
if marker ~= nil then
|
||||
marker:set_properties({
|
||||
visual_size={x=sizex * 2, y=sizey * 2},
|
||||
@ -95,7 +99,8 @@ worldedit.mark_region = function(name)
|
||||
|
||||
--YZ plane markers
|
||||
for _, x in ipairs({pos1.x - 0.5, pos2.x + 0.5}) do
|
||||
local marker = minetest.add_entity({x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}, "worldedit:region_cube")
|
||||
local entpos = {x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}
|
||||
local marker = minetest.add_entity(entpos, "worldedit:region_cube", init_sentinel)
|
||||
if marker ~= nil then
|
||||
marker:set_properties({
|
||||
visual_size={x=sizez * 2, y=sizey * 2},
|
||||
@ -111,6 +116,13 @@ worldedit.mark_region = function(name)
|
||||
end
|
||||
end
|
||||
|
||||
--convenience function that calls everything
|
||||
worldedit.marker_update = function(name)
|
||||
worldedit.mark_pos1(name, false)
|
||||
worldedit.mark_pos2(name, false)
|
||||
worldedit.mark_region(name)
|
||||
end
|
||||
|
||||
minetest.register_entity(":worldedit:pos1", {
|
||||
initial_properties = {
|
||||
visual = "cube",
|
||||
@ -120,9 +132,11 @@ minetest.register_entity(":worldedit:pos1", {
|
||||
"worldedit_pos1.png", "worldedit_pos1.png"},
|
||||
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
|
||||
physical = false,
|
||||
static_save = false,
|
||||
},
|
||||
on_step = function(self, dtime)
|
||||
if worldedit.marker1[self.player_name] == nil then
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
if staticdata ~= init_sentinel then
|
||||
-- we were loaded from before static_save = false was added
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
@ -144,9 +158,11 @@ minetest.register_entity(":worldedit:pos2", {
|
||||
"worldedit_pos2.png", "worldedit_pos2.png"},
|
||||
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},
|
||||
physical = false,
|
||||
static_save = false,
|
||||
},
|
||||
on_step = function(self, dtime)
|
||||
if worldedit.marker2[self.player_name] == nil then
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
if staticdata ~= init_sentinel then
|
||||
-- we were loaded from before static_save = false was added
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
@ -165,11 +181,12 @@ minetest.register_entity(":worldedit:region_cube", {
|
||||
textures = {"worldedit_cube.png"},
|
||||
visual_size = {x=10, y=10},
|
||||
physical = false,
|
||||
static_save = false,
|
||||
},
|
||||
on_step = function(self, dtime)
|
||||
if worldedit.marker_region[self.player_name] == nil then
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
if staticdata ~= init_sentinel then
|
||||
-- we were loaded from before static_save = false was added
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end,
|
||||
on_punch = function(self, hitter)
|
||||
|
Loading…
x
Reference in New Issue
Block a user