From a46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sat, 4 Mar 2017 23:58:38 -0500 Subject: [PATCH] updated digilines, framedglass, mesecons, pipeworks, quartz technic, unifiedinventory, and unifiedbricks --- digilines/init.lua | 2 +- digilines/internal.lua | 71 +++++++++----- digilines/util.lua | 89 ++++++++++++++++++ framedglass/init.lua | 14 +-- .../doc/movestone_sticky/recipe.png | Bin 10190 -> 9870 bytes mesecons_movestones/init.lua | 2 +- pipeworks/default_settings.txt | 1 + pipeworks/filter-injector.lua | 19 ++++ pipeworks/item_transport.lua | 25 +++-- quartz/depends.txt | 1 + quartz/init.lua | 26 ++--- quartz/intllib.lua | 45 +++++++++ quartz/locale/es.po | 59 ++++++++++++ quartz/locale/template.pot | 57 +++++++++++ technic/machines/LV/water_mill.lua | 4 +- unified_inventory/bags.lua | 7 +- unified_inventory/init.lua | 3 + unified_inventory/register.lua | 7 +- unified_inventory/settingtypes.txt | 4 + .../textures/ui_crafting_form.png | Bin 2658 -> 2962 bytes unifiedbricks/init.lua | 2 + 21 files changed, 378 insertions(+), 60 deletions(-) create mode 100644 quartz/intllib.lua create mode 100644 quartz/locale/es.po create mode 100644 quartz/locale/template.pot diff --git a/digilines/init.lua b/digilines/init.lua index 2f48a73d..bffd4e71 100644 --- a/digilines/init.lua +++ b/digilines/init.lua @@ -9,7 +9,7 @@ dofile(modpath .. "/wire_std.lua") function digiline:receptor_send(pos, rules, channel, msg) local checked = {} - checked[tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z)] = true -- exclude itself + checked[minetest.hash_node_position(pos)] = true -- exclude itself for _,rule in ipairs(rules) do if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked) diff --git a/digilines/internal.lua b/digilines/internal.lua index 2319c160..45cd5d7b 100644 --- a/digilines/internal.lua +++ b/digilines/internal.lua @@ -14,7 +14,7 @@ function digiline:importrules(spec, node) end function digiline:getAnyInputRules(pos) - local node = minetest.get_node(pos) + local node = digiline:get_node_force(pos) local spec = digiline:getspec(node) if not spec then return end @@ -27,7 +27,7 @@ function digiline:getAnyInputRules(pos) end function digiline:getAnyOutputRules(pos) - local node = minetest.get_node(pos) + local node = digiline:get_node_force(pos) local spec = digiline:getspec(node) if not spec then return end @@ -63,28 +63,57 @@ function digiline:rules_link_anydir(output, input) or digiline:rules_link(input, output) end +local function queue_new() + return {nextRead = 1, nextWrite = 1} +end + +local function queue_empty(queue) + return queue.nextRead == queue.nextWrite +end + +local function queue_enqueue(queue, object) + local nextWrite = queue.nextWrite + queue[nextWrite] = object + queue.nextWrite = nextWrite + 1 +end + +local function queue_dequeue(queue) + local nextRead = queue.nextRead + local object = queue[nextRead] + queue[nextRead] = nil + queue.nextRead = nextRead + 1 + return object +end + function digiline:transmit(pos, channel, msg, checked) - local checkedid = tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z) - if checked[checkedid] then return end - checked[checkedid] = true + digiline:vm_begin() + local queue = queue_new() + queue_enqueue(queue, pos) + while not queue_empty(queue) do + local curPos = queue_dequeue(queue) + local node = digiline:get_node_force(curPos) + local spec = digiline:getspec(node) + if spec then + -- Effector actions --> Receive + if spec.effector then + spec.effector.action(curPos, node, channel, msg) + end - local node = minetest.get_node(pos) - local spec = digiline:getspec(node) - if not spec then return end - - - -- Effector actions --> Receive - if spec.effector then - spec.effector.action(pos, node, channel, msg) - end - - -- Cable actions --> Transmit - if spec.wire then - local rules = digiline:importrules(spec.wire.rules, node) - for _,rule in ipairs(rules) do - if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then - digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked) + -- Cable actions --> Transmit + if spec.wire then + local rules = digiline:importrules(spec.wire.rules, node) + for _, rule in ipairs(rules) do + local nextPos = digiline:addPosRule(curPos, rule) + if digiline:rules_link(curPos, nextPos) then + local checkedID = minetest.hash_node_position(nextPos) + if not checked[checkedID] then + checked[checkedID] = true + queue_enqueue(queue, nextPos) + end + end + end end end end + digiline:vm_end() end diff --git a/digilines/util.lua b/digilines/util.lua index d138d631..cec75be3 100644 --- a/digilines/util.lua +++ b/digilines/util.lua @@ -65,3 +65,92 @@ function digiline:tablecopy(table) -- deep table copy return newtable end + + + +-- VoxelManipulator-based node access functions: + +-- Maps from a hashed mapblock position (as returned by hash_blockpos) to a +-- table. +-- +-- Contents of the table are: +-- “va” → the VoxelArea +-- “data” → the data array +-- “param1” → the param1 array +-- “param2” → the param2 array +-- +-- Nil if no bulk-VM operation is in progress. +local vm_cache = nil + +-- Starts a bulk-VoxelManipulator operation. +-- +-- During a bulk-VoxelManipulator operation, calls to get_node_force operate +-- directly on VM-loaded arrays, which should be faster for reading many nodes +-- in rapid succession. However, the cache must be flushed with vm_end once the +-- scan is finished, to avoid using stale data in future. +function digiline:vm_begin() + vm_cache = {} +end + +-- Ends a bulk-VoxelManipulator operation, freeing the cached data. +function digiline:vm_end() + vm_cache = nil +end + +-- The dimension of a mapblock in nodes. +local MAPBLOCKSIZE = 16 + +-- Converts a node position into a hash of a mapblock position. +local function vm_hash_blockpos(pos) + return minetest.hash_node_position({ + x = math.floor(pos.x / MAPBLOCKSIZE), + y = math.floor(pos.y / MAPBLOCKSIZE), + z = math.floor(pos.z / MAPBLOCKSIZE) + }) +end + +-- Gets the cache entry covering a position, populating it if necessary. +local function vm_get_or_create_entry(pos) + local hash = vm_hash_blockpos(pos) + local tbl = vm_cache[hash] + if not tbl then + local vm = minetest.get_voxel_manip(pos, pos) + local min_pos, max_pos = vm:get_emerged_area() + local va = VoxelArea:new{MinEdge = min_pos, MaxEdge = max_pos} + tbl = {va = va, data = vm:get_data(), param1 = vm:get_light_data(), param2 = vm:get_param2_data()} + vm_cache[hash] = tbl + end + return tbl +end + +-- Gets the node at a position during a bulk-VoxelManipulator operation. +local function vm_get_node(pos) + local tbl = vm_get_or_create_entry(pos) + local index = tbl.va:indexp(pos) + local node_value = tbl.data[index] + local node_param1 = tbl.param1[index] + local node_param2 = tbl.param2[index] + return {name = minetest.get_name_from_content_id(node_value), param1 = node_param1, param2 = node_param2} +end + +-- Gets the node at a given position, regardless of whether it is loaded or +-- not. +-- +-- Outside a bulk-VoxelManipulator operation, if the mapblock is not loaded, it +-- is pulled into the server’s main map data cache and then accessed from +-- there. +-- +-- Inside a bulk-VoxelManipulator operation, the operation’s VM cache is used. +function digiline:get_node_force(pos) + if vm_cache then + return vm_get_node(pos) + end + local node = minetest.get_node(pos) + if node.name == "ignore" then + -- Node is not currently loaded; use a VoxelManipulator to prime + -- the mapblock cache and try again. + minetest.get_voxel_manip(pos, pos) + node = minetest.get_node(pos) + end + return node +end diff --git a/framedglass/init.lua b/framedglass/init.lua index 90bd6c5c..d42a07bb 100644 --- a/framedglass/init.lua +++ b/framedglass/init.lua @@ -100,16 +100,8 @@ function framedglass.color_on_punch(pos, node, puncher, pointed_thing) local itemstack = puncher:get_wielded_item() local itemname = itemstack:get_name() - if not string.find(itemname, "dye:") then - if minetest.registered_nodes[node.name] then - local pos2 = select_node(pointed_thing) - if pos2 and is_buildable_to(puncher, pos2) then - minetest.set_node(pos2, { name = itemname }) - if not creative_mode then - itemstack:take_item() - end - end - end + if not string.find(itemname, "dye:") + and not string.find(itemname, "unifieddyes:") then return itemstack end @@ -138,8 +130,6 @@ function framedglass.color_on_punch(pos, node, puncher, pointed_thing) local inv = puncher:get_inventory() local prevdye = "dye:"..oldcolor2 - print(oldcolor, oldcolor2, newcolor, newcolor2, prevdye) - if not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then if inv:room_for_item("main", prevdye) then inv:add_item("main", prevdye) diff --git a/mesecons_movestones/doc/movestone_sticky/recipe.png b/mesecons_movestones/doc/movestone_sticky/recipe.png index bbf0a9481c2f6fee422be341f5930fe125f45fed..55338f40733b41d19a88e11def25237a307e85ea 100644 GIT binary patch literal 9870 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 literal 10190 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 h|5Fg=z;_s. + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext diff --git a/quartz/locale/es.po b/quartz/locale/es.po new file mode 100644 index 00000000..ee67dc39 --- /dev/null +++ b/quartz/locale/es.po @@ -0,0 +1,59 @@ +# Spanish translations for PACKAGE package +# Traducciones al español para el paquete PACKAGE. +# Copyright (C) 2017 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Diego Martínez , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-19 21:50-0700\n" +"PO-Revision-Date: 2017-02-20 15:03-0300\n" +"Last-Translator: Diego Martínez \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: init.lua:13 +msgid "Quartz Crystal" +msgstr "Cristal de cuarzo" + +#: init.lua:17 +msgid "Quartz Crystal Piece" +msgstr "Trozo de cristal de cuarzo" + +#: init.lua:27 +msgid "Quartz Ore" +msgstr "Mineral de cuarzo" + +#: init.lua:47 +msgid "Quartz Block" +msgstr "Bloque de cuarzo" + +#: init.lua:55 +msgid "Chiseled Quartz" +msgstr "Cuarzo cincelado" + +#: init.lua:63 +msgid "Quartz Pillar" +msgstr "Pilar de cuarzo" + +#: init.lua:75 +msgid "Quartz stair" +msgstr "Escaleras de cuarzo" + +#: init.lua:76 +msgid "Quartz slab" +msgstr "Losa de cuarzo" + +#: init.lua:82 +msgid "Quartz Pillar stair" +msgstr "Escaleras de pilar de cuarzo" + +#: init.lua:83 +msgid "Quartz Pillar slab" +msgstr "Losa de pilar de cuarzo" diff --git a/quartz/locale/template.pot b/quartz/locale/template.pot new file mode 100644 index 00000000..9c78dda3 --- /dev/null +++ b/quartz/locale/template.pot @@ -0,0 +1,57 @@ +# 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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-02-19 21:50-0700\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua:13 +msgid "Quartz Crystal" +msgstr "" + +#: init.lua:17 +msgid "Quartz Crystal Piece" +msgstr "" + +#: init.lua:27 +msgid "Quartz Ore" +msgstr "" + +#: init.lua:47 +msgid "Quartz Block" +msgstr "" + +#: init.lua:55 +msgid "Chiseled Quartz" +msgstr "" + +#: init.lua:63 +msgid "Quartz Pillar" +msgstr "" + +#: init.lua:75 +msgid "Quartz stair" +msgstr "" + +#: init.lua:76 +msgid "Quartz slab" +msgstr "" + +#: init.lua:82 +msgid "Quartz Pillar stair" +msgstr "" + +#: init.lua:83 +msgid "Quartz Pillar slab" +msgstr "" diff --git a/technic/machines/LV/water_mill.lua b/technic/machines/LV/water_mill.lua index 56b3abd1..acb778c0 100644 --- a/technic/machines/LV/water_mill.lua +++ b/technic/machines/LV/water_mill.lua @@ -30,7 +30,7 @@ local run = function(pos, node) local lava_nodes = 0 local production_level = 0 local eu_supply = 0 - local max_output = 50 * 45 -- four param2's at 15 makes 60, cap it lower for "overload protection" + local max_output = 35 * 45 -- four param2's at 15 makes 60, cap it lower for "overload protection" -- (plus we want the gen to report 100% if three sides have full flow) local positions = { @@ -47,7 +47,7 @@ local run = function(pos, node) end end - eu_supply = math.min(50 * water_flow, max_output) + eu_supply = math.min(35 * water_flow, max_output) production_level = math.floor(100 * eu_supply / max_output) if production_level > 0 then diff --git a/unified_inventory/bags.lua b/unified_inventory/bags.lua index 4af4ff52..3923dab4 100644 --- a/unified_inventory/bags.lua +++ b/unified_inventory/bags.lua @@ -51,8 +51,11 @@ for i = 1, 4 do elseif slots == 24 then formspec = formspec.."background[0.06,0.99;7.92,7.52;ui_bags_lg_form.png]" end - formspec = (formspec.."background[6.06,0;0.92,0.92;ui_bags_trash.png]" - .."list[detached:trash;main;6,0.1;1,1;]") + local player_name = player:get_player_name() -- For if statement. + if unified_inventory.trash_enabled or unified_inventory.is_creative(player_name) or minetest.get_player_privs(player_name).give then + formspec = (formspec.."background[6.06,0;0.92,0.92;ui_bags_trash.png]" + .."list[detached:trash;main;6,0.1;1,1;]") + end return {formspec=formspec} end, }) diff --git a/unified_inventory/init.lua b/unified_inventory/init.lua index 67bc56e5..6929600e 100644 --- a/unified_inventory/init.lua +++ b/unified_inventory/init.lua @@ -45,6 +45,9 @@ unified_inventory = { -- "Lite" mode lite_mode = minetest.setting_getbool("unified_inventory_lite"), + + -- Trash enabled + trash_enabled = (minetest.setting_getbool("unified_inventory_trash") ~= false), pagecols = 8, pagerows = 10, diff --git a/unified_inventory/register.lua b/unified_inventory/register.lua index 127df7ec..bd6a13b6 100644 --- a/unified_inventory/register.lua +++ b/unified_inventory/register.lua @@ -175,8 +175,11 @@ unified_inventory.register_page("craft", { formspec = formspec.."listcolors[#00000000;#00000000]" formspec = formspec.."list[current_player;craftpreview;6,"..formspecy..";1,1;]" formspec = formspec.."list[current_player;craft;2,"..formspecy..";3,3;]" - formspec = formspec.."label[7,"..(formspecy + 1.5)..";" .. F("Trash:") .. "]" - formspec = formspec.."list[detached:trash;main;7,"..(formspecy + 2)..";1,1;]" + if unified_inventory.trash_enabled or unified_inventory.is_creative(player_name) or minetest.get_player_privs(player_name).give then + formspec = formspec.."label[7,"..(formspecy + 1.5)..";" .. F("Trash:") .. "]" + formspec = formspec.."background[7,"..(formspecy + 2)..";1,1;ui_single_slot.png]" + formspec = formspec.."list[detached:trash;main;7,"..(formspecy + 2)..";1,1;]" + end formspec = formspec.."listring[current_name;craft]" formspec = formspec.."listring[current_player;main]" if unified_inventory.is_creative(player_name) then diff --git a/unified_inventory/settingtypes.txt b/unified_inventory/settingtypes.txt index 1054fa9f..910989fd 100644 --- a/unified_inventory/settingtypes.txt +++ b/unified_inventory/settingtypes.txt @@ -5,3 +5,7 @@ unified_inventory_lite (Lite mode) bool false #If enabled, bags will be made available which can be used to extend #inventory storage size. unified_inventory_bags (Enable bags) bool true + +#If enabled, the trash slot can be used by those without both creative +#and the give privilege. +unified_inventory_trash (Enable trash) bool true diff --git a/unified_inventory/textures/ui_crafting_form.png b/unified_inventory/textures/ui_crafting_form.png index 02d337d64cd5ce0e3706f21ee4cc345e199bcfaa..8c980acc2d1871954bd643e9c35241ec60e914e4 100644 GIT binary patch literal 2962 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 K1*2!q@j?OXSfK z`5&um1CHtL(AG{&7n75+N$?hnHdORBxeTwh*^tVBMMH0V`c@Vz^H5Fd#Bme^W$5`_ zt=`hdQdW^*?L(wkS6(C_urlj4BC}7dYzN1#E%fj=BJ?bkjmOrzx^CFsXD08GHWk~u zDZ{9^-k<+Uz2k7h5cTTKV}m6;tq9 z1XVc2JSw2J(4ySH_GV=_B<0wwRi*5_5_bm0=>RiL#Mm|5ie6#3PnMHtw8~ZLBG@Y3FT3!0|aIa4{EQ z0CIi@1SDhw5)v~32}?zRL|N?Qvr3F2GY6IYs{AQv{d(3R1rho%_y-3E!8@BgqgdA5H}vqr1Iibb4Z z0B2Y5xwZi-u|-Mk6{H=a5Pikd{h7~-p!s%BFVd5aKtQKQ_9bYS7S@)3Hx@HVr;8OO zaT9Pl;m@(BZM&Y^P=J83d=YE4;AoV9>qjmh+;Fhy@FvwG~^) z41cJ%^psj|)3jDuIuWwf!{&fl_wwakhwA^ZmV0^sNH8$MSq4Zfxq@r2HvTy1wse-c zlgROmEbb29U@C}WR~ydYlRe%iG^a=Kg;m5B=9D(Z`ohR05Q0UFb{ z*i+y#99-rDqsG3O7V*4#HJnqXvu5d&*M1k7Vxi$xBq-%5QI8qz-`sf8&{uOd>(tB# zj~a^^_Z7_}T)+#wPDu>^HX7^kHZ{+sVC0UUg zKLn!Q%>vxr9|vYN*C|%VACAxG>#>n{ZC2NaHFFnYpv|@I4wiFT{J@_2tYn-wI#0ZF z5W`6y*GcA!lbxgy*D*Yky}(Oy@4?|Ur%F>Oqpg>{&N4Qqu0I!FOB9fQi{xY2hB@2o z-yEa`8@pMN{t-V%jH-sLCrYzKhi*&!5Jx{|`rjXI-3~f%!fYzvLY)|&1|x{ zH93|KdDJs)Z%d4cL@db`J4{mZDjZ#ID>IZYqD|#F#b%r5w|b2w%wVsgeshHa8e$Yr zc|)?zbYMesf#4cb!RT4qIg`EHf)_4MWg>IjdMh8AXWc)`2*vLJUjAPw8|X5*sDeCaTEeXTw{8NV?9R+XVs*Sq{-u?K$gU0F3lSLah5Nj*;I+h7E^mpp zn_{Km;Q3;HOm|X4h0zbpbE^U~btZ~P3Z(8&4RKnm$C})a4^JAMOdA>nzeWBF!cyK> z_*AxE&@O^n*GzE3^RfQR1iPSwKo|G1Qj$W$W@m|?x>8UOsh}|LE(VLLvgQOa5(TFUf!rIE&7q>}8&FUIn8n z_9adAe!XqFmT13DbFE*laElAZrBs&iIOXJ`VR`4b$h!mh>|5~|@O}FFSF`PU;CF(^ zCVwc5NpIl+26XtS&&!QE5tXn)_YeNjVSnLPe?Nx*!!e^hzT$Dl7Jq6qGXa>pHpd>p ze&6>TR=MX@FZ9DXGq?d}GxRH^4i*P)pYO3RmZ>N2QD57hJf&$q3;$E2<)zULx)>Cp zcko6eQ~-EDRfjy_MT;^O|7=!_G-h`mBg-s3%7yl2XMrn463f z$QBRp9oj`qvRY+cMZRI+Vs8jn>0`?s-Hr(@jL?X_6YU6}g>NZvc7K>@O8_>G- zp{nje+6Vd!@