diff --git a/anvil/init.lua b/anvil/init.lua index 324fba1e..3b45d885 100644 --- a/anvil/init.lua +++ b/anvil/init.lua @@ -215,6 +215,9 @@ minetest.register_node("anvil:anvil", { end, on_rightclick = function(pos, node, clicker, itemstack) + if not clicker or not itemstack then + return + end local meta = minetest.get_meta(pos) local name = clicker:get_player_name() diff --git a/areas/README.md b/areas/README.md index f7c07c62..5db5bad4 100644 --- a/areas/README.md +++ b/areas/README.md @@ -1,21 +1,29 @@ -Areas mod for Minetest 0.4.8+ -============================= +Areas mod for Minetest +====================== + +Dependencies +------------ + +Minetest 5.0.0+ is recommended, but 0.4.16+ should work as well. Configuration ------------- -If you wish to specify configuration options, such as whether players are -allowed to protect their own areas with the `protect` command (disabled by -default), you should check settings.lua and set the appropriate settings in your -server's configuration file (probably `minetest.conf`). +Open the tab `Settings -> All Settings -> Mods -> areas` to get a list of all +possible settings. + +For server owners: Check `settingtypes.txt` and modify your `minetest.conf` +according to the wanted setting changes. + Tutorial -------- -To protect an area you must first set the corner positions of the area. -In order to set the corner positions you can run: +1) Specify the corner positions of the area you would like to protect. +Use one of the following commands: + * `/area_pos set` and punch the two corner nodes to set them. * `/area_pos set1/set2` and punch only the first or second corner node to set them one at a time. @@ -23,25 +31,25 @@ In order to set the corner positions you can run: * `/area_pos1/2 X Y Z` to set one of the positions to the specified coordinates. -Once you have set the border positions you can protect the area by running one -of the following commands: +2) Protect the selected area by running one of the following commands: + * `/set_owner ` -- If you have the `areas` privilege. * `/protect ` -- If you have the `areas` privilege or the server administrator has enabled area self-protection. -The area name is used only for informational purposes (so that you know what -an area is for). It is not used for any other purpose. +The area name is used only for informational purposes and has no functional +importance. + For example: `/set_owner SomePlayer Mese city` -Now that you own an area you may want to add sub-owners to it. You can do this -with the `add_owner` command. Anyone with an area can use the `add_owner` -command on their areas. Before using the `add_owner` command you have to -select the corners of the sub-area as you did for `set_owner`. If your markers -are still around your original area and you want to grant access to your -entire area you will not have to re-set them. You can also use `select_area` to -place the markers at the corners of an existing area if you've reset your +3) You now own an area. You may now add sub-owners to it if you want to (see command `/add_owner`). Before using the `/add_owner` command you have to +select the corners of the sub-area as you did in step 1. + +If your markers are still around your original area and you want to grant +access to your entire area you will not have to re-set them. Use `/select_area` to place the markers at the corners of an existing area if you've reset your markers and want to grant access to a full area. -The `add_owner` command expects three arguments: + +The `/add_owner` command expects three arguments: 1. The ID number of the parent area (the area that you want to add a sub-area to). 2. The name of the player that will own the sub-area. diff --git a/areas/hud.lua b/areas/hud.lua index b29152db..24f54140 100644 --- a/areas/hud.lua +++ b/areas/hud.lua @@ -14,7 +14,7 @@ minetest.register_globalstep(function(dtime) for _, player in pairs(minetest.get_connected_players()) do local name = player:get_player_name() - local pos = vector.round(player:getpos()) + local pos = vector.round(player:get_pos()) pos = vector.apply(pos, function(p) return math.max(math.min(p, 2147483), -2147483) end) diff --git a/areas/init.lua b/areas/init.lua index d1b7ebeb..8179b28f 100644 --- a/areas/init.lua +++ b/areas/init.lua @@ -32,7 +32,7 @@ if not minetest.registered_privileges[areas.config.self_protection_privilege] th }) end -if minetest.settings:get_bool("log_mod") then +if minetest.settings:get_bool("log_mods") then local diffTime = os.clock() - areas.startTime minetest.log("action", "areas loaded in "..diffTime.."s.") end diff --git a/areas/pos.lua b/areas/pos.lua index 36a6b780..323d55df 100644 --- a/areas/pos.lua +++ b/areas/pos.lua @@ -53,7 +53,7 @@ minetest.register_chatcommand("area_pos1", { elseif param == "" then local player = minetest.get_player_by_name(name) if player then - pos = player:getpos() + pos = player:get_pos() else return false, "Unable to get position." end @@ -80,7 +80,7 @@ minetest.register_chatcommand("area_pos2", { elseif param == "" then local player = minetest.get_player_by_name(name) if player then - pos = player:getpos() + pos = player:get_pos() else return false, "Unable to get position." end diff --git a/areas/settings.lua b/areas/settings.lua index feaa687f..22af52ca 100644 --- a/areas/settings.lua +++ b/areas/settings.lua @@ -2,44 +2,45 @@ local world_path = minetest.get_worldpath() areas.config = {} -local function setting(tp, name, default) - local full_name = "areas."..name +local function setting(name, tp, default) + local full_name = "areas." .. name local value - if tp == "boolean" then + if tp == "bool" then value = minetest.settings:get_bool(full_name) + default = value == nil and minetest.is_yes(default) elseif tp == "string" then value = minetest.settings:get(full_name) - elseif tp == "position" then + elseif tp == "v3f" then value = minetest.setting_get_pos(full_name) - elseif tp == "number" then + default = value == nil and minetest.string_to_pos(default) + elseif tp == "float" or tp == "int" then value = tonumber(minetest.settings:get(full_name)) + local v, other = default:match("^(%S+) (.+)") + default = value == nil and tonumber(other and v or default) else - error("Invalid setting type!") + error("Cannot parse setting type " .. tp) end + if value == nil then value = default + assert(default ~= nil, "Cannot parse default for " .. full_name) end + --print("add", name, default, value) areas.config[name] = value end +local file = io.open(areas.modpath .. "/settingtypes.txt", "r") +for line in file:lines() do + local name, tp, value = line:match("^areas%.(%S+) %(.*%) (%S+) (.*)") + if value then + setting(name, tp, value) + end +end +file:close() + -------------- -- Settings -- -------------- -setting("string", "filename", world_path.."/areas.dat") +setting("filename", "string", world_path.."/areas.dat") --- Allow players with a privilege create their own areas --- within the maximum size and number. -setting("boolean", "self_protection", false) -setting("string", "self_protection_privilege", "interact") -setting("position", "self_protection_max_size", {x=64, y=128, z=64}) -setting("number", "self_protection_max_areas", 4) --- For players with the areas_high_limit privilege. -setting("position", "self_protection_max_size_high", {x=512, y=512, z=512}) -setting("number", "self_protection_max_areas_high", 32) - --- legacy_table (owner_defs) compatibility. Untested and has known issues. -setting("boolean", "legacy_table", false) - --- configure the refresh delay for the name displays in the HUD -setting("number", "tick", 0.5) diff --git a/areas/settingtypes.txt b/areas/settingtypes.txt new file mode 100644 index 00000000..63165230 --- /dev/null +++ b/areas/settingtypes.txt @@ -0,0 +1,38 @@ +# This file is parsed in "settings.lua". Check regex first. + +# Static paths do not work well with settings +#areas.filename (Configuration file path) string (world_path)/areas.dat + +# Allow players with a privilege create their own areas using /protect +# within the specified size and amount limits. +areas.self_protection (Self protection) bool false + +# Self protection: Privilege required to protect an area +areas.self_protection_privilege (Self protection: Required privs) string interact + +# Refresh delay for the name displays in the HUD in seconds +areas.tick (HUD update delay) float 0.5 0 100 + +# Enable the legacy owner_defs metatable mode. Untested and possibly unstable +areas.legacy_table (Legacy owner_defs metatable) bool false + +[Self protection (normal)] + +# Self protection (normal): Maximal size of the protectable area +# Only enter positive whole numbers for the coordinate values or you'll mess up stuff. +areas.self_protection_max_size (Maximal area size) v3f (64, 128, 64) + +# Self protection (normal): Maximal amount of protected areas per player +areas.self_protection_max_areas (Maximal area count) int 4 + +[Self protection (high)] + +# Self protection (normal): Maximal size of the protectable area +# This setting applies for plyaers with the privilege 'areas_high_limit' +areas.self_protection_max_size_high (Maximal area size) v3f (512, 512, 512) + +# Self protection (normal): Maximal amount of protected areas per player +# Only enter positive whole numbers for the coordinate values or you'll mess up stuff. +# This setting applies for plyaers with the privilege 'areas_high_limit' +areas.self_protection_max_areas_high (Maximal area count) float 32 + diff --git a/areasprotector/init.lua b/areasprotector/init.lua index b2ac282f..48c4b120 100644 --- a/areasprotector/init.lua +++ b/areasprotector/init.lua @@ -9,7 +9,21 @@ local function red(str) return minetest.colorize("#FF5555",str) end -local radius = minetest.setting_get("areasprotector_radius") or 8 +local radius_large = minetest.setting_get("areasprotector_radius_large") + or minetest.setting_get("areasprotector_radius") + or 16 + +local height_large = minetest.setting_get("areasprotector_height_large") + or minetest.setting_get("areasprotector_radius_large") + or minetest.setting_get("areasprotector_radius") + or 16 + +local radius_small = minetest.setting_get("areasprotector_radius_small") + or 7 + +local height_small = minetest.setting_get("areasprotector_height_small") + or minetest.setting_get("areasprotector_radius_small") + or 7 local function remove_display(pos) local objs = minetest.get_objects_inside_radius(pos, 0.5) @@ -18,8 +32,130 @@ local function remove_display(pos) end end -minetest.register_node("areasprotector:protector",{ - description = "Protector Block", +local function on_place(itemstack, player, pointed, radius, height, sizeword) + local pos = pointed.above + local pos1 = vector.add(pos,vector.new(radius, height, radius)) + local pos2 = vector.add(pos,vector.new(-radius, -height, -radius)) + local name = player:get_player_name() + local perm,err = areas:canPlayerAddArea(pos1,pos2,name) + if not perm then + minetest.chat_send_player(name,red("You are not allowed to protect that area: ")..err) + return itemstack + end + local id = areas:add(name,"Protected by Protector Block at "..minetest.pos_to_string(pos, 0),pos1,pos2) + areas:save() + local msg = string.format("The area from %s to %s has been protected as #%s",cyan(minetest.pos_to_string(pos1)),cyan(minetest.pos_to_string(pos2)),cyan(id)) + minetest.chat_send_player(name,msg) + minetest.set_node(pos,{name="areasprotector:protector_"..sizeword}) + local meta = minetest.get_meta(pos) + local infotext = string.format("Protecting area %d owned by %s",id,name) + meta:set_string("infotext",infotext) + meta:set_int("area_id",id) + meta:set_string("owner",name) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack +end + +local function after_dig(pos, oldnode, oldmetadata, digger, sizeword) + if oldmetadata and oldmetadata.fields then + local owner = oldmetadata.fields.owner + local id = tonumber(oldmetadata.fields.area_id) + local playername = digger:get_player_name() + if areas.areas[id] and areas:isAreaOwner(id,owner) then + if digger:get_player_control().sneak then + local inv = digger:get_inventory() + if not creative_mode then + if inv:room_for_item("main", "default:steel_ingot 6") then + inv:remove_item("main", "areasprotector:protector_"..sizeword.." 1") + inv:add_item("main", "default:steel_ingot 6") + else + minetest.chat_send_player(playername, "No room for the replacement ingots, just digging the protector and deleting the area normally.") + areas:remove(id) + areas:save() + end + else + inv:remove_item("main", "areasprotector:protector_"..sizeword.." 1") + end + else + areas:remove(id) + areas:save() + end + end + end +end + +local function on_punch(pos, node, puncher, sizeword) + local objs = minetest.get_objects_inside_radius(pos,.5) -- a radius of .5 since the entity serialization seems to be not that precise + local removed = false + for _, o in pairs(objs) do + if (not o:is_player()) and o:get_luaentity().name == "areasprotector:display_"..sizeword then + o:remove() + removed = true + end + end + if not removed then -- nothing was removed: there wasn't the entity + minetest.add_entity(pos, "areasprotector:display_"..sizeword) + minetest.after(4, remove_display, pos) + end +end + +local function on_step(self, dtime, sizeword) + if minetest.get_node(self.object:getpos()).name ~= "areasprotector:protector_"..sizeword then + self.object:remove() + return + end +end + +local function make_display_nodebox(radius, height) + local nb_radius = radius + 0.55 + local nb_height = height + 0.55 + local t = { + -- sides + { -nb_radius, -nb_height, -nb_radius, -nb_radius, nb_height, nb_radius }, + { -nb_radius, -nb_height, nb_radius, nb_radius, nb_height, nb_radius }, + { nb_radius, -nb_height, -nb_radius, nb_radius, nb_height, nb_radius }, + { -nb_radius, -nb_height, -nb_radius, nb_radius, nb_height, -nb_radius }, + -- top + { -nb_radius, nb_height, -nb_radius, nb_radius, nb_height, nb_radius }, + -- bottom + { -nb_radius, -nb_height, -nb_radius, nb_radius, -nb_height, nb_radius }, + -- middle (surround protector) + {-.55,-.55,-.55, .55,.55,.55}, + } + return t +end + +local nbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, +} + +minetest.register_node("areasprotector:protector_large", { + description = "Protector Block (large volume)", + groups = {cracky=1}, + tiles = { + "default_steel_block.png", + "default_steel_block.png", + "default_steel_block.png^areasprotector_large_overlay.png^basic_materials_padlock.png" + }, + paramtype = "light", + drawtype = "nodebox", + node_box = nbox, + on_place = function(itemstack, player, pointed_thing) + on_place(itemstack, player, pointed_thing, radius_large, height_large, "large") + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + after_dig(pos, oldnode, oldmetadata, digger, "large") + end, + on_punch = function(pos, node, puncher) + on_punch(pos, node, puncher, "large") + end +}) + +minetest.register_node("areasprotector:protector_small", { + description = "Protector Block (small volume)", groups = {cracky=1}, tiles = { "default_steel_block.png", @@ -28,126 +164,98 @@ minetest.register_node("areasprotector:protector",{ }, paramtype = "light", drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - }, - on_place = function(itemstack,player,pointed) - local pos = pointed.above - local pos1 = vector.add(pos,vector.new(radius,radius,radius)) - local pos2 = vector.add(pos,vector.new(-1*radius,-1*radius,-1*radius)) - local name = player:get_player_name() - local perm,err = areas:canPlayerAddArea(pos1,pos2,name) - if not perm then - minetest.chat_send_player(name,red("You are not allowed to protect that area: ")..err) - return itemstack - end - local id = areas:add(name,"Protected by Protector Block",pos1,pos2) - areas:save() - local msg = string.format("The area from %s to %s has been protected as #%s",cyan(minetest.pos_to_string(pos1)),cyan(minetest.pos_to_string(pos2)),cyan(id)) - minetest.chat_send_player(name,msg) - minetest.set_node(pos,{name="areasprotector:protector"}) - local meta = minetest.get_meta(pos) - local infotext = string.format("Protecting area %d owned by %s",id,name) - meta:set_string("infotext",infotext) - meta:set_int("area_id",id) - meta:set_string("owner",name) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack + node_box = nbox, + on_place = function(itemstack, player, pointed_thing) + on_place(itemstack, player, pointed_thing, radius_small, height_small, "small") end, after_dig_node = function(pos, oldnode, oldmetadata, digger) - if oldmetadata and oldmetadata.fields then - local owner = oldmetadata.fields.owner - local id = tonumber(oldmetadata.fields.area_id) - local playername = digger:get_player_name() - if areas.areas[id] and areas:isAreaOwner(id,owner) then - if digger:get_player_control().sneak then - local inv = digger:get_inventory() - if not creative_mode then - if inv:room_for_item("main", "default:steel_ingot 6") then - inv:remove_item("main", "areasprotector:protector 1") - inv:add_item("main", "default:steel_ingot 6") - else - minetest.chat_send_player(playername, "No room for the replacement ingots, just digging the protector and deleting the area normally.") - areas:remove(id) - areas:save() - end - else - inv:remove_item("main", "areasprotector:protector 1") - end - else - areas:remove(id) - areas:save() - end - end - end + after_dig(pos, oldnode, oldmetadata, digger, "small") end, on_punch = function(pos, node, puncher) - local objs = minetest.get_objects_inside_radius(pos,.5) -- a radius of .5 since the entity serialization seems to be not that precise - local removed = false - for _, o in pairs(objs) do - if (not o:is_player()) and o:get_luaentity().name == "areasprotector:display" then - o:remove() - removed = true - end - end - if not removed then -- nothing was removed: there wasn't the entity - minetest.add_entity(pos, "areasprotector:display") - minetest.after(4, remove_display, pos) - end + on_punch(pos, node, puncher, "small") end }) -- entities code below (and above) mostly copied-pasted from Zeg9's protector mod -minetest.register_entity("areasprotector:display", { +-- wielditem seems to be scaled to 1.5 times original node size +local vsize = {x=1.0/1.5, y=1.0/1.5} +local ecbox = {0, 0, 0, 0, 0, 0} + +minetest.register_entity("areasprotector:display_large", { physical = false, - collisionbox = {0,0,0,0,0,0}, + collisionbox = ecbox, visual = "wielditem", - visual_size = {x=1.0/1.5,y=1.0/1.5}, -- wielditem seems to be scaled to 1.5 times original node size - textures = {"areasprotector:display_node"}, + visual_size = vsize, + textures = {"areasprotector:display_node_large"}, on_step = function(self, dtime) - if minetest.get_node(self.object:getpos()).name ~= "areasprotector:protector" then - self.object:remove() - return - end - end, + on_step(self, dtime, "large") + end }) -local nb_radius = radius + 0.55 +minetest.register_entity("areasprotector:display_small", { + physical = false, + collisionbox = ecbox, + visual = "wielditem", + visual_size = vsize, + textures = {"areasprotector:display_node_small"}, + on_step = function(self, dtime) + on_step(self, dtime, "small") + end +}) -minetest.register_node("areasprotector:display_node", { +minetest.register_node("areasprotector:display_node_large", { tiles = {"areasprotector_display.png"}, walkable = false, drawtype = "nodebox", node_box = { type = "fixed", - fixed = { - -- sides - { -nb_radius, -nb_radius, -nb_radius, -nb_radius, nb_radius, nb_radius }, - { -nb_radius, -nb_radius, nb_radius, nb_radius, nb_radius, nb_radius }, - { nb_radius, -nb_radius, -nb_radius, nb_radius, nb_radius, nb_radius }, - { -nb_radius, -nb_radius, -nb_radius, nb_radius, nb_radius, -nb_radius }, - -- top - { -nb_radius, nb_radius, -nb_radius, nb_radius, nb_radius, nb_radius }, - -- bottom - { -nb_radius, -nb_radius, -nb_radius, nb_radius, -nb_radius, nb_radius }, - -- middle (surround protector) - {-.55,-.55,-.55, .55,.55,.55}, - }, + fixed = make_display_nodebox(radius_large, height_large) }, selection_box = { type = "regular", }, paramtype = "light", groups = {dig_immediate=3,not_in_creative_inventory=1}, - drop = "", + drop = "" +}) + +minetest.register_node("areasprotector:display_node_small", { + tiles = {"areasprotector_display.png"}, + walkable = false, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = make_display_nodebox(radius_small, height_small) + }, + selection_box = { + type = "regular", + }, + paramtype = "light", + groups = {dig_immediate=3,not_in_creative_inventory=1}, + drop = "" }) minetest.register_craft({ - output = "areasprotector:protector", + output = "areasprotector:protector_small 2", type = "shapeless", recipe = {"default:steelblock","basic_materials:padlock"}, }) + +minetest.register_craft({ + output = "areasprotector:protector_large", + type = "shapeless", + recipe = { + "areasprotector:protector_small", + "areasprotector:protector_small", + "areasprotector:protector_small", + "areasprotector:protector_small", + "areasprotector:protector_small", + "areasprotector:protector_small", + "areasprotector:protector_small", + "areasprotector:protector_small" + } +}) + +minetest.register_alias("areasprotector:protector", "areasprotector:protector_large") +minetest.register_alias("areasprotector:display_node", "areasprotector:display_node_large") diff --git a/areasprotector/textures/areasprotector_large_overlay.png b/areasprotector/textures/areasprotector_large_overlay.png new file mode 100644 index 00000000..38e92f34 Binary files /dev/null and b/areasprotector/textures/areasprotector_large_overlay.png differ diff --git a/bakedclay/README.md b/bakedclay/README.md index da6aec66..abfd7b08 100644 --- a/bakedclay/README.md +++ b/bakedclay/README.md @@ -7,6 +7,7 @@ https://forum.minetest.net/viewtopic.php?id=8890 Changelog: +- 0.8 - Cooking clay block in furnace gives natural baked clay which you can dye - 0.7 - Added support for stairsplus so that stairs are registered properly - 0.6 - Added 3 new flowers and a new grass that are used for missing dyes - 0.5 - Now using minecraft recipe to colour baked clay (8x baked clay, 1x dye in centre) @@ -15,4 +16,4 @@ Changelog: - 0.2 - Any colour of baked clay can be re-dyed into another colour - 0.1 - Initial Release -Lucky Blocks: 8 +Lucky Blocks: 9 diff --git a/bakedclay/init.lua b/bakedclay/init.lua index 10001b4d..0d7b1a8e 100644 --- a/bakedclay/init.lua +++ b/bakedclay/init.lua @@ -2,6 +2,7 @@ -- Baked Clay by TenPlus1 local clay = { + {"natural", "Natural"}, {"white", "White"}, {"grey", "Grey"}, {"black", "Black"}, @@ -35,15 +36,16 @@ for _, clay in pairs(clay) do }) -- craft from dye and any baked clay - - minetest.register_craft({ - output = "bakedclay:" .. clay[1] .. " 8", - recipe = { - {"group:bakedclay", "group:bakedclay", "group:bakedclay"}, - {"group:bakedclay", "dye:" .. clay[1], "group:bakedclay"}, - {"group:bakedclay", "group:bakedclay", "group:bakedclay"} - }, - }) + if clay[1] ~= "natural" then + minetest.register_craft({ + output = "bakedclay:" .. clay[1] .. " 8", + recipe = { + {"group:bakedclay", "group:bakedclay", "group:bakedclay"}, + {"group:bakedclay", "dye:" .. clay[1], "group:bakedclay"}, + {"group:bakedclay", "group:bakedclay", "group:bakedclay"} + }, + }) + end -- register stairsplus stairs if found if stairsplus_mod then @@ -84,7 +86,7 @@ end minetest.register_craft({ type = "cooking", - output = "bakedclay:white", + output = "bakedclay:natural", recipe = "default:clay", }) @@ -253,17 +255,35 @@ lucky_block:add_blocks({ {"dro", {"bakedclay:"}, 10, true}, {"fal", {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green", p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange", - p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 0}, + p.."pink", p.."red", p.."violet", p.."white", p.."yellow", p.."natural"}, 0}, {"fal", {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green", p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange", - p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 0, true}, + p.."pink", p.."red", p.."violet", p.."white", p.."yellow", p.."natural"}, 0, true}, {"dro", {p.."delphinium"}, 5}, {"dro", {p.."lazarus"}, 5}, {"dro", {p.."mannagrass"}, 5}, {"dro", {p.."thistle"}, 6}, - {"flo", 5, {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green", - p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange", - p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 2}, + {"flo", 5, {p.."natural", p.."black", p.."blue", p.."brown", p.."cyan", + p.."dark_green", p.."dark_grey", p.."green", p.."grey", p.."magenta", + p.."orange", p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 2}, + {"nod", "default:chest", 0, { + {name = p.."natural", max = 30}, + {name = p.."black", max = 30}, + {name = p.."blue", max = 30}, + {name = p.."brown", max = 30}, + {name = p.."cyan", max = 30}, + {name = p.."dark_green", max = 30}, + {name = p.."dark_grey", max = 30}, + {name = p.."green", max = 30}, + {name = p.."grey", max = 30}, + {name = p.."magenta", max = 30}, + {name = p.."orange", max = 30}, + {name = p.."pink", max = 30}, + {name = p.."red", max = 30}, + {name = p.."violet", max = 30}, + {name = p.."white", max = 30}, + {name = p.."yellow", max = 30}, + }}, }) end diff --git a/bakedclay/textures/baked_clay_natural.png b/bakedclay/textures/baked_clay_natural.png new file mode 100644 index 00000000..56893aa9 Binary files /dev/null and b/bakedclay/textures/baked_clay_natural.png differ diff --git a/basic_signs/LICENSE b/basic_signs/LICENSE new file mode 100644 index 00000000..c5885ae9 --- /dev/null +++ b/basic_signs/LICENSE @@ -0,0 +1,600 @@ +License for code: LGPL 3.0 +License for media and all other assets: CC-by-SA 4.0 + +############################################################################### + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +############################################################################### + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/basic_signs/README b/basic_signs/README new file mode 100644 index 00000000..96b9a289 --- /dev/null +++ b/basic_signs/README @@ -0,0 +1,7 @@ +This project provides colored metal wall signs, and an extension to the +default wooden signs, to place either a wall sign, a yard sign, or a +hanging-from-ceiling sign, depending on where the user points. + +Most items herein were originally part of signs_lib. + +Requires signs_lib commit 4ff54c9a (2019-09-11) or later. diff --git a/basic_signs/crafting.lua b/basic_signs/crafting.lua new file mode 100644 index 00000000..a55d6300 --- /dev/null +++ b/basic_signs/crafting.lua @@ -0,0 +1,138 @@ +minetest.register_craft({ + output = "basic_signs:sign_wall_locked", + type = "shapeless", + recipe = { + "default:sign_wall_wood", + "basic_materials:padlock", + }, +}) + +-- craft recipes for the metal signs + +minetest.register_craft( { + output = "basic_signs:sign_wall_green", + recipe = { + { "dye:dark_green", "dye:white", "dye:dark_green" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_green 2", + recipe = { + { "dye:dark_green", "dye:white", "dye:dark_green" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_yellow", + recipe = { + { "dye:yellow", "dye:black", "dye:yellow" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_yellow 2", + recipe = { + { "dye:yellow", "dye:black", "dye:yellow" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_red", + recipe = { + { "dye:red", "dye:white", "dye:red" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_red 2", + recipe = { + { "dye:red", "dye:white", "dye:red" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_white_red", + recipe = { + { "dye:white", "dye:red", "dye:white" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_white_red 2", + recipe = { + { "dye:white", "dye:red", "dye:white" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_white_black", + recipe = { + { "dye:white", "dye:black", "dye:white" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_white_black 2", + recipe = { + { "dye:white", "dye:black", "dye:white" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_orange", + recipe = { + { "dye:orange", "dye:black", "dye:orange" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_orange 2", + recipe = { + { "dye:orange", "dye:black", "dye:orange" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_blue", + recipe = { + { "dye:blue", "dye:white", "dye:blue" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_blue 2", + recipe = { + { "dye:blue", "dye:white", "dye:blue" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_brown", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "", "default:sign_wall_steel", "" } + }, +}) + +minetest.register_craft( { + output = "basic_signs:sign_wall_brown 2", + recipe = { + { "dye:brown", "dye:white", "dye:brown" }, + { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } + }, +}) diff --git a/basic_signs/depends.txt b/basic_signs/depends.txt new file mode 100644 index 00000000..0ea619b3 --- /dev/null +++ b/basic_signs/depends.txt @@ -0,0 +1,3 @@ +default +signs_lib +basic_materials diff --git a/basic_signs/init.lua b/basic_signs/init.lua new file mode 100644 index 00000000..eea01b7d --- /dev/null +++ b/basic_signs/init.lua @@ -0,0 +1,273 @@ +-- Basic wall/yard/metal signs +-- these were originally part of signs_lib + +basic_signs = {} +basic_signs.path = minetest.get_modpath(minetest.get_current_modname()) + +dofile(basic_signs.path .. "/crafting.lua") + +local S, NS = dofile(basic_signs.path .. "/intllib.lua") +basic_signs.gettext = S + +local cbox + +-- array : color, translated color, default text color +local sign_colors = { + {"green", S("green"), "f"}, + {"yellow", S("yellow"), "0"}, + {"red", S("red"), "f"}, + {"white_red", S("white_red"), "4"}, + {"white_black", S("white_black"), "0"}, + {"orange", S("orange"), "0"}, + {"blue", S("blue"), "f"}, + {"brown", S("brown"), "f"}, +} + +function basic_signs.determine_sign_type(pos, placer, itemstack, pointed_thing) + local playername = placer:get_player_name() + local pt_name = minetest.get_node(pointed_thing.under).name + local node = minetest.get_node(pos) -- since we're in after-place, this will be the wall sign itself + + if minetest.is_protected(pointed_thing.under, playername) then + minetest.record_protection_violation(pointed_thing.under, playername) + return itemstack + end + + if minetest.registered_nodes[pt_name] and + minetest.registered_nodes[pt_name].on_rightclick and + not placer:get_player_control().sneak then + return minetest.registered_nodes[pt_name].on_rightclick(pos, node, placer, itemstack, pointed_thing) + elseif signs_lib.check_for_pole(pos, pointed_thing) then + minetest.swap_node(pos, {name = "default:sign_wall_wood_onpole", param2 = node.param2}) + else + local lookdir = placer:get_look_dir() + print(dump(lookdir)) + local newparam2 = minetest.dir_to_facedir(lookdir) + + if node.param2 == 0 then + minetest.swap_node(pos, {name = "basic_signs:hanging_sign", param2 = newparam2}) + elseif node.param2 == 1 then + minetest.swap_node(pos, {name = "basic_signs:yard_sign", param2 = newparam2}) + end + signs_lib.update_sign(pos) + end + if not creative.is_enabled_for(playername) then + itemstack:take_item() + end + return itemstack +end + +for _, onpole in ipairs({"", "_onpole"}) do + + local nci = nil + local on_rotate = signs_lib.wallmounted_rotate + local pole_mount_tex = nil + + if onpole == "_onpole" then + nci = 1 + on_rotate = nil + pole_mount_tex = "signs_lib_pole_mount.png" -- the metal straps on back, if needed + end + + local wood_groups = table.copy(signs_lib.standard_wood_groups) + wood_groups.not_in_creative_inventory = nci + local steel_groups = table.copy(signs_lib.standard_steel_groups) + steel_groups.not_in_creative_inventory = nci + + cbox = signs_lib.make_selection_boxes(35, 25, onpole) + + minetest.override_item("default:sign_wall_wood"..onpole, { + after_place_node = basic_signs.determine_sign_type + }) + + minetest.register_node("basic_signs:sign_wall_locked"..onpole, { + description = S("Locked Sign"), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign"..onpole..".obj", + tiles = { + "basic_signs_sign_wall_locked.png", + "signs_lib_sign_wall_steel_edges.png", + pole_mount_tex + }, + inventory_image = "basic_signs_sign_wall_locked_inv.png", + wield_image = "basic_signs_sign_wall_locked_inv.png", + groups = wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = function(pos, placer, itemstack, pointed_thing) + signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, true) + end, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + can_dig = signs_lib.can_modify, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.wallmounted_yaw + }, + drop = "basic_signs:sign_wall_locked" + }) + table.insert(signs_lib.lbm_restore_nodes, "basic_signs:sign_wall_locked"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "locked_sign:sign_wall_locked"..onpole) + + minetest.register_alias("locked_sign:sign_wall_locked", "basic_signs:sign_wall_locked") + + cbox = signs_lib.make_selection_boxes(35, 25, onpole, 0, 0, 0, true) + + for i, color in ipairs(sign_colors) do + minetest.register_node("basic_signs:sign_wall_steel_"..color[1]..onpole, { + description = S("Sign (@1, steel)", color[2]), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign_facedir"..onpole..".obj", + tiles = { + "basic_signs_steel_"..color[1]..".png", + "signs_lib_sign_wall_steel_edges.png", + pole_mount_tex + }, + inventory_image = "basic_signs_steel_"..color[1].."_inv.png", + wield_image = "basic_signs_steel_"..color[1].."_inv.png", + groups = steel_groups, + default_color = color[3], + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.standard_yaw + }, + drop = "signs:sign_wall_steel_"..color[1] + }) + table.insert(signs_lib.lbm_restore_nodes, "basic_signs:sign_wall_steel_"..color[1]..onpole) + table.insert(signs_lib.lbm_restore_nodes, "signs:sign_wall_"..color[1]..onpole) + + minetest.register_alias("signs:sign_wall_"..color[1], "basic_signs:sign_wall_steel_"..color[1]) + + end +end + +cbox = signs_lib.make_selection_boxes(35, 34.5, false, 0, -1.25, -19.69, true) + +local nci_wood_groups = table.copy(signs_lib.standard_wood_groups) +nci_wood_groups.not_in_creative_inventory = 1 + +minetest.register_node("basic_signs:yard_sign", { + description = "Wooden yard sign", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "basic_signs_yard_sign.obj", + tiles = { + "signs_lib_sign_wall_wooden.png", + "signs_lib_sign_wall_wooden_edges.png", + "default_wood.png" + }, + inventory_image = "default_sign_wood.png", + wield_image = "default_sign_wood.png", + groups = nci_wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "basic_signs_yard_sign_entity.obj", + yaw = signs_lib.standard_yaw + }, + drop = "default:sign_wall_wood" +}) +table.insert(signs_lib.lbm_restore_nodes, "basic_signs:yard_sign") +table.insert(signs_lib.lbm_restore_nodes, "signs:sign_yard") +minetest.register_alias("signs:sign_yard", "basic_signs:yard_sign") + +cbox = signs_lib.make_selection_boxes(35, 32, false, 0, 3, -18.5, true) + +minetest.register_node("basic_signs:hanging_sign", { + description = "Wooden sign, hanging", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "basic_signs_hanging_sign.obj", + tiles = { + "signs_lib_sign_wall_wooden.png", + "signs_lib_sign_wall_wooden_edges.png", + "basic_signs_ceiling_hangers.png" + }, + inventory_image = "default_sign_wood.png", + wield_image = "default_sign_wood.png", + groups = nci_wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "basic_signs_hanging_sign_entity.obj", + yaw = signs_lib.standard_yaw + }, + drop = "default:sign_wall_wood" +}) +table.insert(signs_lib.lbm_restore_nodes, "basic_signs:hanging_sign") +table.insert(signs_lib.lbm_restore_nodes, "signs:sign_hanging") +minetest.register_alias("signs:sign_hanging", "basic_signs:hanging_sign") + +-- insert the old wood sign-on-fencepost into signs_lib's conversion LBM + +table.insert(signs_lib.old_fenceposts_with_signs, "signs:sign_post") +signs_lib.old_fenceposts["signs:sign_post"] = "default:fence_wood" +signs_lib.old_fenceposts_replacement_signs["signs:sign_post"] = "default:sign_wall_wood_onpole" diff --git a/basic_signs/intllib.lua b/basic_signs/intllib.lua new file mode 100644 index 00000000..6669d720 --- /dev/null +++ b/basic_signs/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- 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/basic_signs/locale/de.po b/basic_signs/locale/de.po new file mode 100644 index 00000000..a2f4150f --- /dev/null +++ b/basic_signs/locale/de.po @@ -0,0 +1,97 @@ +# German Translation for the signs_lib mod. +# Copyright (C) 2018 Vanessa Ezekowitz +# This file is distributed under the same license as the signs_lib package. +# Xanthin, 2017. +# CodeXP , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:31+0200\n" +"PO-Revision-Date: 2018-03-24 22:00+0100\n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: init.lua +msgid "Write" +msgstr "schreiben" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "gesperrter Schild, gehört @1\n" + +#: init.lua +msgid "locked " +msgstr "gesperrt " + +#: init.lua +#, fuzzy +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 schrieb \"@2\" auf das @3Schild bei @4" + +#: init.lua +msgid "Sign" +msgstr "Schild" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "Kann alle gesperrte Schilder bearbeiten" + +#: init.lua +msgid "Locked Sign" +msgstr "gesperrter Schild" + +#: init.lua +msgid "green" +msgstr "grün" + +#: init.lua +msgid "yellow" +msgstr "gelb" + +#: init.lua +msgid "red" +msgstr "rot" + +#: init.lua +msgid "white_red" +msgstr "weißrot" + +#: init.lua +msgid "white_black" +msgstr "schwarzweiß" + +#: init.lua +msgid "orange" +msgstr "orange" + +#: init.lua +msgid "blue" +msgstr "blau" + +#: init.lua +msgid "brown" +msgstr "braun" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Schild (@1, Metall)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Versuch ein unbekanntes Element als Zaun zu registrieren" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Registrierte @1 und @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] Schilder-Mod geladen" diff --git a/basic_signs/locale/es.po b/basic_signs/locale/es.po new file mode 100644 index 00000000..85799370 --- /dev/null +++ b/basic_signs/locale/es.po @@ -0,0 +1,95 @@ +# 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. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:22+0200\n" +"PO-Revision-Date: 2017-07-31 18:30+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.12\n" +"Last-Translator: Carlos Barraza\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "" + +#: init.lua +msgid "locked " +msgstr "bloqueada " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 escribio \"@2\" en el cartel @3en @4" + +#: init.lua +msgid "Sign" +msgstr "Letrero" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "" + +#: init.lua +#, fuzzy +msgid "Locked Sign" +msgstr "Letrero bloqueada" + +#: init.lua +msgid "green" +msgstr "verde" + +#: init.lua +msgid "yellow" +msgstr "amarillo" + +#: init.lua +msgid "red" +msgstr "rojo" + +#: init.lua +#, fuzzy +msgid "white_red" +msgstr "rojo y blanco" + +#: init.lua +#, fuzzy +msgid "white_black" +msgstr "negro y blanco" + +#: init.lua +msgid "orange" +msgstr "naranja" + +#: init.lua +msgid "blue" +msgstr "azul" + +#: init.lua +msgid "brown" +msgstr "marrón" + +#: init.lua +#, fuzzy +msgid "Sign (@1, metal)" +msgstr "Letrero (@1, metal)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Registrado @1 y @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] signs cargados" diff --git a/basic_signs/locale/fr.po b/basic_signs/locale/fr.po new file mode 100644 index 00000000..a5035740 --- /dev/null +++ b/basic_signs/locale/fr.po @@ -0,0 +1,91 @@ +# 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. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:13+0200\n" +"PO-Revision-Date: 2017-07-31 18:22+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.12\n" +"Last-Translator: fat115 \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: fr\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "Panneau verrouillé, appartient à @1\n" + +#: init.lua +msgid "locked " +msgstr "verrouillé " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 a écrit \"@2\" sur le panneau @3en @4" + +#: init.lua +msgid "Sign" +msgstr "Panneau" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "Peut modifier les panneaux verrouillés" + +#: init.lua +msgid "Locked Sign" +msgstr "Panneau (verrouillé)" + +#: init.lua +msgid "green" +msgstr "vert" + +#: init.lua +msgid "yellow" +msgstr "jaune" + +#: init.lua +msgid "red" +msgstr "rouge" + +#: init.lua +msgid "white_red" +msgstr "rouge et blanc" + +#: init.lua +msgid "white_black" +msgstr "noir et blanc" + +#: init.lua +msgid "orange" +msgstr "orange" + +#: init.lua +msgid "blue" +msgstr "bleu" + +#: init.lua +msgid "brown" +msgstr "marron" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Panneau (@1, métal)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Tentative d'enregistrer un nœud inconnu comme barrière" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Enregistrement de @1 et @" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] signs chargé" diff --git a/basic_signs/locale/ms.po b/basic_signs/locale/ms.po new file mode 100644 index 00000000..da115120 --- /dev/null +++ b/basic_signs/locale/ms.po @@ -0,0 +1,91 @@ +# 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. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-31 18:00+0200\n" +"PO-Revision-Date: 2017-11-17 02:38+0800\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 2.0.4\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: ms\n" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "Papan tanda berkunci, milik @1\n" + +#: init.lua +msgid "locked " +msgstr "berkunci " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 menulis \"@2\" atas papan tanda @3dekat @4" + +#: init.lua +msgid "Sign" +msgstr "Papan Tanda" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "Boleh sunting semua papan tanda berkunci" + +#: init.lua +msgid "Locked Sign" +msgstr "Papan Tanda Berkunci" + +#: init.lua +msgid "green" +msgstr "hijau" + +#: init.lua +msgid "yellow" +msgstr "kuning" + +#: init.lua +msgid "red" +msgstr "merah" + +#: init.lua +msgid "white_red" +msgstr "putih_merah" + +#: init.lua +msgid "white_black" +msgstr "putih_hitam" + +#: init.lua +msgid "orange" +msgstr "jingga" + +#: init.lua +msgid "blue" +msgstr "biru" + +#: init.lua +msgid "brown" +msgstr "perang" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Papan Tanda (@1, logam)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Cuba untuk mendaftar nod tidak diketahui sebagai pagar" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Telah daftar @1 dan @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MODS] signs telah dimuatkan" diff --git a/basic_signs/locale/ru.po b/basic_signs/locale/ru.po new file mode 100644 index 00000000..9cd01aa4 --- /dev/null +++ b/basic_signs/locale/ru.po @@ -0,0 +1,94 @@ +# Russian Translation for the signs_lib mod. +# Copyright (C) 2018 Vanessa Ezekowitz +# This file is distributed under the same license as the signs_lib package. +# CodeXP , 2018. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: signs_lib\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-24 22:23+0100\n" +"PO-Revision-Date: \n" +"Last-Translator: CodeXP \n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Write" +msgstr "записать" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "защищенная табличка, пренадлежит @1\n" + +#: init.lua +msgid "locked " +msgstr "защищенный " + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "@1 записал \"@2\" в @3sign на @4" + +#: init.lua +msgid "Sign" +msgstr "табличка" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "Может редактировать все защищенные таблички" + +#: init.lua +msgid "Locked Sign" +msgstr "защищенная табличка" + +#: init.lua +msgid "green" +msgstr "зеленая" + +#: init.lua +msgid "yellow" +msgstr "желтая" + +#: init.lua +msgid "red" +msgstr "красная" + +#: init.lua +msgid "white_red" +msgstr "краснобелая" + +#: init.lua +msgid "white_black" +msgstr "чернобелая" + +#: init.lua +msgid "orange" +msgstr "оранжевая" + +#: init.lua +msgid "blue" +msgstr "синея" + +#: init.lua +msgid "brown" +msgstr "коричневая" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "Табличка (@1, металл)" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "Попытка зарегистрировать неизвестный узел как забор" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "Зарегистрировано @1 для @2" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "[MOD] мод табличек загружен" diff --git a/basic_signs/locale/template.pot b/basic_signs/locale/template.pot new file mode 100644 index 00000000..e277437f --- /dev/null +++ b/basic_signs/locale/template.pot @@ -0,0 +1,94 @@ +# LANGUAGE Translation for the signs_lib mod. +# Copyright (C) 2018 Vanessa Ezekowitz +# This file is distributed under the same license as the signs_lib package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: signs_lib\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-24 22:23+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: init.lua +msgid "Write" +msgstr "" + +#: init.lua +msgid "Locked sign, owned by @1\n" +msgstr "" + +#: init.lua +msgid "locked " +msgstr "" + +#: init.lua +msgid "@1 wrote \"@2\" to @3sign at @4" +msgstr "" + +#: init.lua +msgid "Sign" +msgstr "" + +#: init.lua +msgid "Can edit all locked signs" +msgstr "" + +#: init.lua +msgid "Locked Sign" +msgstr "" + +#: init.lua +msgid "green" +msgstr "" + +#: init.lua +msgid "yellow" +msgstr "" + +#: init.lua +msgid "red" +msgstr "" + +#: init.lua +msgid "white_red" +msgstr "" + +#: init.lua +msgid "white_black" +msgstr "" + +#: init.lua +msgid "orange" +msgstr "" + +#: init.lua +msgid "blue" +msgstr "" + +#: init.lua +msgid "brown" +msgstr "" + +#: init.lua +msgid "Sign (@1, metal)" +msgstr "" + +#: init.lua +msgid "Attempt to register unknown node as fence" +msgstr "" + +#: init.lua +msgid "Registered @1 and @2" +msgstr "" + +#: init.lua +msgid "[MOD] signs loaded" +msgstr "" diff --git a/basic_signs/models/basic_signs_hanging_sign.obj b/basic_signs/models/basic_signs_hanging_sign.obj new file mode 100644 index 00000000..263eb9cf --- /dev/null +++ b/basic_signs/models/basic_signs_hanging_sign.obj @@ -0,0 +1,62 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden hanging sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.031250 +v 0.437500 -0.312500 -0.031250 +v 0.437500 0.312500 0.031250 +v 0.437500 0.312500 -0.031250 +v -0.437500 -0.312500 0.031250 +v -0.437500 -0.312500 -0.031250 +v -0.437500 0.312500 0.031250 +v -0.437500 0.312500 -0.031250 +v 0.437500 -0.312500 0.031250 +v 0.437500 -0.312500 -0.031250 +v 0.437500 0.312500 0.031250 +v 0.437500 0.312500 -0.031250 +v -0.437500 -0.312500 0.031250 +v -0.437500 -0.312500 -0.031250 +v -0.437500 0.312500 0.031250 +v -0.437500 0.312500 -0.031250 +v 0.500000 0.312500 0.000000 +v 0.500000 0.500000 0.000000 +v -0.500000 0.312500 0.000000 +v -0.500000 0.500000 0.000000 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vt 1.000000 0.812500 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt -0.000000 0.812500 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +g Cube_Cube_hangers +f 19/19/1 20/20/1 18/21/1 17/22/1 diff --git a/basic_signs/models/basic_signs_hanging_sign_entity.obj b/basic_signs/models/basic_signs_hanging_sign_entity.obj new file mode 100644 index 00000000..c122f35e --- /dev/null +++ b/basic_signs/models/basic_signs_hanging_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden hanging sign--entity.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 -0.039063 +v 0.406250 0.281250 -0.039062 +v -0.406250 -0.281250 -0.039063 +v -0.406250 0.281250 -0.039062 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/basic_signs/models/basic_signs_yard_sign.obj b/basic_signs/models/basic_signs_yard_sign.obj new file mode 100644 index 00000000..b6ed3655 --- /dev/null +++ b/basic_signs/models/basic_signs_yard_sign.obj @@ -0,0 +1,85 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden yard sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.250000 -0.000000 +v 0.437500 -0.250000 -0.062500 +v 0.437500 0.375000 0.000000 +v 0.437500 0.375000 -0.062500 +v -0.437500 -0.250000 -0.000000 +v -0.437500 -0.250000 -0.062500 +v -0.437500 0.375000 0.000000 +v -0.437500 0.375000 -0.062500 +v 0.437500 -0.250000 -0.000000 +v 0.437500 -0.250000 -0.062500 +v 0.437500 0.375000 0.000000 +v 0.437500 0.375000 -0.062500 +v -0.437500 -0.250000 -0.000000 +v -0.437500 -0.250000 -0.062500 +v -0.437500 0.375000 0.000000 +v -0.437500 0.375000 -0.062500 +v 0.062500 -0.500000 0.000000 +v 0.062500 0.250000 0.000000 +v 0.062500 -0.500000 0.062500 +v 0.062500 0.250000 0.062500 +v -0.062500 -0.500000 0.000000 +v -0.062500 0.250000 0.000000 +v -0.062500 -0.500000 0.062500 +v -0.062500 0.250000 0.062500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vt 0.000000 0.750000 +vt 2.000000 0.750000 +vt 2.000000 0.875000 +vt 0.000000 0.875000 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 2.000000 0.375000 +vt 0.000000 0.375000 +vt 2.000000 0.500000 +vt 0.000000 0.500000 +vt 0.812500 0.875000 +vt 0.562500 0.875000 +vt 0.562500 1.000000 +vt 0.812500 1.000000 +vt 0.125000 0.875000 +vt 0.375000 0.875000 +vt 0.375000 1.000000 +vt 0.125000 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +g Cube_Cube_default_wood +f 17/19/5 18/20/5 20/21/5 19/22/5 +f 19/23/2 20/24/2 24/25/2 23/26/2 +f 23/26/6 24/25/6 22/27/6 21/28/6 +f 21/28/1 22/27/1 18/20/1 17/19/1 +f 19/29/3 23/30/3 21/31/3 17/32/3 +f 24/33/4 20/34/4 18/35/4 22/36/4 diff --git a/basic_signs/models/basic_signs_yard_sign_entity.obj b/basic_signs/models/basic_signs_yard_sign_entity.obj new file mode 100644 index 00000000..2a891dd1 --- /dev/null +++ b/basic_signs/models/basic_signs_yard_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden yard sign.blend' +# www.blender.org +o Cube +v 0.406250 -0.218750 -0.070313 +v 0.406250 0.343750 -0.070312 +v -0.406250 -0.218750 -0.070313 +v -0.406250 0.343750 -0.070312 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/basic_signs/textures/basic_signs_ceiling_hangers.png b/basic_signs/textures/basic_signs_ceiling_hangers.png new file mode 100644 index 00000000..04d74a93 Binary files /dev/null and b/basic_signs/textures/basic_signs_ceiling_hangers.png differ diff --git a/basic_signs/textures/basic_signs_entity_UV.png b/basic_signs/textures/basic_signs_entity_UV.png new file mode 100644 index 00000000..7aaaa7fa Binary files /dev/null and b/basic_signs/textures/basic_signs_entity_UV.png differ diff --git a/basic_signs/textures/basic_signs_sign_wall_locked.png b/basic_signs/textures/basic_signs_sign_wall_locked.png new file mode 100644 index 00000000..026fc748 Binary files /dev/null and b/basic_signs/textures/basic_signs_sign_wall_locked.png differ diff --git a/basic_signs/textures/basic_signs_sign_wall_locked_inv.png b/basic_signs/textures/basic_signs_sign_wall_locked_inv.png new file mode 100644 index 00000000..a62b8540 Binary files /dev/null and b/basic_signs/textures/basic_signs_sign_wall_locked_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_blue.png b/basic_signs/textures/basic_signs_steel_blue.png new file mode 100644 index 00000000..594ceb8b Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_blue.png differ diff --git a/basic_signs/textures/basic_signs_steel_blue_inv.png b/basic_signs/textures/basic_signs_steel_blue_inv.png new file mode 100644 index 00000000..2d084c5b Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_blue_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_brown.png b/basic_signs/textures/basic_signs_steel_brown.png new file mode 100644 index 00000000..c8ffc377 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_brown.png differ diff --git a/basic_signs/textures/basic_signs_steel_brown_inv.png b/basic_signs/textures/basic_signs_steel_brown_inv.png new file mode 100644 index 00000000..d270147d Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_brown_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_green.png b/basic_signs/textures/basic_signs_steel_green.png new file mode 100644 index 00000000..25fcbf54 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_green.png differ diff --git a/basic_signs/textures/basic_signs_steel_green_inv.png b/basic_signs/textures/basic_signs_steel_green_inv.png new file mode 100644 index 00000000..f8a73787 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_green_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_orange.png b/basic_signs/textures/basic_signs_steel_orange.png new file mode 100644 index 00000000..08dc5a12 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_orange.png differ diff --git a/signs_lib/textures/signs_orange_inv.png b/basic_signs/textures/basic_signs_steel_orange_inv.png similarity index 100% rename from signs_lib/textures/signs_orange_inv.png rename to basic_signs/textures/basic_signs_steel_orange_inv.png diff --git a/basic_signs/textures/basic_signs_steel_red.png b/basic_signs/textures/basic_signs_steel_red.png new file mode 100644 index 00000000..03e3f9fa Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_red.png differ diff --git a/basic_signs/textures/basic_signs_steel_red_inv.png b/basic_signs/textures/basic_signs_steel_red_inv.png new file mode 100644 index 00000000..12b9ed1c Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_red_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_white_black.png b/basic_signs/textures/basic_signs_steel_white_black.png new file mode 100644 index 00000000..fb09bfc8 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_white_black.png differ diff --git a/basic_signs/textures/basic_signs_steel_white_black_inv.png b/basic_signs/textures/basic_signs_steel_white_black_inv.png new file mode 100644 index 00000000..e370dad9 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_white_black_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_white_red.png b/basic_signs/textures/basic_signs_steel_white_red.png new file mode 100644 index 00000000..98245529 Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_white_red.png differ diff --git a/basic_signs/textures/basic_signs_steel_white_red_inv.png b/basic_signs/textures/basic_signs_steel_white_red_inv.png new file mode 100644 index 00000000..4ed8d93d Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_white_red_inv.png differ diff --git a/basic_signs/textures/basic_signs_steel_yellow.png b/basic_signs/textures/basic_signs_steel_yellow.png new file mode 100644 index 00000000..dd9fe39c Binary files /dev/null and b/basic_signs/textures/basic_signs_steel_yellow.png differ diff --git a/signs_lib/textures/signs_yellow_inv.png b/basic_signs/textures/basic_signs_steel_yellow_inv.png similarity index 100% rename from signs_lib/textures/signs_yellow_inv.png rename to basic_signs/textures/basic_signs_steel_yellow_inv.png diff --git a/bees/init.lua b/bees/init.lua index b00219ba..b53278f8 100644 --- a/bees/init.lua +++ b/bees/init.lua @@ -5,7 +5,7 @@ -- Intllib support local S -if minetest.global_exists('intllib') then +if minetest.global_exists("intllib") then S = intllib.Getter() else S = function(s) return s end @@ -19,13 +19,13 @@ local random = math.random local hive_wild = function(pos, grafting) - local spos = pos.x .. ',' .. pos.y .. ',' ..pos.z - local formspec = 'size[8,9]' - .. 'list[nodemeta:'.. spos .. ';combs;1.5,3;5,1;]' - .. 'list[current_player;main;0,5;8,4;]' + local spos = pos.x .. "," .. pos.y .. "," ..pos.z + local formspec = "size[8,9]" + .. "list[nodemeta:".. spos .. ";combs;1.5,3;5,1;]" + .. "list[current_player;main;0,5;8,4;]" if grafting then - formspec = formspec ..'list[nodemeta:'.. spos .. ';queen;3.5,1;1,1;]' + formspec = formspec .."list[nodemeta:".. spos .. ";queen;3.5,1;1,1;]" end return formspec @@ -34,11 +34,11 @@ end local hive_artificial = function(pos) - local spos = pos.x..','..pos.y..','..pos.z - local formspec = 'size[8,9]' - .. 'list[nodemeta:'..spos..';queen;3.5,1;1,1;]' - .. 'list[nodemeta:'..spos..';frames;0,3;8,1;]' - .. 'list[current_player;main;0,5;8,4;]' + local spos = pos.x..","..pos.y..","..pos.z + local formspec = "size[8,9]" + .. "list[nodemeta:"..spos..";queen;3.5,1;1,1;]" + .. "list[nodemeta:"..spos..";frames;0,3;8,1;]" + .. "list[current_player;main;0,5;8,4;]" return formspec end @@ -55,7 +55,7 @@ local polinate_flower = function(pos, flower) local spawn = minetest.get_node(spawn_pos).name local floor = minetest.get_node(floor_pos).name - if floor == 'group:soil' and spawn == 'air' then + if floor == "group:soil" and spawn == "air" then minetest.set_node(spawn_pos, {name = flower}) end end @@ -63,8 +63,8 @@ end -- NODES -minetest.register_node('bees:extractor', { - description = S('Honey Extractor'), +minetest.register_node("bees:extractor", { + description = S("Honey Extractor"), tiles = { "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor.png", "bees_extractor_front.png" @@ -79,24 +79,24 @@ minetest.register_node('bees:extractor', { local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - local pos = pos.x .. ',' .. pos.y .. ',' .. pos.z + local pos = pos.x .. "," .. pos.y .. "," .. pos.z - inv:set_size('frames_filled', 1) - inv:set_size('frames_emptied', 1) - inv:set_size('bottles_empty', 1) - inv:set_size('bottles_full', 1) - inv:set_size('wax', 1) + inv:set_size("frames_filled", 1) + inv:set_size("frames_emptied", 1) + inv:set_size("bottles_empty", 1) + inv:set_size("bottles_full", 1) + inv:set_size("wax", 1) - meta:set_string('formspec', 'size[8,9]' + meta:set_string("formspec", "size[8,9]" --input - .. 'list[nodemeta:'..pos..';frames_filled;2,1;1,1;]' - .. 'list[nodemeta:'..pos..';bottles_empty;2,3;1,1;]' + .. "list[nodemeta:"..pos..";frames_filled;2,1;1,1;]" + .. "list[nodemeta:"..pos..";bottles_empty;2,3;1,1;]" --output - .. 'list[nodemeta:'..pos..';frames_emptied;5,0.5;1,1;]' - .. 'list[nodemeta:'..pos..';wax;5,2;1,1;]' - .. 'list[nodemeta:'..pos..';bottles_full;5,3.5;1,1;]' + .. "list[nodemeta:"..pos..";frames_emptied;5,0.5;1,1;]" + .. "list[nodemeta:"..pos..";wax;5,2;1,1;]" + .. "list[nodemeta:"..pos..";bottles_full;5,3.5;1,1;]" --player inventory - .. 'list[current_player;main;0,5;8,4;]' + .. "list[current_player;main;0,5;8,4;]" ) end, @@ -105,23 +105,23 @@ minetest.register_node('bees:extractor', { local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if not inv:contains_item('frames_filled', 'bees:frame_full') - or not inv:contains_item('bottles_empty', 'vessels:glass_bottle') then + if not inv:contains_item("frames_filled", "bees:frame_full") + or not inv:contains_item("bottles_empty", "vessels:glass_bottle") then return end - if inv:room_for_item('frames_emptied', 'bees:frame_empty') - and inv:room_for_item('wax','bees:wax') - and inv:room_for_item('bottles_full', 'bees:bottle_honey') then + if inv:room_for_item("frames_emptied", "bees:frame_empty") + and inv:room_for_item("wax", "bees:wax") + and inv:room_for_item("bottles_full", "bees:bottle_honey") then --add to output - inv:add_item('frames_emptied', 'bees:frame_empty') - inv:add_item('wax', 'bees:wax') - inv:add_item('bottles_full', 'bees:bottle_honey') + inv:add_item("frames_emptied", "bees:frame_empty") + inv:add_item("wax", "bees:wax") + inv:add_item("bottles_full", "bees:bottle_honey") --remove from input - inv:remove_item('bottles_empty', 'vessels:glass_bottle') - inv:remove_item('frames_filled', 'bees:frame_full') + inv:remove_item("bottles_empty", "vessels:glass_bottle") + inv:remove_item("frames_filled", "bees:frame_full") local p = { x = pos.x + random() - 0.5, @@ -141,7 +141,7 @@ minetest.register_node('bees:extractor', { expirationtime = 2, size = random(1, 3), collisiondetection = false, - texture = 'bees_wax_particle.png', + texture = "bees_wax_particle.png", }) local timer = minetest.get_node_timer(pos) @@ -217,8 +217,8 @@ minetest.register_node('bees:extractor', { allow_metadata_inventory_put = function(pos, listname, index, stack, player) - if (listname == 'bottles_empty' and stack:get_name() == 'vessels:glass_bottle') - or (listname == 'frames_filled' and stack:get_name() == 'bees:frame_full') then + if (listname == "bottles_empty" and stack:get_name() == "vessels:glass_bottle") + or (listname == "frames_filled" and stack:get_name() == "bees:frame_full") then return stack:get_count() else return 0 @@ -240,16 +240,16 @@ minetest.register_node('bees:extractor', { }) -minetest.register_node('bees:bees', { - description = S('Bees'), - drawtype = 'plantlike', - paramtype = 'light', +minetest.register_node("bees:bees", { + description = S("Bees"), + drawtype = "plantlike", + paramtype = "light", groups = {not_in_creative_inventory = 1}, tiles = { { - name = 'bees_strip.png', + name = "bees_strip.png", animation = { - type = 'vertical_frames', aspect_w = 16, aspect_h = 16, length = 2.0 + type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 2.0 } } }, @@ -257,7 +257,7 @@ minetest.register_node('bees:bees', { walkable = false, buildable_to = true, selection_box = { - type = 'fixed', + type = "fixed", fixed = { {-0.3, -0.4, -0.3, 0.3, 0.4, 0.3}, } @@ -270,24 +270,24 @@ minetest.register_node('bees:bees', { }) -minetest.register_node('bees:hive_wild', { - description = S('Wild Bee Hive'), - tiles = { --Neuromancer's base texture - 'bees_hive_wild.png','bees_hive_wild.png','bees_hive_wild.png', - 'bees_hive_wild.png', 'bees_hive_wild_bottom.png' +minetest.register_node("bees:hive_wild", { + description = S("Wild Bee Hive"), + tiles = { --Neuromancer"s base texture + "bees_hive_wild.png", "bees_hive_wild.png", "bees_hive_wild.png", + "bees_hive_wild.png", "bees_hive_wild_bottom.png" }, - drawtype = 'nodebox', - paramtype = 'light', - paramtype2 = 'wallmounted', + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "wallmounted", drop = { max_items = 6, items = { - { items = {'bees:honey_comb'}, rarity = 5} + { items = {"bees:honey_comb"}, rarity = 5} } }, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, attached_node = 1}, node_box = { --VanessaE's wild hive nodebox contribution - type = 'fixed', + type = "fixed", fixed = { {-0.250000,-0.500000,-0.250000,0.250000,0.375000,0.250000}, --NodeBox 2 {-0.312500,-0.375000,-0.312500,0.312500,0.250000,0.312500}, --NodeBox 4 @@ -305,14 +305,14 @@ minetest.register_node('bees:hive_wild', { local flowers = minetest.find_nodes_in_area( {x = pos.x - rad, y = pos.y - rad, z = pos.z - rad}, {x = pos.x + rad, y = pos.y + rad, z = pos.z + rad}, - 'group:flower') + "group:flower") -- Queen dies if no flowers nearby if #flowers == 0 then - inv:set_stack('queen', 1, '') + inv:set_stack("queen", 1, "") - meta:set_string('infotext', S('Colony died, not enough flowers in area!')) + meta:set_string("infotext", S("Colony died, not enough flowers in area!")) return end @@ -324,13 +324,13 @@ minetest.register_node('bees:hive_wild', { polinate_flower(flower, minetest.get_node(flower).name) - local stacks = inv:get_list('combs') + local stacks = inv:get_list("combs") for k, v in pairs(stacks) do - if inv:get_stack('combs', k):is_empty() then + if inv:get_stack("combs", k):is_empty() then - inv:set_stack('combs',k,'bees:honey_comb') + inv:set_stack("combs", k, "bees:honey_comb") timer:start(1000 / #flowers) @@ -348,16 +348,16 @@ minetest.register_node('bees:hive_wild', { local inv = meta:get_inventory() local timer = minetest.get_node_timer(pos) - meta:set_int('agressive', 1) + meta:set_int("agressive", 1) timer:start(100 + random(100)) - inv:set_size('queen', 1) - inv:set_size('combs', 5) - inv:set_stack('queen', 1, 'bees:queen') + inv:set_size("queen", 1) + inv:set_size("combs", 5) + inv:set_stack("queen", 1, "bees:queen") for i = 1, random(3) do - inv:set_stack('combs', i, 'bees:honey_comb') + inv:set_stack("combs", i, "bees:honey_comb") end end, @@ -366,7 +366,7 @@ minetest.register_node('bees:hive_wild', { local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if inv:contains_item('queen','bees:queen') then + if inv:contains_item("queen", "bees:queen") then puncher:set_hp(puncher:get_hp() - 4) end @@ -378,7 +378,7 @@ minetest.register_node('bees:hive_wild', { local inv = meta:get_inventory() local timer= minetest.get_node_timer(pos) - if listname == 'combs' and inv:contains_item('queen', 'bees:queen') then + if listname == "combs" and inv:contains_item("queen", "bees:queen") then timer:start(10) @@ -398,7 +398,7 @@ minetest.register_node('bees:hive_wild', { allow_metadata_inventory_put = function(pos, listname, index, stack, player) --restart the colony by adding a queen - if listname == 'queen' and stack:get_name() == 'bees:queen' then + if listname == "queen" and stack:get_name() == "bees:queen" then return 1 else return 0 @@ -408,19 +408,19 @@ minetest.register_node('bees:hive_wild', { on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.show_formspec(clicker:get_player_name(), - 'bees:hive_artificial', - hive_wild(pos, (itemstack:get_name() == 'bees:grafting_tool')) + "bees:hive_artificial", + hive_wild(pos, (itemstack:get_name() == "bees:grafting_tool")) ) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if meta:get_int('agressive') == 1 - and inv:contains_item('queen', 'bees:queen') then + if meta:get_int("agressive") == 1 + and inv:contains_item("queen", "bees:queen") then clicker:set_hp(clicker:get_hp() - 4) else - meta:set_int('agressive', 1) + meta:set_int("agressive", 1) end end, @@ -429,7 +429,7 @@ minetest.register_node('bees:hive_wild', { local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if inv:is_empty('queen') and inv:is_empty('combs') then + if inv:is_empty("queen") and inv:is_empty("combs") then return true else return false @@ -446,34 +446,34 @@ minetest.register_node('bees:hive_wild', { return end - if 'bees:grafting_tool' == wielded:get_name() then + if "bees:grafting_tool" == wielded:get_name() then local inv = user:get_inventory() if inv then - inv:add_item('main', ItemStack('bees:queen')) + inv:add_item("main", ItemStack("bees:queen")) end end end }) -minetest.register_node('bees:hive_artificial', { - description = S('Artificial Bee Hive'), +minetest.register_node("bees:hive_artificial", { + description = S("Artificial Bee Hive"), tiles = { - 'default_wood.png','default_wood.png','default_wood.png', - 'default_wood.png','default_wood.png','bees_hive_artificial.png' + "default_wood.png", "default_wood.png", "default_wood.png", + "default_wood.png", "default_wood.png", "bees_hive_artificial.png" }, - drawtype = 'nodebox', - paramtype = 'light', - paramtype2 = 'facedir', + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", groups = { snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1 }, sounds = default.node_sound_wood_defaults(), node_box = { - type = 'fixed', + type = "fixed", fixed = { {-4/8, 2/8, -4/8, 4/8, 3/8, 4/8}, {-3/8, -4/8, -2/8, 3/8, 2/8, 3/8}, @@ -490,12 +490,12 @@ minetest.register_node('bees:hive_artificial', { local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - meta:set_int('agressive', 1) + meta:set_int("agressive", 1) - inv:set_size('queen', 1) - inv:set_size('frames', 8) + inv:set_size("queen", 1) + inv:set_size("frames", 8) - meta:set_string('infotext',S('Requires Queen bee to function')) + meta:set_string("infotext", S("Requires Queen bee to function")) end, on_rightclick = function(pos, node, clicker, itemstack) @@ -505,19 +505,19 @@ minetest.register_node('bees:hive_artificial', { end minetest.show_formspec(clicker:get_player_name(), - 'bees:hive_artificial', + "bees:hive_artificial", hive_artificial(pos) ) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if meta:get_int('agressive') == 1 - and inv:contains_item('queen', 'bees:queen') then + if meta:get_int("agressive") == 1 + and inv:contains_item("queen", "bees:queen") then clicker:set_hp(clicker:get_hp() - 4) else - meta:set_int('agressive', 1) + meta:set_int("agressive", 1) end end, @@ -527,9 +527,9 @@ minetest.register_node('bees:hive_artificial', { local inv = meta:get_inventory() local timer = minetest.get_node_timer(pos) - if inv:contains_item('queen', 'bees:queen') then + if inv:contains_item("queen", "bees:queen") then - if inv:contains_item('frames', 'bees:frame_empty') then + if inv:contains_item("frames", "bees:frame_empty") then timer:start(30) @@ -537,13 +537,13 @@ minetest.register_node('bees:hive_artificial', { local flowers = minetest.find_nodes_in_area( {x = pos.x - rad, y = pos.y - rad, z = pos.z - rad}, {x = pos.x + rad, y = pos.y + rad, z = pos.z + rad}, - 'group:flower') + "group:flower") - local progress = meta:get_int('progress') + local progress = meta:get_int("progress") progress = progress + #flowers - meta:set_int('progress', progress) + meta:set_int("progress", progress) if progress > 1000 then @@ -551,25 +551,25 @@ minetest.register_node('bees:hive_artificial', { polinate_flower(flower, minetest.get_node(flower).name) - local stacks = inv:get_list('frames') + local stacks = inv:get_list("frames") for k, v in pairs(stacks) do - if inv:get_stack('frames', k):get_name() == 'bees:frame_empty' then + if inv:get_stack("frames", k):get_name() == "bees:frame_empty" then - meta:set_int('progress', 0) + meta:set_int("progress", 0) - inv:set_stack('frames', k, 'bees:frame_full') + inv:set_stack("frames", k, "bees:frame_full") return end end else - meta:set_string('infotext', S('progress:') - .. ' '..progress..' + '..#flowers..' / 1000') + meta:set_string("infotext", S("progress:") + .. " " .. progress .. " + " .. #flowers .. " / 1000") end else - meta:set_string('infotext', S('Does not have empty frame(s)')) + meta:set_string("infotext", S("Does not have empty frame(s)")) timer:stop() end @@ -578,12 +578,12 @@ minetest.register_node('bees:hive_artificial', { on_metadata_inventory_take = function(pos, listname, index, stack, player) - if listname == 'queen' then + if listname == "queen" then local timer = minetest.get_node_timer(pos) local meta = minetest.get_meta(pos) - meta:set_string('infotext',S('Requires Queen bee to function')) + meta:set_string("infotext", S("Requires Queen bee to function")) timer:stop() end @@ -593,7 +593,7 @@ minetest.register_node('bees:hive_artificial', { local inv = minetest.get_meta(pos):get_inventory() - if from_list == to_list then + if from_list == to_list then if inv:get_stack(to_list, to_index):is_empty() then return 1 @@ -611,16 +611,16 @@ minetest.register_node('bees:hive_artificial', { local inv = meta:get_inventory() local timer = minetest.get_node_timer(pos) - if listname == 'queen' or listname == 'frames' then + if listname == "queen" or listname == "frames" then - meta:set_string('queen', stack:get_name()) - meta:set_string('infotext', S('Queen inserted, now for the empty frames')) + meta:set_string("queen", stack:get_name()) + meta:set_string("infotext", S("Queen inserted, now for the empty frames")) - if inv:contains_item('frames', 'bees:frame_empty') then + if inv:contains_item("frames", "bees:frame_empty") then timer:start(30) - meta:set_string('infotext', S('Bees are aclimating')) + meta:set_string("infotext", S("Bees are aclimating")) end end end, @@ -629,15 +629,15 @@ minetest.register_node('bees:hive_artificial', { if not minetest.get_meta(pos):get_inventory():get_stack(listname, index):is_empty() then return 0 end - if listname == 'queen' then + if listname == "queen" then - if stack:get_name():match('bees:queen*') then + if stack:get_name():match("bees:queen*") then return 1 end - elseif listname == 'frames' then + elseif listname == "frames" then - if stack:get_name() == ('bees:frame_empty') then + if stack:get_name() == ("bees:frame_empty") then return 1 end end @@ -649,7 +649,7 @@ minetest.register_node('bees:hive_artificial', { -- ABMS minetest.register_abm({ - nodenames = {'bees:hive_artificial', 'bees:hive_wild', 'bees:hive_industrial'}, + nodenames = {"bees:hive_artificial", "bees:hive_wild", "bees:hive_industrial"}, interval = 10, chance = 4, @@ -671,12 +671,12 @@ minetest.register_abm({ expirationtime = random(2.5), size = random(3), collisiondetection = true, - texture = 'bees_particle_bee.png', + texture = "bees_particle_bee.png", }) -- floating hive check and removal if node.name == "bees:hive_wild" then - + local num = #minetest.find_nodes_in_area( {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, @@ -692,8 +692,8 @@ minetest.register_abm({ -- spawn abm. This should be changed to a more realistic type of spawning minetest.register_abm({ - nodenames = {'group:leaves'}, - neighbors = {'air'}, + nodenames = {"group:leaves"}, + neighbors = {"air"}, interval = 800,--1600, chance = 10,--20, @@ -709,8 +709,8 @@ minetest.register_abm({ if not def or def.walkable then return end - if minetest.find_node_near(p, 5, 'group:flora') then - minetest.add_node(p, {name = 'bees:hive_wild'}) + if minetest.find_node_near(p, 5, "group:flora") then + minetest.add_node(p, {name = "bees:hive_wild"}) end end, }) @@ -718,8 +718,8 @@ minetest.register_abm({ -- spawning bees around bee hive minetest.register_abm({ - nodenames = {'bees:hive_wild', 'bees:hive_artificial', 'bees:hive_industrial'}, - neighbors = {'group:flowers', 'group:leaves'}, + nodenames = {"bees:hive_wild", "bees:hive_artificial", "bees:hive_industrial"}, + neighbors = {"group:flowers", "group:leaves"}, interval = 30, chance = 4, @@ -731,8 +731,8 @@ minetest.register_abm({ z = pos.z + random(-5, 5) } - if minetest.get_node(p).name == 'air' then - minetest.add_node(p, {name='bees:bees'}) + if minetest.get_node(p).name == "air" then + minetest.add_node(p, {name="bees:bees"}) end end, }) @@ -740,7 +740,7 @@ minetest.register_abm({ -- remove bees minetest.register_abm({ - nodenames = {'bees:bees'}, + nodenames = {"bees:bees"}, interval = 30, chance = 5, @@ -752,42 +752,42 @@ minetest.register_abm({ -- ITEMS -minetest.register_craftitem('bees:frame_empty', { - description = S('Empty hive frame'), - inventory_image = 'bees_frame_empty.png', +minetest.register_craftitem("bees:frame_empty", { + description = S("Empty hive frame"), + inventory_image = "bees_frame_empty.png", stack_max = 24, }) -minetest.register_craftitem('bees:frame_full', { - description = S('Filled hive frame'), - inventory_image = 'bees_frame_full.png', +minetest.register_craftitem("bees:frame_full", { + description = S("Filled hive frame"), + inventory_image = "bees_frame_full.png", stack_max = 12, }) -minetest.register_craftitem('bees:bottle_honey', { - description = S('Honey bottle'), - inventory_image = 'bees_bottle_honey.png', +minetest.register_craftitem("bees:bottle_honey", { + description = S("Honey bottle"), + inventory_image = "bees_bottle_honey.png", stack_max = 12, on_use = minetest.item_eat(3, "vessels:glass_bottle"), groups = {vessel = 1}, }) -minetest.register_craftitem('bees:wax', { - description = S('Bees wax'), - inventory_image = 'bees_wax.png', +minetest.register_craftitem("bees:wax", { + description = S("Bees wax"), + inventory_image = "bees_wax.png", stack_max = 48, }) -minetest.register_craftitem('bees:honey_comb', { - description = S('honey comb'), - inventory_image = 'bees_comb.png', +minetest.register_craftitem("bees:honey_comb", { + description = S("honey comb"), + inventory_image = "bees_comb.png", on_use = minetest.item_eat(2), stack_max = 8, }) -minetest.register_craftitem('bees:queen', { - description = S('Queen Bee'), - inventory_image = 'bees_particle_bee.png', +minetest.register_craftitem("bees:queen", { + description = S("Queen Bee"), + inventory_image = "bees_particle_bee.png", stack_max = 1, }) @@ -795,66 +795,66 @@ minetest.register_craftitem('bees:queen', { -- CRAFTS minetest.register_craft({ - output = 'bees:extractor', + output = "bees:extractor", recipe = { - {'','default:steel_ingot',''}, - {'default:steel_ingot','default:stick','default:steel_ingot'}, - {'default:mese_crystal','default:steel_ingot','default:mese_crystal'}, + {"", "default:steel_ingot", ""}, + {"default:steel_ingot", "default:stick", "default:steel_ingot"}, + {"default:mese_crystal", "default:steel_ingot", "default:mese_crystal"}, } }) minetest.register_craft({ - output = 'bees:smoker', + output = "bees:smoker", recipe = { - {'default:steel_ingot', 'wool:red', ''}, - {'', 'default:torch', ''}, - {'', 'default:steel_ingot',''}, + {"default:steel_ingot", "wool:red", ""}, + {"", "default:torch", ""}, + {"", "default:steel_ingot",""}, } }) minetest.register_craft({ - output = 'bees:hive_artificial', + output = "bees:hive_artificial", recipe = { - {'group:wood','group:wood','group:wood'}, - {'group:wood','default:stick','group:wood'}, - {'group:wood','default:stick','group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "default:stick", "group:wood"}, + {"group:wood", "default:stick", "group:wood"}, } }) minetest.register_craft({ - output = 'bees:grafting_tool', + output = "bees:grafting_tool", recipe = { - {'', '', 'default:steel_ingot'}, - {'', 'default:stick', ''}, - {'', '', ''}, + {"", "", "default:steel_ingot"}, + {"", "default:stick", ""}, + {"", "", ""}, } }) minetest.register_craft({ - output = 'bees:frame_empty', + output = "bees:frame_empty", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'default:stick', 'default:stick', 'default:stick'}, - {'default:stick', 'default:stick', 'default:stick'}, + {"group:wood", "group:wood", "group:wood"}, + {"default:stick", "default:stick", "default:stick"}, + {"default:stick", "default:stick", "default:stick"}, } }) -if minetest.get_modpath('bushes_classic') then +if minetest.get_modpath("bushes_classic") then minetest.register_craft({ - type = 'cooking', + type = "cooking", cooktime = 5, - recipe = 'bees:bottle_honey', - output = 'bushes:sugar', + recipe = "bees:bottle_honey", + output = "bushes:sugar", }) end -- TOOLS -minetest.register_tool('bees:smoker', { - description = S('smoker'), - inventory_image = 'bees_smoker.png', +minetest.register_tool("bees:smoker", { + description = S("smoker"), + inventory_image = "bees_smoker.png", tool_capabilities = { full_punch_interval = 3.0, max_drop_level = 0, @@ -882,7 +882,7 @@ minetest.register_tool('bees:smoker', { expirationtime = 2 + random(2.5), size = random(3), collisiondetection = false, - texture = 'bees_smoke_particle.png', + texture = "bees_smoke_particle.png", }) end @@ -890,15 +890,15 @@ minetest.register_tool('bees:smoker', { local meta = minetest.get_meta(pos) - meta:set_int('agressive', 0) + meta:set_int("agressive", 0) return itemstack end, }) -minetest.register_tool('bees:grafting_tool', { - description = S('Grafting tool'), - inventory_image = 'bees_grafting_tool.png', +minetest.register_tool("bees:grafting_tool", { + description = S("Grafting tool"), + inventory_image = "bees_grafting_tool.png", tool_capabilities = { full_punch_interval = 3.0, max_drop_level=0, @@ -910,37 +910,37 @@ minetest.register_tool('bees:grafting_tool', { -- COMPATIBILTY --remove after all has been updated -- ALIASES -minetest.register_alias('bees:honey_extractor', 'bees:extractor') +minetest.register_alias("bees:honey_extractor", "bees:extractor") -- BACKWARDS COMPATIBILITY WITH OLDER VERSION -minetest.register_alias('bees:honey_bottle', 'bees:bottle_honey') +minetest.register_alias("bees:honey_bottle", "bees:bottle_honey") minetest.register_lbm({ - nodenames = {'bees:hive', 'bees:hive_artificial_inhabited'}, - name = 'bees:replace_old_hives', - label = 'Replace old hives', + nodenames = {"bees:hive", "bees:hive_artificial_inhabited"}, + name = "bees:replace_old_hives", + label = "Replace old hives", run_at_every_load = true, action = function(pos, node) - if node.name == 'bees:hive' then + if node.name == "bees:hive" then - minetest.set_node(pos, {name = 'bees:hive_wild'}) + minetest.set_node(pos, {name = "bees:hive_wild"}) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - inv:set_stack('queen', 1, 'bees:queen') + inv:set_stack("queen", 1, "bees:queen") end - if node.name == 'bees:hive_artificial_inhabited' then + if node.name == "bees:hive_artificial_inhabited" then - minetest.set_node(pos, {name = 'bees:hive_artificial'}) + minetest.set_node(pos, {name = "bees:hive_artificial"}) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - inv:set_stack('queen', 1, 'bees:queen') + inv:set_stack("queen", 1, "bees:queen") local timer = minetest.get_node_timer(pos) @@ -954,10 +954,10 @@ minetest.register_lbm({ if minetest.get_modpath("pipeworks") then - minetest.register_node('bees:hive_industrial', { - description = S('Industrial Bee Hive'), - tiles = { 'bees_hive_industrial.png'}, - paramtype2 = 'facedir', + minetest.register_node("bees:hive_industrial", { + description = S("Industrial Bee Hive"), + tiles = {"bees_hive_industrial.png"}, + paramtype2 = "facedir", groups = { snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, tubedevice_receiver = 1 @@ -985,7 +985,7 @@ if minetest.get_modpath("pipeworks") then timer:start(30) - meta:set_string('infotext', S('Bees are aclimating')) + meta:set_string("infotext", S("Bees are aclimating")) return ItemStack("") end @@ -1034,12 +1034,12 @@ if minetest.get_modpath("pipeworks") then local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - meta:set_int('agressive', 1) + meta:set_int("agressive", 1) - inv:set_size('queen', 1) - inv:set_size('frames', 8) + inv:set_size("queen", 1) + inv:set_size("frames", 8) - meta:set_string('infotext', S('Requires Queen bee to function')) + meta:set_string("infotext", S("Requires Queen bee to function")) end, on_rightclick = function(pos, node, clicker, itemstack) @@ -1049,19 +1049,19 @@ if minetest.get_modpath("pipeworks") then end minetest.show_formspec(clicker:get_player_name(), - 'bees:hive_artificial', + "bees:hive_artificial", hive_artificial(pos) ) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if meta:get_int('agressive') == 1 - and inv:contains_item('queen', 'bees:queen') then + if meta:get_int("agressive") == 1 + and inv:contains_item("queen", "bees:queen") then clicker:set_hp(clicker:get_hp() - 4) else - meta:set_int('agressive', 1) + meta:set_int("agressive", 1) end end, @@ -1071,47 +1071,47 @@ if minetest.get_modpath("pipeworks") then local inv = meta:get_inventory() local timer = minetest.get_node_timer(pos) - if inv:contains_item('queen', 'bees:queen') then + if inv:contains_item("queen", "bees:queen") then - if inv:contains_item('frames', 'bees:frame_empty') then + if inv:contains_item("frames", "bees:frame_empty") then timer:start(30) local rad = 10 local minp = {x = pos.x - rad, y = pos.y - rad, z = pos.z - rad} local maxp = {x = pos.x + rad, y = pos.y + rad, z = pos.z + rad} - local flowers = minetest.find_nodes_in_area(minp, maxp, 'group:flower') - local progress = meta:get_int('progress') + local flowers = minetest.find_nodes_in_area(minp, maxp, "group:flower") + local progress = meta:get_int("progress") progress = progress + #flowers - meta:set_int('progress', progress) + meta:set_int("progress", progress) if progress > 1000 then - local flower = flowers[random(#flowers)] + local flower = flowers[random(#flowers)] polinate_flower(flower, minetest.get_node(flower).name) - local stacks = inv:get_list('frames') + local stacks = inv:get_list("frames") for k, v in pairs(stacks) do - if inv:get_stack('frames', k):get_name() == 'bees:frame_empty' then + if inv:get_stack("frames", k):get_name() == "bees:frame_empty" then - meta:set_int('progress', 0) + meta:set_int("progress", 0) - inv:set_stack('frames',k,'bees:frame_full') + inv:set_stack("frames", k, "bees:frame_full") return end end else - meta:set_string('infotext', S('progress:') - .. ' '..progress..' + '..#flowers..' / 1000') + meta:set_string("infotext", S("progress:") + .. " " .. progress .. " + " .. #flowers .. " / 1000") end else - meta:set_string('infotext', S('Does not have empty frame(s)')) + meta:set_string("infotext", S("Does not have empty frame(s)")) timer:stop() end @@ -1120,12 +1120,12 @@ if minetest.get_modpath("pipeworks") then on_metadata_inventory_take = function(pos, listname, index, stack, player) - if listname == 'queen' then + if listname == "queen" then local timer = minetest.get_node_timer(pos) local meta = minetest.get_meta(pos) - meta:set_string('infotext', S('Requires Queen bee to function')) + meta:set_string("infotext", S("Requires Queen bee to function")) timer:stop() end @@ -1135,7 +1135,7 @@ if minetest.get_modpath("pipeworks") then local inv = minetest.get_meta(pos):get_inventory() - if from_list == to_list then + if from_list == to_list then if inv:get_stack(to_list, to_index):is_empty() then return 1 @@ -1153,16 +1153,16 @@ if minetest.get_modpath("pipeworks") then local inv = meta:get_inventory() local timer = minetest.get_node_timer(pos) - if listname == 'queen' or listname == 'frames' then + if listname == "queen" or listname == "frames" then - meta:set_string('queen', stack:get_name()) - meta:set_string('infotext', S('Queen inserted, now for the empty frames')) + meta:set_string("queen", stack:get_name()) + meta:set_string("infotext", S("Queen inserted, now for the empty frames")) - if inv:contains_item('frames', 'bees:frame_empty') then + if inv:contains_item("frames", "bees:frame_empty") then timer:start(30) - meta:set_string('infotext', S('Bees are aclimating')) + meta:set_string("infotext", S("Bees are aclimating")) end end end, @@ -1173,15 +1173,15 @@ if minetest.get_modpath("pipeworks") then return 0 end - if listname == 'queen' then + if listname == "queen" then - if stack:get_name():match('bees:queen*') then + if stack:get_name():match("bees:queen*") then return 1 end - elseif listname == 'frames' then + elseif listname == "frames" then - if stack:get_name() == ('bees:frame_empty') then + if stack:get_name() == ("bees:frame_empty") then return 1 end end @@ -1191,11 +1191,11 @@ if minetest.get_modpath("pipeworks") then }) minetest.register_craft({ - output = 'bees:hive_industrial', + output = "bees:hive_industrial", recipe = { - {'default:steel_ingot','homedecor:plastic_sheeting','default:steel_ingot'}, - {'pipeworks:tube_1','bees:hive_artificial','pipeworks:tube_1'}, - {'default:steel_ingot','homedecor:plastic_sheeting','default:steel_ingot'}, + {"default:steel_ingot","homedecor:plastic_sheeting","default:steel_ingot"}, + {"pipeworks:tube_1","bees:hive_artificial","pipeworks:tube_1"}, + {"default:steel_ingot","homedecor:plastic_sheeting","default:steel_ingot"}, } }) end @@ -1203,7 +1203,7 @@ end -- LUCKY BLOCKS -if minetest.get_modpath('lucky_block') then +if minetest.get_modpath("lucky_block") then local add_bees = function(pos, player) @@ -1221,23 +1221,23 @@ if minetest.get_modpath('lucky_block') then player_pos.y = player_pos.y + 1 - minetest.swap_node(player_pos, {name = 'bees:bees'}) + minetest.swap_node(player_pos, {name = "bees:bees"}) end end end lucky_block:add_blocks({ - {'cus', add_bees}, - {'dro', {'bees:grafting_tool'}, 1}, - {'dro', {'bees:frame_empty'}, 2}, - {'dro', {'bees:queen'}, 1}, - {'nod', 'bees:extractor'}, - {'dro', {'bees:frame_full'}, 2}, - {'dro', {'bees:bottle_honey'}, 3}, - {'dro', {'bees:smoker'}, 1}, - {'nod', 'bees:hive_artificial'}, + {"cus", add_bees}, + {"dro", {"bees:grafting_tool"}, 1}, + {"dro", {"bees:frame_empty"}, 2}, + {"dro", {"bees:queen"}, 1}, + {"nod", "bees:extractor"}, + {"dro", {"bees:frame_full"}, 2}, + {"dro", {"bees:bottle_honey"}, 3}, + {"dro", {"bees:smoker"}, 1}, + {"nod", "bees:hive_artificial"}, }) end -print(S('[MOD] Bees Loaded!')) +print(S("[MOD] Bees Loaded!")) diff --git a/blox/init.lua b/blox/init.lua index 311ed925..7515685d 100644 --- a/blox/init.lua +++ b/blox/init.lua @@ -116,6 +116,7 @@ for _, nodeclass in ipairs(NodeClass) do groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig }) minetest.register_node("blox:cobble_"..nodeclass, { @@ -133,6 +134,7 @@ for _, nodeclass in ipairs(NodeClass) do groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig }) minetest.register_node("blox:wood_"..nodeclass, { @@ -150,6 +152,7 @@ for _, nodeclass in ipairs(NodeClass) do groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig }) table.insert(blox.old_89_color_nodes, "blox:stone_"..nodeclass) @@ -169,6 +172,7 @@ minetest.register_node("blox:wood_tinted", { groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig }) minetest.register_node("blox:stone_square", { @@ -181,6 +185,7 @@ minetest.register_node("blox:stone_square", { groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig }) minetest.register_node("blox:cobble_tinted", { @@ -193,6 +198,7 @@ minetest.register_node("blox:cobble_tinted", { groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig }) minetest.register_node("blox:stone_tinted", { @@ -205,6 +211,7 @@ minetest.register_node("blox:stone_tinted", { groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3, not_in_creative_inventory = 1, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, drop = { items = { {items = {"blox:cobble_tinted"}, inherit_color = true }, diff --git a/bobblocks/blocks.lua b/bobblocks/blocks.lua index ef627941..dbe56a2a 100644 --- a/bobblocks/blocks.lua +++ b/bobblocks/blocks.lua @@ -52,6 +52,7 @@ minetest.register_node("bobblocks:block", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node("bobblocks:block_off", { @@ -71,6 +72,7 @@ minetest.register_node("bobblocks:block_off", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) -- Block Poles @@ -94,6 +96,7 @@ minetest.register_node("bobblocks:pole", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node("bobblocks:pole_off", { @@ -117,6 +120,7 @@ minetest.register_node("bobblocks:pole_off", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) -- old nodes grandfathered-in because they have a different texture or usage than the colored ones. @@ -151,6 +155,7 @@ minetest.register_node("bobblocks:wavyblock", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node("bobblocks:wavyblock_off", { @@ -171,6 +176,7 @@ minetest.register_node("bobblocks:wavyblock_off", { }, on_rightclick = bobblocks.update_bobblock, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node("bobblocks:wavypole", { @@ -186,6 +192,7 @@ minetest.register_node("bobblocks:wavypole", { sounds = default.node_sound_glass_defaults(), groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1}, on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, --light_source = LIGHT_MAX-0, }) diff --git a/castle_tapestries/init.lua b/castle_tapestries/init.lua index 8d703d69..cd4f7c4b 100644 --- a/castle_tapestries/init.lua +++ b/castle_tapestries/init.lua @@ -74,6 +74,7 @@ minetest.register_node("castle_tapestries:tapestry", { wall_side = {-0.5,-0.5,0.4375,0.5,1.5,0.5}, }, after_place_node = unifieddyes.fix_rotation_nsew, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) @@ -95,6 +96,7 @@ minetest.register_node("castle_tapestries:tapestry_long", { wall_side = {-0.5,-0.5,0.4375,0.5,2.5,0.5}, }, after_place_node = unifieddyes.fix_rotation_nsew, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) @@ -116,6 +118,7 @@ minetest.register_node("castle_tapestries:tapestry_very_long", { wall_side = {-0.5,-0.5,0.4375,0.5,3.5,0.5}, }, after_place_node = unifieddyes.fix_rotation_nsew, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew }) diff --git a/coloredwood/depends.txt b/coloredwood/depends.txt index f727feb2..3ab55ba4 100644 --- a/coloredwood/depends.txt +++ b/coloredwood/depends.txt @@ -1,3 +1,4 @@ default unifieddyes moreblocks? +signs_lib? diff --git a/coloredwood/init.lua b/coloredwood/init.lua index a1d8a1a1..c67b9652 100644 --- a/coloredwood/init.lua +++ b/coloredwood/init.lua @@ -88,6 +88,7 @@ for _, color in ipairs(unifieddyes.HUES_WITH_GREY) do after_place_node = function(pos, placer, itemstack, pointed_thing) minetest.rotate_node(itemstack, placer, pointed_thing) end, + on_dig = unifieddyes.on_dig, groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2, not_in_creative_inventory=1, ud_param2_colorable = 1}, } ) @@ -167,7 +168,8 @@ default.register_fence("coloredwood:fence", { palette = "unifieddyes_palette_extended.png", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, ud_param2_colorable = 1, not_in_creative_inventory=1}, sounds = default.node_sound_wood_defaults(), - material = "coloredwood:wood_block" + material = "coloredwood:wood_block", + on_dig = unifieddyes.on_dig, }) groups = table.copy(minetest.registered_items["default:fence_wood"].groups) @@ -214,4 +216,8 @@ unifieddyes.register_color_craft({ } }) +if minetest.get_modpath("signs_lib") then + signs_lib.allowed_poles["coloredwood:fence"] = true +end + print("[Colored Wood] Loaded!") diff --git a/computer/computers.lua b/computer/computers.lua index 06b04a93..5a81e916 100644 --- a/computer/computers.lua +++ b/computer/computers.lua @@ -258,33 +258,6 @@ minetest.register_node("computer:tower", { minetest.register_alias("computer:tower_on", "computer:tower") --- Printer/scaner combo -minetest.register_node("computer:printer", { - description = S("Printer-Scanner Combo"), - inventory_image = "computer_printer_inv.png", - tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png", - "computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"}, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - groups = {snappy=3}, - sound = default.node_sound_wood_defaults(), - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.3125, -0.125, 0.4375, -0.0625, 0.375}, - {-0.4375, -0.5, -0.125, 0.4375, -0.4375, 0.375}, - {-0.4375, -0.5, -0.125, -0.25, -0.0625, 0.375}, - {0.25, -0.5, -0.125, 0.4375, -0.0625, 0.375}, - {-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375}, - {-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375}, - {-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5}, - {-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0} - }, - }, -}) - --Rack Server minetest.register_node("computer:server", { drawtype = "nodebox", diff --git a/computer/depends.txt b/computer/depends.txt index 997cb0b2..e582ef21 100644 --- a/computer/depends.txt +++ b/computer/depends.txt @@ -1,2 +1,4 @@ default homedecor_common +basic_materials +unifieddyes diff --git a/computer/init.lua b/computer/init.lua index 534878dd..ffae5583 100644 --- a/computer/init.lua +++ b/computer/init.lua @@ -94,6 +94,6 @@ end local MODPATH = minetest.get_modpath("computer") dofile(MODPATH.."/computers.lua") -dofile(MODPATH.."/miscitems.lua") +dofile(MODPATH.."/printers.lua") dofile(MODPATH.."/recipes.lua") dofile(MODPATH.."/tetris.lua") diff --git a/computer/miscitems.lua b/computer/miscitems.lua deleted file mode 100644 index 1eb0634b..00000000 --- a/computer/miscitems.lua +++ /dev/null @@ -1,68 +0,0 @@ --- Copyright (C) 2012-2013 Diego Martínez - --- This file defines some items in order to not have to depend on other mods. - -local S = homedecor.gettext - -if (not minetest.get_modpath("homedecor")) then - - minetest.register_craftitem(":basic_materials:plastic_sheet", { - description = S("Plastic sheet"), - inventory_image = "homedecor_plastic_sheeting.png", - }) - - minetest.register_craftitem(":homedecor:plastic_base", { - description = S("Unprocessed Plastic base"), - wield_image = "homedecor_plastic_base.png", - inventory_image = "homedecor_plastic_base_inv.png", - }) - - minetest.register_craft({ - type = "shapeless", - output = 'homedecor:plastic_base 6', - recipe = { "default:junglegrass", - "default:junglegrass", - "default:junglegrass" - } - }) - - minetest.register_craft({ - type = "shapeless", - output = 'homedecor:plastic_base 3', - recipe = { "default:dry_shrub", - "default:dry_shrub", - "default:dry_shrub" - }, - }) - - minetest.register_craft({ - type = "shapeless", - output = 'homedecor:plastic_base 4', - recipe = { "default:leaves", - "default:leaves", - "default:leaves", - "default:leaves", - "default:leaves", - "default:leaves" - } - }) - - minetest.register_craft({ - type = "cooking", - output = "basic_materials:plastic_sheet", - recipe = "homedecor:plastic_base", - }) - - minetest.register_craft({ - type = 'fuel', - recipe = 'homedecor:plastic_base', - burntime = 30, - }) - - minetest.register_craft({ - type = 'fuel', - recipe = 'basic_materials:plastic_sheet', - burntime = 30, - }) - -end -- not homedecor diff --git a/computer/models/computer_3dprinter_bedflinger.obj b/computer/models/computer_3dprinter_bedflinger.obj new file mode 100644 index 00000000..e18a22cd --- /dev/null +++ b/computer/models/computer_3dprinter_bedflinger.obj @@ -0,0 +1,9835 @@ +# Blender v2.79 (sub 0) OBJ File: 'prusa-i3.blend' +# www.blender.org +o Cube.013_Cube.023 +v -0.004653 0.000000 -0.330167 +v -0.004653 0.000000 -0.316009 +v -0.004299 0.001781 -0.330167 +v -0.004299 0.001781 -0.316009 +v -0.003290 0.003290 -0.330167 +v -0.003290 0.003290 -0.316009 +v -0.001781 0.004299 -0.330167 +v -0.001781 0.004299 -0.316009 +v 0.000000 0.004653 -0.330167 +v 0.000000 0.004653 -0.316009 +v 0.001781 0.004299 -0.330167 +v 0.001781 0.004299 -0.316009 +v 0.003290 0.003290 -0.330167 +v 0.003290 0.003290 -0.316009 +v 0.004299 0.001781 -0.330167 +v 0.004299 0.001781 -0.316009 +v 0.004653 0.000000 -0.330167 +v 0.004653 0.000000 -0.316009 +v 0.004299 -0.001781 -0.330167 +v 0.004299 -0.001781 -0.316009 +v 0.003290 -0.003290 -0.330167 +v 0.003290 -0.003290 -0.316009 +v 0.001781 -0.004299 -0.330167 +v 0.001781 -0.004299 -0.316009 +v 0.000000 -0.004653 -0.330167 +v 0.000000 -0.004653 -0.316009 +v -0.001781 -0.004299 -0.330167 +v -0.001781 -0.004299 -0.316009 +v -0.003290 -0.003290 -0.330167 +v -0.003290 -0.003290 -0.316009 +v -0.004299 -0.001781 -0.330167 +v -0.004299 -0.001781 -0.316009 +v -0.000625 0.000000 -0.349999 +v -0.005000 0.000000 -0.342499 +v -0.000577 0.000239 -0.349999 +v -0.004619 0.001913 -0.342499 +v -0.000442 0.000442 -0.349999 +v -0.003535 0.003536 -0.342499 +v -0.000239 0.000577 -0.349999 +v -0.001913 0.004619 -0.342499 +v 0.000000 0.000625 -0.349999 +v 0.000000 0.005000 -0.342499 +v 0.000239 0.000577 -0.349999 +v 0.001913 0.004619 -0.342499 +v 0.000442 0.000442 -0.349999 +v 0.003536 0.003536 -0.342499 +v 0.000577 0.000239 -0.349999 +v 0.004619 0.001913 -0.342499 +v 0.000625 0.000000 -0.349999 +v 0.005000 0.000000 -0.342499 +v 0.000577 -0.000239 -0.349999 +v 0.004619 -0.001913 -0.342499 +v 0.000442 -0.000442 -0.349999 +v 0.003536 -0.003535 -0.342499 +v 0.000239 -0.000577 -0.349999 +v 0.001913 -0.004619 -0.342499 +v 0.000000 -0.000625 -0.349999 +v 0.000000 -0.005000 -0.342499 +v -0.000239 -0.000577 -0.349999 +v -0.001913 -0.004619 -0.342499 +v -0.000442 -0.000442 -0.349999 +v -0.003535 -0.003535 -0.342499 +v -0.000577 -0.000239 -0.349999 +v -0.004619 -0.001913 -0.342499 +v -0.010496 0.010496 -0.330167 +v -0.010496 0.010496 -0.342499 +v 0.010496 0.010496 -0.330167 +v 0.010496 0.010496 -0.342499 +v -0.010496 -0.010496 -0.330167 +v -0.010496 -0.010496 -0.342499 +v 0.010496 -0.010496 -0.330167 +v 0.010496 -0.010496 -0.342499 +v -0.061249 0.186210 -0.326249 +v -0.061249 0.186210 -0.253122 +v -0.111248 0.236209 -0.326249 +v -0.111248 0.236209 -0.253122 +v -0.111248 0.186210 -0.326249 +v -0.111248 0.186210 -0.253122 +v -0.086248 0.236209 -0.326249 +v -0.086248 0.236209 -0.253122 +v -0.061248 0.298709 -0.326249 +v -0.086248 0.298709 -0.326249 +v -0.061248 0.298709 -0.307932 +v -0.061248 0.243899 -0.307932 +v -0.086248 0.243899 -0.307932 +v -0.086248 0.298709 -0.307932 +v -0.061248 0.243899 -0.253122 +v -0.086248 0.243899 -0.253122 +v -0.061251 -0.193789 -0.326249 +v -0.061251 -0.193789 -0.253122 +v -0.061251 -0.243789 -0.326249 +v -0.061251 -0.243789 -0.253122 +v -0.111251 -0.193789 -0.326249 +v -0.111251 -0.193789 -0.253122 +v -0.111251 -0.243789 -0.326249 +v -0.111251 -0.243789 -0.253122 +v -0.078748 0.211210 -0.261247 +v -0.078368 0.211210 -0.259334 +v -0.077284 0.211210 -0.257712 +v -0.075662 0.211210 -0.256628 +v -0.073748 0.211210 -0.256247 +v -0.071835 0.211210 -0.256628 +v -0.070213 0.211209 -0.257712 +v -0.069129 0.211209 -0.259334 +v -0.068748 0.211209 -0.261247 +v -0.069129 0.211209 -0.263161 +v -0.070213 0.211209 -0.264783 +v -0.071835 0.211209 -0.265867 +v -0.073748 0.211210 -0.266247 +v -0.075662 0.211210 -0.265867 +v -0.077284 0.211210 -0.264783 +v -0.078368 0.211210 -0.263161 +v -0.078368 -0.214277 -0.263160 +v -0.078748 -0.214277 -0.261247 +v -0.071835 -0.214277 -0.265866 +v -0.069129 -0.214277 -0.263161 +v -0.075662 -0.214277 -0.265866 +v -0.071835 -0.214277 -0.256628 +v -0.075662 -0.214277 -0.256628 +v -0.078368 -0.214277 -0.259334 +v -0.069129 -0.214277 -0.259334 +v -0.077284 -0.214277 -0.264783 +v -0.073748 -0.214277 -0.266247 +v -0.070213 -0.214277 -0.264783 +v -0.068748 -0.214277 -0.261247 +v -0.070213 -0.214277 -0.257712 +v -0.073748 -0.214277 -0.256247 +v -0.077284 -0.214277 -0.257712 +v -0.061250 -0.037500 -0.326250 +v -0.061250 -0.037500 -0.253122 +v -0.086250 -0.037500 -0.326250 +v -0.086250 -0.037500 -0.253122 +v -0.061249 0.037500 -0.326249 +v -0.061249 0.037500 -0.253122 +v -0.086249 0.037500 -0.326249 +v -0.086249 0.037500 -0.253122 +v -0.006250 -0.027500 -0.316249 +v -0.006250 -0.027500 -0.261249 +v -0.006250 0.027500 -0.316249 +v -0.006250 0.027500 -0.261249 +v 0.018750 -0.027500 -0.316249 +v 0.018750 -0.027500 -0.261249 +v 0.018750 0.027500 -0.316249 +v 0.018750 0.027500 -0.261249 +v -0.006250 -0.027500 -0.316249 +v -0.061250 -0.027500 -0.261249 +v -0.006250 -0.027500 -0.261249 +v -0.006250 0.027500 -0.316249 +v -0.061249 0.027500 -0.261250 +v -0.006250 0.027500 -0.261250 +v -0.012500 -0.027500 -0.316249 +v -0.055000 -0.027500 -0.261249 +v -0.054999 0.027500 -0.261250 +v -0.054999 0.027500 -0.316249 +v -0.012500 -0.027500 -0.261249 +v -0.012500 0.027500 -0.261250 +v -0.012500 0.027500 -0.316249 +v -0.061250 -0.027500 -0.316249 +v -0.061249 0.027500 -0.316249 +v -0.055000 -0.027500 -0.316249 +v -0.072501 -0.195039 -0.283186 +v -0.072501 -0.195039 -0.280686 +v -0.079998 -0.195039 -0.283186 +v -0.079998 -0.195039 -0.280686 +v -0.072498 0.271225 -0.283181 +v -0.072498 0.271225 -0.280681 +v -0.079998 0.271225 -0.283181 +v -0.079998 0.271225 -0.280681 +v -0.078748 -0.214277 -0.317497 +v -0.078368 -0.214277 -0.319410 +v -0.077284 -0.214277 -0.321032 +v -0.075662 -0.214277 -0.322116 +v -0.073748 -0.214277 -0.322497 +v -0.071835 -0.214277 -0.322116 +v -0.070213 -0.214277 -0.321032 +v -0.069129 -0.214277 -0.319410 +v -0.068748 -0.214277 -0.317497 +v -0.069129 -0.214277 -0.315583 +v -0.070213 -0.214277 -0.313961 +v -0.071835 -0.214277 -0.312877 +v -0.073748 -0.214277 -0.312497 +v -0.075662 -0.214277 -0.312877 +v -0.077284 -0.214277 -0.313961 +v -0.078368 -0.214277 -0.315583 +v -0.078368 0.211209 -0.315584 +v -0.078748 0.211209 -0.317497 +v -0.071835 0.211209 -0.312878 +v -0.069129 0.211209 -0.315584 +v -0.075662 0.211209 -0.312878 +v -0.071835 0.211209 -0.322117 +v -0.075662 0.211209 -0.322117 +v -0.078368 0.211209 -0.319411 +v -0.069129 0.211209 -0.319411 +v -0.077284 0.211209 -0.313962 +v -0.073748 0.211209 -0.312497 +v -0.070213 0.211209 -0.313962 +v -0.068748 0.211209 -0.317497 +v -0.070213 0.211209 -0.321033 +v -0.073748 0.211209 -0.322497 +v -0.077284 0.211209 -0.321033 +v -0.072501 -0.195039 -0.300584 +v -0.072501 -0.195039 -0.298084 +v -0.079998 -0.195039 -0.300584 +v -0.079998 -0.195039 -0.298084 +v -0.072498 0.271225 -0.300579 +v -0.072498 0.271225 -0.298079 +v -0.079998 0.271225 -0.300579 +v -0.079998 0.271225 -0.298079 +v -0.153354 0.173317 -0.394115 +v -0.153354 0.173317 -0.303007 +v -0.227896 0.173317 -0.394115 +v -0.227896 0.173317 -0.303007 +v -0.153354 0.190909 -0.394115 +v -0.153354 0.190909 -0.303007 +v -0.227896 0.190909 -0.394115 +v -0.227896 0.190909 -0.303007 +v -0.148544 -0.224005 -0.437461 +v -0.148544 -0.224005 -0.194124 +v -0.279971 -0.224005 -0.437461 +v -0.279971 -0.224005 -0.194124 +v -0.148544 -0.173556 -0.437461 +v -0.148544 -0.173556 -0.194123 +v -0.279970 -0.173556 -0.437461 +v -0.279970 -0.173556 -0.194123 +v -0.142877 -0.199999 -0.500000 +v -0.142877 -0.197499 -0.497500 +v -0.142874 0.197499 -0.497496 +v -0.142874 0.199999 -0.499996 +v -0.142874 0.231249 -0.493746 +v -0.142874 0.231249 -0.043748 +v -0.142874 0.224999 -0.037498 +v -0.142877 -0.224999 -0.037502 +v -0.142877 -0.231249 -0.043752 +v -0.142875 0.037500 -0.449998 +v -0.142876 0.006250 -0.481248 +v -0.142876 -0.006250 -0.481248 +v -0.142876 -0.037500 -0.449999 +v -0.142876 -0.093750 -0.449999 +v -0.142876 -0.100000 -0.456249 +v -0.142876 -0.100000 -0.475081 +v -0.142876 -0.100202 -0.476620 +v -0.142876 -0.100828 -0.478130 +v -0.142876 -0.101823 -0.479426 +v -0.142876 -0.103119 -0.480421 +v -0.142876 -0.104629 -0.481047 +v -0.142876 -0.106250 -0.481260 +v -0.142876 -0.107870 -0.481047 +v -0.142876 -0.109380 -0.480421 +v -0.142876 -0.110677 -0.479427 +v -0.142876 -0.111672 -0.478130 +v -0.142876 -0.112297 -0.476620 +v -0.142876 -0.112500 -0.475081 +v -0.142876 -0.112500 -0.456250 +v -0.142876 -0.118750 -0.450000 +v -0.142876 -0.156249 -0.450000 +v -0.142876 -0.162499 -0.443750 +v -0.142876 -0.162499 -0.093751 +v -0.142876 -0.156249 -0.087501 +v -0.142875 0.156249 -0.087498 +v -0.142875 0.162499 -0.093748 +v -0.142875 0.162499 -0.443747 +v -0.142875 0.156249 -0.449997 +v -0.142875 0.118749 -0.449997 +v -0.142875 0.112500 -0.456247 +v -0.142875 0.112500 -0.475079 +v -0.142875 0.112297 -0.476618 +v -0.142875 0.111672 -0.478128 +v -0.142875 0.110677 -0.479424 +v -0.142875 0.109380 -0.480419 +v -0.142875 0.107870 -0.481045 +v -0.142875 0.106250 -0.481258 +v -0.142875 0.104629 -0.481045 +v -0.142875 0.103119 -0.480419 +v -0.142875 0.101823 -0.479424 +v -0.142875 0.100828 -0.478128 +v -0.142875 0.100202 -0.476618 +v -0.142875 0.100000 -0.475079 +v -0.142875 0.100000 -0.456247 +v -0.142875 0.093750 -0.449998 +v -0.142877 -0.224999 -0.500001 +v -0.142874 0.224999 -0.499996 +v -0.142877 -0.231249 -0.493990 +v -0.135377 -0.199999 -0.500000 +v -0.135377 -0.197499 -0.497500 +v -0.135375 0.197499 -0.497496 +v -0.135375 0.199999 -0.499996 +v -0.135374 0.231249 -0.493746 +v -0.135374 0.231249 -0.043748 +v -0.135374 0.224999 -0.037498 +v -0.135377 -0.224999 -0.037502 +v -0.135377 -0.231249 -0.043752 +v -0.135375 0.037500 -0.449998 +v -0.135376 0.006250 -0.481248 +v -0.135376 -0.006250 -0.481248 +v -0.135376 -0.037500 -0.449999 +v -0.135376 -0.093750 -0.449999 +v -0.135376 -0.100000 -0.456249 +v -0.135376 -0.100000 -0.475081 +v -0.135376 -0.100202 -0.476620 +v -0.135376 -0.100828 -0.478130 +v -0.135376 -0.101823 -0.479426 +v -0.135376 -0.103119 -0.480421 +v -0.135376 -0.104629 -0.481047 +v -0.135376 -0.106250 -0.481260 +v -0.135376 -0.107870 -0.481047 +v -0.135376 -0.109380 -0.480421 +v -0.135376 -0.110677 -0.479427 +v -0.135376 -0.111672 -0.478130 +v -0.135376 -0.112297 -0.476620 +v -0.135376 -0.112500 -0.475081 +v -0.135376 -0.112500 -0.456250 +v -0.135376 -0.118750 -0.450000 +v -0.135376 -0.156249 -0.450000 +v -0.135376 -0.162499 -0.093751 +v -0.135376 -0.156249 -0.087501 +v -0.135375 0.156249 -0.087498 +v -0.135375 0.162499 -0.093748 +v -0.135375 0.162499 -0.443747 +v -0.135375 0.156249 -0.449997 +v -0.135375 0.118749 -0.449997 +v -0.135375 0.112500 -0.456247 +v -0.135375 0.112500 -0.475079 +v -0.135375 0.112297 -0.476618 +v -0.135375 0.111672 -0.478128 +v -0.135375 0.110677 -0.479424 +v -0.135375 0.109380 -0.480419 +v -0.135375 0.107870 -0.481045 +v -0.135375 0.106250 -0.481258 +v -0.135375 0.104629 -0.481045 +v -0.135375 0.103119 -0.480419 +v -0.135375 0.101823 -0.479424 +v -0.135375 0.100828 -0.478128 +v -0.135375 0.100202 -0.476618 +v -0.135375 0.100000 -0.475079 +v -0.135375 0.100000 -0.456247 +v -0.135375 0.093750 -0.449998 +v -0.135377 -0.224999 -0.500001 +v -0.135374 0.224999 -0.499996 +v -0.135377 -0.231249 -0.493990 +v -0.135377 -0.162499 -0.443750 +v -0.243730 0.165772 -0.497499 +v -0.246229 0.165772 -0.499999 +v -0.277479 0.165772 -0.474249 +v -0.183730 0.165772 -0.467999 +v -0.178417 0.165772 -0.463922 +v -0.178230 0.165772 -0.462499 +v -0.178967 0.165772 -0.459749 +v -0.180980 0.165772 -0.457736 +v -0.183730 0.165772 -0.456999 +v -0.271229 0.165772 -0.456999 +v -0.277479 0.165772 -0.441249 +v -0.142879 0.165772 -0.497499 +v -0.271229 0.165772 -0.499999 +v -0.277479 0.165772 -0.493749 +v -0.271229 0.165772 -0.467999 +v -0.182306 0.165772 -0.467811 +v -0.180980 0.165772 -0.467262 +v -0.179841 0.165772 -0.466388 +v -0.178967 0.165772 -0.465249 +v -0.178417 0.165772 -0.461075 +v -0.179841 0.165772 -0.458610 +v -0.182306 0.165772 -0.457186 +v -0.277479 0.165772 -0.450749 +v -0.174830 0.165774 -0.037501 +v -0.142879 0.165774 -0.037501 +v -0.243729 0.173272 -0.497499 +v -0.246229 0.173272 -0.499999 +v -0.178417 0.173272 -0.463922 +v -0.178230 0.173272 -0.462499 +v -0.183730 0.173272 -0.456999 +v -0.271229 0.173272 -0.456999 +v -0.277479 0.173272 -0.441249 +v -0.271229 0.173272 -0.499999 +v -0.277479 0.173272 -0.493749 +v -0.182306 0.173272 -0.467811 +v -0.180980 0.173272 -0.467262 +v -0.179841 0.173272 -0.466388 +v -0.178967 0.173272 -0.465249 +v -0.174829 0.173274 -0.037501 +v -0.142879 0.173274 -0.037501 +v -0.142879 0.173272 -0.497499 +v -0.277479 0.173272 -0.474249 +v -0.271229 0.173272 -0.467999 +v -0.183730 0.173272 -0.467999 +v -0.178417 0.173272 -0.461075 +v -0.178967 0.173272 -0.459749 +v -0.179841 0.173272 -0.458610 +v -0.180980 0.173272 -0.457736 +v -0.182306 0.173272 -0.457186 +v -0.277479 0.173272 -0.450749 +v -0.243729 -0.173626 -0.497499 +v -0.246229 -0.173626 -0.499999 +v -0.277479 -0.173626 -0.474249 +v -0.183730 -0.173626 -0.467999 +v -0.178417 -0.173626 -0.463922 +v -0.178230 -0.173626 -0.462499 +v -0.178967 -0.173626 -0.459749 +v -0.180980 -0.173626 -0.457736 +v -0.183730 -0.173626 -0.456999 +v -0.271229 -0.173626 -0.456999 +v -0.277479 -0.173626 -0.441249 +v -0.142879 -0.173626 -0.497499 +v -0.271229 -0.173626 -0.499999 +v -0.277479 -0.173626 -0.493749 +v -0.271229 -0.173626 -0.467999 +v -0.182306 -0.173626 -0.467811 +v -0.180980 -0.173626 -0.467262 +v -0.179841 -0.173626 -0.466388 +v -0.178967 -0.173626 -0.465249 +v -0.178417 -0.173626 -0.461075 +v -0.179841 -0.173626 -0.458610 +v -0.182306 -0.173626 -0.457186 +v -0.277479 -0.173626 -0.450749 +v -0.174829 -0.173624 -0.037501 +v -0.142879 -0.173624 -0.037501 +v -0.243729 -0.166126 -0.497499 +v -0.246229 -0.166126 -0.499999 +v -0.178417 -0.166126 -0.463922 +v -0.178230 -0.166126 -0.462499 +v -0.183730 -0.166126 -0.456999 +v -0.271229 -0.166126 -0.456999 +v -0.277479 -0.166126 -0.441249 +v -0.271229 -0.166126 -0.499999 +v -0.277479 -0.166126 -0.493749 +v -0.182306 -0.166126 -0.467811 +v -0.180980 -0.166126 -0.467262 +v -0.179841 -0.166126 -0.466388 +v -0.178967 -0.166126 -0.465249 +v -0.174829 -0.166124 -0.037501 +v -0.142879 -0.166124 -0.037501 +v -0.142879 -0.166126 -0.497499 +v -0.277479 -0.166126 -0.474249 +v -0.271229 -0.166126 -0.467999 +v -0.183730 -0.166126 -0.467999 +v -0.178417 -0.166126 -0.461075 +v -0.178967 -0.166126 -0.459749 +v -0.179841 -0.166126 -0.458610 +v -0.180980 -0.166126 -0.457736 +v -0.182306 -0.166126 -0.457186 +v -0.277479 -0.166126 -0.450749 +v -0.098751 0.227461 -0.035004 +v -0.098751 0.227460 -0.437503 +v -0.096837 0.227081 -0.035004 +v -0.096837 0.227079 -0.437503 +v -0.095215 0.225997 -0.035004 +v -0.095215 0.225995 -0.437502 +v -0.094131 0.224375 -0.035004 +v -0.094131 0.224373 -0.437502 +v -0.093751 0.222461 -0.035004 +v -0.093751 0.222460 -0.437502 +v -0.094131 0.220548 -0.035004 +v -0.094131 0.220546 -0.437502 +v -0.095215 0.218926 -0.035004 +v -0.095215 0.218924 -0.437503 +v -0.096837 0.217842 -0.035004 +v -0.096837 0.217840 -0.437503 +v -0.098751 0.217461 -0.035004 +v -0.098751 0.217460 -0.437503 +v -0.100664 0.217842 -0.035004 +v -0.100664 0.217840 -0.437503 +v -0.102286 0.218926 -0.035004 +v -0.102286 0.218924 -0.437503 +v -0.103370 0.220548 -0.035004 +v -0.103370 0.220546 -0.437502 +v -0.103751 0.222461 -0.035004 +v -0.103751 0.222460 -0.437502 +v -0.103370 0.224375 -0.035004 +v -0.103370 0.224373 -0.437502 +v -0.102286 0.225997 -0.035004 +v -0.102286 0.225995 -0.437502 +v -0.100664 0.227081 -0.035004 +v -0.100664 0.227079 -0.437503 +v -0.135446 -0.237827 -0.431251 +v -0.135445 -0.186578 -0.431251 +v -0.131696 -0.241577 -0.431251 +v -0.127945 -0.179078 -0.431251 +v -0.120445 -0.179078 -0.431251 +v -0.112945 -0.186578 -0.431251 +v -0.112946 -0.222828 -0.431251 +v -0.076696 -0.222828 -0.431251 +v -0.072946 -0.226578 -0.431251 +v -0.072946 -0.235327 -0.431251 +v -0.079196 -0.241577 -0.431251 +v -0.135446 -0.237828 -0.456251 +v -0.135446 -0.235328 -0.458751 +v -0.135446 -0.215328 -0.478751 +v -0.135445 -0.205328 -0.478751 +v -0.135445 -0.186578 -0.460000 +v -0.131696 -0.241578 -0.452501 +v -0.097946 -0.241578 -0.437501 +v -0.097946 -0.241578 -0.438126 +v -0.112321 -0.241578 -0.452501 +v -0.079196 -0.241578 -0.437501 +v -0.072946 -0.235328 -0.437501 +v -0.072946 -0.226578 -0.437501 +v -0.076696 -0.222828 -0.437501 +v -0.112946 -0.222828 -0.437501 +v -0.112945 -0.186578 -0.437501 +v -0.120445 -0.179078 -0.437501 +v -0.127945 -0.179078 -0.437501 +v -0.134195 -0.185328 -0.458750 +v -0.134195 -0.185328 -0.437501 +v -0.125445 -0.185328 -0.458750 +v -0.125446 -0.205328 -0.478751 +v -0.125446 -0.215328 -0.478751 +v -0.125446 -0.235328 -0.458751 +v -0.118571 -0.235328 -0.458751 +v -0.118571 -0.235315 -0.458751 +v -0.125446 -0.235315 -0.458751 +v -0.097946 -0.235315 -0.438126 +v -0.097946 -0.235315 -0.437501 +v -0.125445 -0.185328 -0.437501 +v -0.125446 -0.235315 -0.437501 +v -0.135377 -0.234057 -0.042502 +v -0.135377 -0.234057 -0.057502 +v -0.135377 -0.229057 -0.037502 +v -0.135377 -0.186557 -0.057501 +v -0.135377 -0.186557 -0.037501 +v -0.127877 -0.241557 -0.039395 +v -0.127877 -0.241557 -0.055002 +v -0.130377 -0.239057 -0.057502 +v -0.126538 -0.241557 -0.037502 +v -0.134127 -0.185307 -0.037501 +v -0.125377 -0.194057 -0.037501 +v -0.125377 -0.222807 -0.037502 +v -0.091627 -0.222807 -0.037502 +v -0.087877 -0.226557 -0.037502 +v -0.087877 -0.235307 -0.037502 +v -0.094127 -0.241557 -0.037502 +v -0.134127 -0.185307 -0.057501 +v -0.125377 -0.241557 -0.052502 +v -0.094127 -0.241557 -0.043752 +v -0.097877 -0.241557 -0.043752 +v -0.106002 -0.241557 -0.052502 +v -0.097877 -0.241557 -0.044377 +v -0.125377 -0.235294 -0.052502 +v -0.130377 -0.189057 -0.057501 +v -0.087877 -0.235307 -0.043752 +v -0.087877 -0.226557 -0.043752 +v -0.091627 -0.222807 -0.043752 +v -0.125377 -0.222807 -0.043752 +v -0.125377 -0.235294 -0.043752 +v -0.125502 -0.193932 -0.052626 +v -0.106002 -0.235294 -0.052502 +v -0.097877 -0.235294 -0.044377 +v -0.097877 -0.235294 -0.043752 +v -0.098751 -0.225037 -0.035001 +v -0.098751 -0.225039 -0.437499 +v -0.096837 -0.225417 -0.035001 +v -0.096837 -0.225419 -0.437499 +v -0.095215 -0.226501 -0.035001 +v -0.095215 -0.226503 -0.437499 +v -0.094131 -0.228123 -0.035001 +v -0.094131 -0.228125 -0.437499 +v -0.093751 -0.230037 -0.035001 +v -0.093751 -0.230038 -0.437499 +v -0.094131 -0.231950 -0.035001 +v -0.094131 -0.231952 -0.437499 +v -0.095215 -0.233572 -0.035001 +v -0.095215 -0.233574 -0.437499 +v -0.096837 -0.234656 -0.035001 +v -0.096837 -0.234658 -0.437499 +v -0.098751 -0.235037 -0.035001 +v -0.098751 -0.235038 -0.437499 +v -0.100664 -0.234656 -0.035001 +v -0.100664 -0.234658 -0.437499 +v -0.102286 -0.233572 -0.035001 +v -0.102286 -0.233574 -0.437499 +v -0.103370 -0.231950 -0.035001 +v -0.103370 -0.231952 -0.437499 +v -0.103751 -0.230037 -0.035001 +v -0.103751 -0.230039 -0.437499 +v -0.103370 -0.228123 -0.035001 +v -0.103370 -0.228125 -0.437499 +v -0.102286 -0.226501 -0.035001 +v -0.102286 -0.226503 -0.437499 +v -0.100664 -0.225418 -0.035001 +v -0.100664 -0.225419 -0.437499 +v -0.135377 0.226481 -0.042503 +v -0.135377 0.226481 -0.057503 +v -0.135377 0.221481 -0.037503 +v -0.135376 0.178981 -0.057503 +v -0.135376 0.178981 -0.037503 +v -0.127877 0.233981 -0.039397 +v -0.127877 0.233981 -0.055003 +v -0.130377 0.231481 -0.057503 +v -0.126538 0.233981 -0.037503 +v -0.134126 0.177731 -0.037503 +v -0.125376 0.186481 -0.037503 +v -0.125377 0.215231 -0.037503 +v -0.091627 0.215231 -0.037503 +v -0.087877 0.218981 -0.037503 +v -0.087877 0.227731 -0.037503 +v -0.094127 0.233981 -0.037503 +v -0.134126 0.177731 -0.057503 +v -0.125377 0.233981 -0.052503 +v -0.094127 0.233981 -0.043753 +v -0.097877 0.233981 -0.043753 +v -0.106002 0.233981 -0.052503 +v -0.097877 0.233981 -0.044378 +v -0.125377 0.227718 -0.052503 +v -0.130376 0.181481 -0.057503 +v -0.087877 0.227731 -0.043753 +v -0.087877 0.218981 -0.043753 +v -0.091627 0.215231 -0.043753 +v -0.125377 0.215231 -0.043753 +v -0.125377 0.227718 -0.043753 +v -0.125501 0.186356 -0.052628 +v -0.106002 0.227718 -0.052503 +v -0.097877 0.227718 -0.044378 +v -0.097877 0.227718 -0.043753 +v -0.135446 0.230249 -0.431253 +v -0.135445 0.178999 -0.431252 +v -0.131696 0.233999 -0.431253 +v -0.127945 0.171499 -0.431252 +v -0.120445 0.171499 -0.431252 +v -0.112945 0.178999 -0.431252 +v -0.112946 0.215249 -0.431252 +v -0.076696 0.215249 -0.431252 +v -0.072946 0.218999 -0.431253 +v -0.072946 0.227749 -0.431253 +v -0.079196 0.233999 -0.431253 +v -0.135446 0.230249 -0.456253 +v -0.135446 0.227749 -0.458752 +v -0.135446 0.207749 -0.478752 +v -0.135446 0.197749 -0.478752 +v -0.135445 0.178999 -0.460002 +v -0.131696 0.233999 -0.452503 +v -0.097946 0.233999 -0.437503 +v -0.097946 0.233999 -0.438128 +v -0.112321 0.233999 -0.452503 +v -0.079196 0.233999 -0.437503 +v -0.072946 0.227749 -0.437503 +v -0.072946 0.218999 -0.437502 +v -0.076696 0.215249 -0.437502 +v -0.112946 0.215249 -0.437502 +v -0.112945 0.178999 -0.437502 +v -0.120445 0.171499 -0.437502 +v -0.127945 0.171499 -0.437502 +v -0.134195 0.177749 -0.458752 +v -0.134195 0.177749 -0.437502 +v -0.125445 0.177749 -0.458752 +v -0.125446 0.197749 -0.478752 +v -0.125446 0.207749 -0.478752 +v -0.125446 0.227749 -0.458752 +v -0.118571 0.227749 -0.458752 +v -0.118571 0.227736 -0.458752 +v -0.125446 0.227736 -0.458752 +v -0.097946 0.227736 -0.438128 +v -0.097946 0.227736 -0.437503 +v -0.125445 0.177749 -0.437502 +v -0.125446 0.227736 -0.437503 +v -0.350292 -0.050103 0.106628 +v -0.350292 0.044897 0.106627 +v -0.347916 -0.050103 0.082502 +v -0.347916 0.044896 0.082501 +v -0.340878 -0.050103 0.059303 +v -0.340878 0.044896 0.059302 +v -0.329450 -0.050103 0.037922 +v -0.329450 0.044896 0.037922 +v -0.314071 -0.050103 0.019182 +v -0.314071 0.044896 0.019182 +v -0.295331 -0.050103 0.003803 +v -0.295331 0.044896 0.003802 +v -0.273950 -0.050103 -0.007626 +v -0.273950 0.044896 -0.007626 +v -0.250751 -0.050104 -0.014663 +v -0.250751 0.044896 -0.014663 +v -0.226625 -0.050104 -0.017039 +v -0.226625 0.044896 -0.017039 +v -0.202499 -0.050103 -0.014663 +v -0.202499 0.044896 -0.014663 +v -0.179300 -0.050103 -0.007626 +v -0.179300 0.044896 -0.007626 +v -0.157920 -0.050103 0.003803 +v -0.157920 0.044896 0.003802 +v -0.139180 -0.050103 0.019182 +v -0.139180 0.044896 0.019182 +v -0.123800 -0.050103 0.037922 +v -0.123800 0.044896 0.037922 +v -0.112372 -0.050103 0.059302 +v -0.112372 0.044896 0.059302 +v -0.105335 -0.050103 0.082502 +v -0.105335 0.044896 0.082501 +v -0.102958 -0.050103 0.106628 +v -0.102958 0.044897 0.106627 +v -0.105335 -0.050103 0.130754 +v -0.105335 0.044897 0.130754 +v -0.112372 -0.050103 0.153953 +v -0.112372 0.044897 0.153953 +v -0.123800 -0.050103 0.175333 +v -0.123800 0.044897 0.175333 +v -0.139180 -0.050103 0.194073 +v -0.139180 0.044897 0.194073 +v -0.157920 -0.050103 0.209453 +v -0.157920 0.044897 0.209453 +v -0.179300 -0.050103 0.220881 +v -0.179300 0.044897 0.220881 +v -0.202499 -0.050103 0.227918 +v -0.202499 0.044897 0.227918 +v -0.226625 -0.050103 0.230294 +v -0.226625 0.044897 0.230294 +v -0.250751 -0.050103 0.227918 +v -0.250751 0.044897 0.227918 +v -0.273950 -0.050103 0.220881 +v -0.273950 0.044897 0.220881 +v -0.295331 -0.050103 0.209453 +v -0.295331 0.044897 0.209452 +v -0.314071 -0.050103 0.194073 +v -0.314071 0.044897 0.194073 +v -0.329450 -0.050103 0.175333 +v -0.329450 0.044897 0.175333 +v -0.340878 -0.050103 0.153953 +v -0.340878 0.044897 0.153952 +v -0.347916 -0.050103 0.130754 +v -0.347916 0.044897 0.130753 +v -0.347916 0.038647 0.082501 +v -0.350292 0.038647 0.106627 +v -0.340878 0.038646 0.059302 +v -0.329450 0.038646 0.037922 +v -0.314071 0.038646 0.019182 +v -0.295331 0.038646 0.003802 +v -0.273950 0.038646 -0.007626 +v -0.250751 0.038646 -0.014663 +v -0.226625 0.038646 -0.017039 +v -0.202499 0.038646 -0.014663 +v -0.179300 0.038646 -0.007626 +v -0.157920 0.038646 0.003802 +v -0.139180 0.038646 0.019182 +v -0.123800 0.038646 0.037922 +v -0.112372 0.038646 0.059302 +v -0.105335 0.038647 0.082501 +v -0.102958 0.038647 0.106627 +v -0.105335 0.038647 0.130754 +v -0.112372 0.038647 0.153953 +v -0.123800 0.038647 0.175333 +v -0.139180 0.038647 0.194073 +v -0.157920 0.038647 0.209453 +v -0.179300 0.038647 0.220881 +v -0.202499 0.038647 0.227918 +v -0.226625 0.038647 0.230294 +v -0.250751 0.038647 0.227918 +v -0.273950 0.038647 0.220881 +v -0.295331 0.038647 0.209453 +v -0.314071 0.038647 0.194073 +v -0.329450 0.038647 0.175333 +v -0.340878 0.038647 0.153952 +v -0.347916 0.038647 0.130753 +v -0.350292 -0.043853 0.106628 +v -0.347916 -0.043853 0.082502 +v -0.340878 -0.043853 0.059302 +v -0.329450 -0.043853 0.037922 +v -0.314071 -0.043853 0.019182 +v -0.295331 -0.043853 0.003803 +v -0.273950 -0.043854 -0.007626 +v -0.250751 -0.043854 -0.014663 +v -0.226625 -0.043854 -0.017039 +v -0.202499 -0.043854 -0.014663 +v -0.179300 -0.043853 -0.007626 +v -0.157920 -0.043853 0.003803 +v -0.139180 -0.043853 0.019182 +v -0.123800 -0.043853 0.037922 +v -0.112372 -0.043853 0.059302 +v -0.105335 -0.043853 0.082502 +v -0.102958 -0.043853 0.106628 +v -0.105335 -0.043853 0.130754 +v -0.112372 -0.043853 0.153953 +v -0.123800 -0.043853 0.175333 +v -0.139180 -0.043853 0.194073 +v -0.157920 -0.043853 0.209453 +v -0.179300 -0.043853 0.220881 +v -0.202499 -0.043853 0.227918 +v -0.226625 -0.043853 0.230294 +v -0.250751 -0.043853 0.227918 +v -0.273950 -0.043853 0.220881 +v -0.295331 -0.043853 0.209453 +v -0.314071 -0.043853 0.194073 +v -0.329450 -0.043853 0.175333 +v -0.340878 -0.043853 0.153953 +v -0.347916 -0.043853 0.130754 +v -0.199446 0.038646 0.065950 +v -0.199446 -0.043853 0.065951 +v -0.203723 0.044897 0.072352 +v -0.203723 -0.050103 0.072353 +v -0.275547 0.038647 0.106627 +v -0.267847 -0.050103 0.106628 +v -0.275547 -0.043853 0.106628 +v -0.267847 0.044897 0.106627 +v -0.274607 0.038647 0.116171 +v -0.267055 -0.050103 0.114670 +v -0.274607 -0.043853 0.116172 +v -0.267055 0.044897 0.114669 +v -0.271823 0.038647 0.125349 +v -0.264710 -0.050103 0.122403 +v -0.271823 -0.043853 0.125349 +v -0.264710 0.044897 0.122402 +v -0.207904 0.038647 0.151825 +v -0.207904 -0.043853 0.151825 +v -0.210850 0.044897 0.144712 +v -0.210850 -0.050103 0.144712 +v -0.199446 0.038647 0.147304 +v -0.199446 -0.043853 0.147305 +v -0.203723 0.044897 0.140902 +v -0.203723 -0.050103 0.140903 +v -0.217081 0.038647 0.154609 +v -0.217081 -0.043853 0.154609 +v -0.218583 0.044897 0.147058 +v -0.218583 -0.050103 0.147058 +v -0.192032 0.038647 0.141220 +v -0.192032 -0.043853 0.141221 +v -0.197477 0.044897 0.135776 +v -0.197477 -0.050103 0.135776 +v -0.178643 0.038647 0.116172 +v -0.178643 -0.043853 0.116172 +v -0.186195 0.044897 0.114669 +v -0.186195 -0.050103 0.114670 +v -0.177703 0.038647 0.106627 +v -0.177703 -0.043853 0.106628 +v -0.185403 0.044897 0.106627 +v -0.185403 -0.050103 0.106628 +v -0.181427 0.038647 0.125349 +v -0.181427 -0.043853 0.125349 +v -0.188541 0.044897 0.122402 +v -0.188541 -0.050103 0.122403 +v -0.236169 0.038646 0.058646 +v -0.236169 -0.043853 0.058646 +v -0.234667 0.044896 0.066197 +v -0.234667 -0.050103 0.066197 +v -0.267302 0.038646 0.079448 +v -0.267302 -0.043853 0.079448 +v -0.260900 -0.050103 0.083726 +v -0.260900 0.044897 0.083725 +v -0.226625 0.038646 0.057706 +v -0.226625 -0.043853 0.057706 +v -0.226625 0.044896 0.065405 +v -0.226625 -0.050103 0.065405 +v -0.245347 0.038646 0.061430 +v -0.245347 -0.043853 0.061430 +v -0.242400 -0.050103 0.068543 +v -0.242400 0.044896 0.068543 +v -0.178643 0.038647 0.097083 +v -0.178643 -0.043853 0.097084 +v -0.186195 0.044897 0.098585 +v -0.186195 -0.050103 0.098586 +v -0.261218 0.038647 0.141220 +v -0.255774 -0.050103 0.135776 +v -0.261218 -0.043853 0.141220 +v -0.255774 0.044897 0.135776 +v -0.267302 0.038647 0.133807 +v -0.260900 -0.050103 0.129529 +v -0.267302 -0.043853 0.133807 +v -0.260900 0.044897 0.129529 +v -0.253805 0.038647 0.147304 +v -0.249527 -0.050103 0.140903 +v -0.253805 -0.043853 0.147305 +v -0.249527 0.044897 0.140902 +v -0.217081 0.038646 0.058646 +v -0.217081 -0.043853 0.058646 +v -0.218583 0.044896 0.066197 +v -0.218583 -0.050103 0.066197 +v -0.185948 0.038646 0.079448 +v -0.185948 -0.043853 0.079448 +v -0.192350 0.044897 0.083725 +v -0.192350 -0.050103 0.083726 +v -0.192032 0.038646 0.072034 +v -0.192032 -0.043853 0.072035 +v -0.197477 0.044897 0.077479 +v -0.197477 -0.050103 0.077479 +v -0.207904 0.038646 0.061430 +v -0.207904 -0.043853 0.061430 +v -0.210850 0.044896 0.068543 +v -0.210850 -0.050103 0.068543 +v -0.226625 0.038647 0.155549 +v -0.226625 -0.043853 0.155549 +v -0.226625 -0.050103 0.147850 +v -0.226625 0.044897 0.147850 +v -0.185948 0.038647 0.133807 +v -0.185948 -0.043853 0.133807 +v -0.192350 0.044897 0.129529 +v -0.192350 -0.050103 0.129530 +v -0.236169 0.038647 0.154609 +v -0.236169 -0.043853 0.154609 +v -0.234667 -0.050103 0.147058 +v -0.234667 0.044897 0.147057 +v -0.261218 0.038646 0.072034 +v -0.261218 -0.043853 0.072035 +v -0.255774 -0.050103 0.077479 +v -0.255774 0.044897 0.077479 +v -0.181427 0.038647 0.087906 +v -0.181427 -0.043853 0.087906 +v -0.188541 0.044897 0.090852 +v -0.188541 -0.050103 0.090853 +v -0.253805 0.038646 0.065950 +v -0.253805 -0.043853 0.065951 +v -0.249527 -0.050103 0.072353 +v -0.249527 0.044897 0.072352 +v -0.245347 0.038647 0.151825 +v -0.245347 -0.043853 0.151825 +v -0.242400 -0.050103 0.144712 +v -0.242400 0.044897 0.144712 +v -0.271823 0.038647 0.087906 +v -0.271823 -0.043853 0.087906 +v -0.264710 -0.050103 0.090853 +v -0.264710 0.044897 0.090852 +v -0.274607 0.038647 0.097083 +v -0.274607 -0.043853 0.097083 +v -0.267055 -0.050103 0.098586 +v -0.267055 0.044897 0.098585 +v -0.238174 0.080868 0.135993 +v -0.235464 0.080868 0.140048 +v -0.231409 0.080868 0.142758 +v -0.226625 0.080868 0.143710 +v -0.221842 0.080868 0.142758 +v -0.217786 0.080868 0.140048 +v -0.215077 0.080868 0.135993 +v -0.214125 0.080868 0.131210 +v -0.215077 0.080868 0.126426 +v -0.217786 0.080868 0.122371 +v -0.221842 0.080868 0.119661 +v -0.226625 0.080868 0.118710 +v -0.231409 0.080868 0.119661 +v -0.235464 0.080868 0.122371 +v -0.238174 0.080868 0.126426 +v -0.239125 0.080868 0.131210 +v -0.118798 0.058162 -0.064381 +v -0.153102 0.058162 -0.065341 +v -0.119798 0.070662 -0.020898 +v -0.119798 0.058163 -0.020898 +v -0.118798 0.070662 -0.064381 +v -0.153102 0.070662 -0.065341 +v -0.242204 0.085241 0.137663 +v -0.238549 0.085241 0.143133 +v -0.233078 0.085241 0.146789 +v -0.226625 0.085241 0.148072 +v -0.220172 0.085241 0.146789 +v -0.214702 0.085241 0.143133 +v -0.211046 0.085241 0.137663 +v -0.209763 0.085241 0.131210 +v -0.211046 0.085241 0.124757 +v -0.214702 0.085241 0.119286 +v -0.220172 0.085241 0.115631 +v -0.226625 0.085241 0.114347 +v -0.233078 0.085241 0.115631 +v -0.238549 0.085241 0.119286 +v -0.242204 0.085241 0.124757 +v -0.243488 0.085241 0.131210 +v -0.242204 0.097249 0.137663 +v -0.238549 0.097249 0.143133 +v -0.233078 0.097249 0.146789 +v -0.226625 0.097249 0.148072 +v -0.220172 0.097249 0.146789 +v -0.214702 0.097249 0.143133 +v -0.211046 0.097249 0.137663 +v -0.209763 0.097249 0.131210 +v -0.211046 0.097249 0.124757 +v -0.214702 0.097249 0.119286 +v -0.220172 0.097249 0.115631 +v -0.226625 0.097249 0.114347 +v -0.233078 0.097249 0.115631 +v -0.238549 0.097249 0.119286 +v -0.242204 0.097249 0.124757 +v -0.243488 0.097249 0.131210 +v -0.238174 -0.086074 0.135994 +v -0.235464 -0.086074 0.140049 +v -0.231409 -0.086074 0.142759 +v -0.226625 -0.086074 0.143710 +v -0.221842 -0.086074 0.142759 +v -0.217786 -0.086074 0.140049 +v -0.215077 -0.086074 0.135994 +v -0.214125 -0.086074 0.131210 +v -0.215077 -0.086074 0.126427 +v -0.217786 -0.086074 0.122372 +v -0.221842 -0.086074 0.119662 +v -0.226625 -0.086074 0.118710 +v -0.231409 -0.086074 0.119662 +v -0.235464 -0.086074 0.122372 +v -0.238174 -0.086074 0.126427 +v -0.239125 -0.086074 0.131210 +v -0.118798 -0.063370 -0.064380 +v -0.153102 -0.063370 -0.065341 +v -0.119798 -0.075870 -0.020898 +v -0.119798 -0.063370 -0.020898 +v -0.118798 -0.075870 -0.064380 +v -0.153102 -0.075870 -0.065341 +v -0.242204 -0.090448 0.137663 +v -0.238549 -0.090448 0.143134 +v -0.233078 -0.090448 0.146789 +v -0.226625 -0.090448 0.148073 +v -0.220172 -0.090448 0.146789 +v -0.214702 -0.090448 0.143134 +v -0.211046 -0.090448 0.137663 +v -0.209763 -0.090448 0.131210 +v -0.211046 -0.090448 0.124757 +v -0.214702 -0.090448 0.119287 +v -0.220172 -0.090448 0.115631 +v -0.226625 -0.090448 0.114348 +v -0.233078 -0.090448 0.115631 +v -0.238549 -0.090448 0.119287 +v -0.242204 -0.090448 0.124757 +v -0.243488 -0.090448 0.131210 +v -0.242204 -0.102455 0.137663 +v -0.238549 -0.102455 0.143134 +v -0.233078 -0.102455 0.146789 +v -0.226625 -0.102455 0.148073 +v -0.220172 -0.102455 0.146789 +v -0.214702 -0.102455 0.143134 +v -0.211046 -0.102455 0.137663 +v -0.209763 -0.102455 0.131210 +v -0.211046 -0.102455 0.124757 +v -0.214702 -0.102455 0.119287 +v -0.220172 -0.102455 0.115631 +v -0.226625 -0.102455 0.114348 +v -0.233078 -0.102455 0.115631 +v -0.238549 -0.102455 0.119287 +v -0.242204 -0.102455 0.124757 +v -0.243488 -0.102455 0.131210 +v -0.259290 0.058163 0.149330 +v -0.261802 0.058163 0.145258 +v -0.261802 0.070663 0.145258 +v -0.259290 0.070663 0.149330 +v -0.252707 0.070663 0.149256 +v -0.246280 0.070663 0.144921 +v -0.246280 0.058163 0.144921 +v -0.252707 0.058163 0.149256 +v -0.261802 -0.063369 0.145258 +v -0.259290 -0.063369 0.149330 +v -0.259290 -0.075869 0.149330 +v -0.261802 -0.075869 0.145258 +v -0.246280 -0.075869 0.144922 +v -0.252707 -0.075869 0.149257 +v -0.252707 -0.063369 0.149257 +v -0.246280 -0.063369 0.144922 +v -0.203235 0.058163 0.146877 +v -0.207277 0.058163 0.149334 +v -0.207277 0.070663 0.149334 +v -0.203235 0.070663 0.146877 +v -0.214707 0.070663 0.146413 +v -0.212076 0.070663 0.149252 +v -0.212076 0.058163 0.149252 +v -0.214707 0.058163 0.146413 +v -0.207277 -0.063369 0.149334 +v -0.203235 -0.063369 0.146878 +v -0.203235 -0.075869 0.146878 +v -0.207277 -0.075869 0.149334 +v -0.212076 -0.075869 0.149253 +v -0.214707 -0.075869 0.146413 +v -0.214707 -0.063369 0.146413 +v -0.212076 -0.063369 0.149253 +v -0.215953 0.070663 0.124087 +v -0.213733 0.070663 0.130018 +v -0.225321 0.070663 0.118376 +v -0.219448 0.070663 0.120523 +v -0.236948 0.070663 0.122545 +v -0.232166 0.070663 0.119022 +v -0.232166 0.058163 0.119023 +v -0.236948 0.058163 0.122545 +v -0.219448 0.058163 0.120523 +v -0.225321 0.058163 0.118376 +v -0.213733 0.058163 0.130018 +v -0.215953 0.058163 0.124087 +v -0.213733 -0.075869 0.130019 +v -0.215953 -0.075869 0.124088 +v -0.219448 -0.075869 0.120524 +v -0.225321 -0.075869 0.118376 +v -0.232166 -0.075869 0.119023 +v -0.236948 -0.075869 0.122546 +v -0.236948 -0.063369 0.122545 +v -0.232166 -0.063369 0.119023 +v -0.225321 -0.063369 0.118376 +v -0.219448 -0.063369 0.120524 +v -0.215953 -0.063369 0.124088 +v -0.213733 -0.063369 0.130019 +v 0.252812 0.126210 -0.487497 +v 0.252811 -0.136289 -0.487500 +v 0.253193 0.126210 -0.485584 +v 0.253192 -0.136289 -0.485586 +v 0.254277 0.126210 -0.483962 +v 0.254275 -0.136289 -0.483964 +v 0.255899 0.126210 -0.482878 +v 0.255897 -0.136289 -0.482880 +v 0.257812 0.126210 -0.482497 +v 0.257811 -0.136289 -0.482500 +v 0.259726 0.126210 -0.482878 +v 0.259724 -0.136289 -0.482880 +v 0.261348 0.126210 -0.483962 +v 0.261346 -0.136289 -0.483964 +v 0.262432 0.126210 -0.485584 +v 0.262430 -0.136289 -0.485586 +v 0.262812 0.126210 -0.487497 +v 0.262811 -0.136289 -0.487500 +v 0.262432 0.126210 -0.489411 +v 0.262430 -0.136289 -0.489413 +v 0.261348 0.126210 -0.491033 +v 0.261346 -0.136289 -0.491035 +v 0.259726 0.126210 -0.492117 +v 0.259724 -0.136289 -0.492119 +v 0.257812 0.126210 -0.492497 +v 0.257811 -0.136289 -0.492499 +v 0.255899 0.126210 -0.492117 +v 0.255897 -0.136289 -0.492119 +v 0.254277 0.126210 -0.491033 +v 0.254275 -0.136289 -0.491035 +v 0.253193 0.126210 -0.489411 +v 0.253192 -0.136289 -0.489413 +v 0.257811 0.011174 -0.452500 +v 0.257811 0.017424 -0.452500 +v 0.249151 0.011174 -0.457500 +v 0.249151 0.017424 -0.457500 +v 0.249151 0.011174 -0.467499 +v 0.249151 0.017424 -0.467499 +v 0.257811 0.011174 -0.472500 +v 0.257811 0.017424 -0.472500 +v 0.266471 0.011174 -0.467500 +v 0.266471 0.017424 -0.467500 +v 0.266471 0.011174 -0.457500 +v 0.266471 0.017424 -0.457500 +v 0.257811 -0.011246 -0.452500 +v 0.257811 -0.017496 -0.452500 +v 0.266471 -0.011246 -0.457500 +v 0.266471 -0.017496 -0.457500 +v 0.266471 -0.011246 -0.467499 +v 0.266471 -0.017496 -0.467499 +v 0.257811 -0.011246 -0.472500 +v 0.257811 -0.017496 -0.472500 +v 0.249151 -0.011246 -0.467500 +v 0.249151 -0.017496 -0.467500 +v 0.249151 -0.011246 -0.457500 +v 0.249151 -0.017496 -0.457500 +v -0.232187 0.012493 -0.452500 +v -0.232187 0.006243 -0.452500 +v -0.223527 0.012493 -0.457500 +v -0.223527 0.006243 -0.457500 +v -0.223527 0.012493 -0.467499 +v -0.223527 0.006243 -0.467499 +v -0.232187 0.012493 -0.472500 +v -0.232187 0.006243 -0.472500 +v -0.240847 0.012493 -0.467500 +v -0.240847 0.006243 -0.467500 +v -0.240847 0.012493 -0.457500 +v -0.240847 0.006243 -0.457500 +v -0.232187 0.012493 -0.477500 +v -0.232187 0.006243 -0.477500 +v -0.223527 0.012493 -0.482499 +v -0.223527 0.006243 -0.482499 +v -0.223527 0.012493 -0.492499 +v -0.223527 0.006243 -0.492499 +v -0.232187 0.012493 -0.497499 +v -0.232187 0.006243 -0.497499 +v -0.240847 0.012493 -0.492500 +v -0.240847 0.006243 -0.492500 +v -0.240847 0.012493 -0.482500 +v -0.240847 0.006243 -0.482500 +v -0.232187 0.024959 -0.477500 +v -0.232187 0.031209 -0.477500 +v -0.240847 0.024959 -0.482499 +v -0.240847 0.031209 -0.482499 +v -0.240847 0.024959 -0.492499 +v -0.240847 0.031209 -0.492499 +v -0.232187 0.024959 -0.497499 +v -0.232187 0.031209 -0.497499 +v -0.223527 0.024959 -0.492500 +v -0.223527 0.031209 -0.492500 +v -0.223527 0.024959 -0.482500 +v -0.223527 0.031209 -0.482500 +v -0.232187 0.024959 -0.452500 +v -0.232187 0.031209 -0.452500 +v -0.240847 0.024959 -0.457500 +v -0.240847 0.031209 -0.457500 +v -0.240847 0.024959 -0.467499 +v -0.240847 0.031209 -0.467499 +v -0.232187 0.024959 -0.472500 +v -0.232187 0.031209 -0.472500 +v -0.223527 0.024959 -0.467500 +v -0.223527 0.031209 -0.467500 +v -0.223527 0.024959 -0.457500 +v -0.223527 0.031209 -0.457500 +v 0.271561 -0.117500 -0.500000 +v 0.244061 -0.117500 -0.500000 +v 0.271561 -0.095000 -0.499999 +v 0.244061 -0.095000 -0.499999 +v 0.268552 -0.114491 -0.441250 +v 0.271561 -0.117500 -0.444259 +v 0.247070 -0.114491 -0.441250 +v 0.244061 -0.117500 -0.444259 +v 0.268552 -0.098009 -0.441250 +v 0.271561 -0.095000 -0.444259 +v 0.247070 -0.098009 -0.441250 +v 0.244061 -0.095000 -0.444259 +v 0.269061 0.111210 -0.443750 +v -0.243437 0.111210 -0.443749 +v 0.269061 0.110830 -0.441836 +v -0.243437 0.110830 -0.441836 +v 0.269061 0.109746 -0.440214 +v -0.243437 0.109746 -0.440214 +v 0.269061 0.108124 -0.439130 +v -0.243437 0.108124 -0.439130 +v 0.269061 0.106210 -0.438750 +v -0.243437 0.106210 -0.438750 +v 0.269061 0.104297 -0.439130 +v -0.243437 0.104297 -0.439130 +v 0.269061 0.102675 -0.440214 +v -0.243437 0.102675 -0.440214 +v 0.269061 0.101591 -0.441836 +v -0.243437 0.101591 -0.441836 +v 0.269061 0.101210 -0.443750 +v -0.243437 0.101210 -0.443750 +v 0.269061 0.101591 -0.445663 +v -0.243437 0.101591 -0.445663 +v 0.269061 0.102675 -0.447285 +v -0.243437 0.102675 -0.447285 +v 0.269061 0.104297 -0.448369 +v -0.243437 0.104297 -0.448369 +v 0.269061 0.106210 -0.448750 +v -0.243437 0.106210 -0.448750 +v 0.269061 0.108124 -0.448369 +v -0.243437 0.108124 -0.448369 +v 0.269061 0.109746 -0.447285 +v -0.243437 0.109746 -0.447285 +v 0.269061 0.110830 -0.445663 +v -0.243437 0.110830 -0.445663 +v 0.132871 -0.132582 -0.420000 +v -0.132353 -0.132582 -0.420000 +v -0.132352 0.132642 -0.420000 +v 0.132872 0.132642 -0.420000 +v 0.132871 -0.132582 -0.416249 +v -0.132353 -0.132582 -0.416249 +v -0.132352 0.132642 -0.416249 +v 0.132872 0.132642 -0.416249 +v -0.082093 -0.119984 -0.420000 +v -0.082093 0.119981 -0.419998 +v 0.082094 0.119981 -0.419998 +v 0.082094 -0.119984 -0.420000 +v -0.082094 -0.119984 -0.432500 +v 0.082093 -0.119984 -0.432500 +v -0.082092 0.119981 -0.432500 +v 0.082094 0.119981 -0.432500 +v 0.132611 -0.127578 -0.432500 +v 0.127576 -0.132613 -0.432500 +v 0.131937 -0.130096 -0.432500 +v 0.130094 -0.131939 -0.432500 +v 0.127576 -0.132613 -0.420000 +v 0.132611 -0.127578 -0.420000 +v 0.130094 -0.131939 -0.420000 +v 0.131937 -0.130096 -0.420000 +v -0.127578 -0.132613 -0.432500 +v -0.132613 -0.127578 -0.432500 +v -0.130095 -0.131939 -0.432500 +v -0.131938 -0.130096 -0.432500 +v -0.132613 -0.127578 -0.420000 +v -0.127578 -0.132613 -0.420000 +v -0.131938 -0.130096 -0.420000 +v -0.130095 -0.131939 -0.420000 +v 0.127578 0.132611 -0.432500 +v 0.132613 0.127576 -0.432500 +v 0.130095 0.131936 -0.432500 +v 0.131938 0.130093 -0.432500 +v 0.132613 0.127576 -0.419998 +v 0.127578 0.132611 -0.419998 +v 0.131938 0.130093 -0.419998 +v 0.130095 0.131936 -0.419998 +v -0.132611 0.127576 -0.432500 +v -0.127576 0.132611 -0.432500 +v -0.131937 0.130093 -0.432500 +v -0.130094 0.131936 -0.432500 +v -0.127576 0.132611 -0.419998 +v -0.132611 0.127576 -0.419998 +v -0.130094 0.131936 -0.419998 +v -0.131937 0.130093 -0.419998 +v -0.127576 0.119981 -0.432500 +v -0.132611 0.125016 -0.432500 +v -0.130094 0.120655 -0.432500 +v -0.131937 0.122498 -0.432500 +v -0.132613 -0.125019 -0.432500 +v -0.127578 -0.119984 -0.432500 +v -0.131938 -0.122501 -0.432500 +v -0.130095 -0.120658 -0.432500 +v -0.127577 -0.119984 -0.420000 +v -0.132613 -0.125019 -0.420000 +v -0.130095 -0.120658 -0.420000 +v -0.131938 -0.122501 -0.420000 +v -0.132611 0.125016 -0.419998 +v -0.127576 0.119981 -0.419998 +v -0.131937 0.122498 -0.419998 +v -0.130094 0.120655 -0.419998 +v 0.127576 -0.119984 -0.432500 +v 0.132611 -0.125019 -0.432500 +v 0.130094 -0.120658 -0.432500 +v 0.131937 -0.122501 -0.432500 +v 0.132613 0.125016 -0.432500 +v 0.127578 0.119981 -0.432500 +v 0.131938 0.122498 -0.432500 +v 0.130095 0.120655 -0.432500 +v 0.127578 0.119981 -0.419998 +v 0.132613 0.125016 -0.419998 +v 0.130095 0.120655 -0.419998 +v 0.131938 0.122498 -0.419998 +v 0.132611 -0.125019 -0.420000 +v 0.127576 -0.119984 -0.420000 +v 0.131937 -0.122501 -0.420000 +v 0.130094 -0.120658 -0.420000 +v 0.124999 -0.125001 -0.416250 +v -0.125000 -0.125001 -0.416250 +v -0.124999 0.124998 -0.416248 +v 0.125000 0.124998 -0.416248 +v 0.124999 -0.125001 -0.412500 +v -0.125000 -0.125001 -0.412500 +v -0.124999 0.124998 -0.412498 +v 0.125000 0.124998 -0.412498 +v -0.074998 0.110037 -0.432636 +v -0.043748 0.110037 -0.432636 +v -0.074998 0.115449 -0.432636 +v -0.043748 0.115449 -0.432636 +v -0.074998 0.096972 -0.432636 +v -0.043749 0.096972 -0.432636 +v -0.074998 0.102384 -0.432636 +v -0.043748 0.102384 -0.432636 +v -0.074998 0.115449 -0.447488 +v -0.074998 0.114061 -0.450840 +v -0.043748 0.114061 -0.450840 +v -0.043748 0.115449 -0.447488 +v -0.074998 0.111426 -0.453475 +v -0.074998 0.108073 -0.454863 +v -0.043748 0.108073 -0.454863 +v -0.043748 0.111426 -0.453475 +v -0.074998 0.104347 -0.454863 +v -0.074998 0.100995 -0.453475 +v -0.043748 0.100995 -0.453475 +v -0.043748 0.104347 -0.454863 +v -0.074998 0.098360 -0.450840 +v -0.074998 0.096972 -0.447488 +v -0.043749 0.096972 -0.447488 +v -0.043749 0.098360 -0.450840 +v -0.074998 -0.102423 -0.432636 +v -0.043748 -0.102423 -0.432636 +v -0.074998 -0.097011 -0.432636 +v -0.043748 -0.097011 -0.432636 +v -0.074998 -0.115488 -0.432636 +v -0.043749 -0.115488 -0.432636 +v -0.074998 -0.110076 -0.432636 +v -0.043748 -0.110076 -0.432636 +v -0.074998 -0.097011 -0.447488 +v -0.074998 -0.098400 -0.450840 +v -0.043748 -0.098400 -0.450840 +v -0.043748 -0.097011 -0.447488 +v -0.074998 -0.101034 -0.453475 +v -0.074998 -0.104387 -0.454863 +v -0.043748 -0.104387 -0.454863 +v -0.043748 -0.101034 -0.453475 +v -0.074998 -0.108113 -0.454863 +v -0.074998 -0.111465 -0.453475 +v -0.043749 -0.111465 -0.453475 +v -0.043748 -0.108113 -0.454863 +v -0.074998 -0.114100 -0.450840 +v -0.074998 -0.115488 -0.447488 +v -0.043749 -0.115488 -0.447488 +v -0.043749 -0.114100 -0.450840 +v 0.043749 -0.102423 -0.432636 +v 0.074999 -0.102423 -0.432636 +v 0.043749 -0.097011 -0.432636 +v 0.074999 -0.097011 -0.432636 +v 0.043749 -0.115488 -0.432636 +v 0.074999 -0.115488 -0.432636 +v 0.043749 -0.110076 -0.432636 +v 0.074999 -0.110076 -0.432636 +v 0.043749 -0.097011 -0.447488 +v 0.043749 -0.098400 -0.450840 +v 0.074999 -0.098399 -0.450840 +v 0.074999 -0.097011 -0.447488 +v 0.043749 -0.101034 -0.453475 +v 0.043749 -0.104387 -0.454863 +v 0.074999 -0.104387 -0.454863 +v 0.074999 -0.101034 -0.453475 +v 0.043749 -0.108113 -0.454863 +v 0.043749 -0.111465 -0.453475 +v 0.074999 -0.111465 -0.453475 +v 0.074999 -0.108113 -0.454863 +v 0.043749 -0.114100 -0.450840 +v 0.043749 -0.115488 -0.447488 +v 0.074999 -0.115488 -0.447488 +v 0.074999 -0.114100 -0.450840 +v 0.043749 0.110037 -0.432636 +v 0.074999 0.110037 -0.432636 +v 0.043749 0.115449 -0.432636 +v 0.074999 0.115449 -0.432636 +v 0.043749 0.096972 -0.432636 +v 0.074999 0.096972 -0.432636 +v 0.043749 0.102384 -0.432636 +v 0.074999 0.102384 -0.432636 +v 0.043749 0.115449 -0.447488 +v 0.043749 0.114061 -0.450840 +v 0.074999 0.114061 -0.450840 +v 0.074999 0.115449 -0.447488 +v 0.043749 0.111426 -0.453475 +v 0.043749 0.108073 -0.454863 +v 0.074999 0.108073 -0.454863 +v 0.074999 0.111426 -0.453475 +v 0.043749 0.104347 -0.454863 +v 0.043749 0.100995 -0.453475 +v 0.074999 0.100995 -0.453475 +v 0.074999 0.104347 -0.454863 +v 0.043749 0.098360 -0.450840 +v 0.043749 0.096972 -0.447488 +v 0.074999 0.096972 -0.447488 +v 0.074999 0.098360 -0.450840 +v 0.014688 -0.011249 -0.432259 +v -0.014687 -0.011249 -0.432259 +v 0.014688 -0.011249 -0.459759 +v -0.014687 -0.011249 -0.459759 +v 0.014688 0.011251 -0.432259 +v -0.014687 0.011251 -0.432259 +v 0.014688 0.011251 -0.459759 +v -0.014687 0.011251 -0.459759 +v 0.269061 -0.101250 -0.443750 +v -0.243437 -0.101250 -0.443749 +v 0.269061 -0.101630 -0.441836 +v -0.243437 -0.101630 -0.441836 +v 0.269061 -0.102714 -0.440214 +v -0.243437 -0.102714 -0.440214 +v 0.269061 -0.104336 -0.439130 +v -0.243437 -0.104336 -0.439130 +v 0.269061 -0.106250 -0.438750 +v -0.243437 -0.106250 -0.438750 +v 0.269061 -0.108163 -0.439130 +v -0.243437 -0.108163 -0.439130 +v 0.269061 -0.109785 -0.440214 +v -0.243437 -0.109785 -0.440214 +v 0.269061 -0.110869 -0.441836 +v -0.243437 -0.110869 -0.441836 +v 0.269061 -0.111250 -0.443750 +v -0.243437 -0.111250 -0.443750 +v 0.269061 -0.110869 -0.445663 +v -0.243437 -0.110869 -0.445663 +v 0.269061 -0.109785 -0.447285 +v -0.243437 -0.109785 -0.447285 +v 0.269061 -0.108163 -0.448369 +v -0.243437 -0.108163 -0.448369 +v 0.269061 -0.106250 -0.448750 +v -0.243437 -0.106250 -0.448750 +v 0.269061 -0.104336 -0.448369 +v -0.243437 -0.104336 -0.448369 +v 0.269061 -0.102714 -0.447285 +v -0.243437 -0.102714 -0.447285 +v 0.269061 -0.101630 -0.445663 +v -0.243437 -0.101630 -0.445663 +v -0.237186 0.201210 -0.462497 +v -0.237187 -0.211288 -0.462500 +v -0.236805 0.201210 -0.460584 +v -0.236806 -0.211288 -0.460586 +v -0.235721 0.201210 -0.458962 +v -0.235723 -0.211288 -0.458964 +v -0.234099 0.201210 -0.457878 +v -0.234101 -0.211288 -0.457880 +v -0.232186 0.201210 -0.457497 +v -0.232187 -0.211288 -0.457500 +v -0.230272 0.201210 -0.457878 +v -0.230274 -0.211288 -0.457880 +v -0.228650 0.201210 -0.458962 +v -0.228652 -0.211288 -0.458964 +v -0.227566 0.201210 -0.460584 +v -0.227568 -0.211288 -0.460586 +v -0.227186 0.201210 -0.462497 +v -0.227187 -0.211288 -0.462500 +v -0.227566 0.201210 -0.464411 +v -0.227568 -0.211288 -0.464413 +v -0.228650 0.201210 -0.466033 +v -0.228652 -0.211288 -0.466035 +v -0.230272 0.201210 -0.467117 +v -0.230274 -0.211288 -0.467119 +v -0.232186 0.201210 -0.467497 +v -0.232187 -0.211288 -0.467500 +v -0.234099 0.201210 -0.467117 +v -0.234101 -0.211288 -0.467119 +v -0.235721 0.201210 -0.466033 +v -0.235723 -0.211288 -0.466035 +v -0.236805 0.201210 -0.464411 +v -0.236806 -0.211288 -0.464413 +v -0.167187 0.012461 -0.435000 +v -0.247187 0.012461 -0.502499 +v -0.247187 0.012461 -0.435000 +v -0.167187 0.024961 -0.435000 +v -0.247187 0.024961 -0.502499 +v -0.247187 0.024961 -0.435000 +v -0.207187 0.012461 -0.502499 +v -0.167187 0.012461 -0.450000 +v -0.207187 0.024961 -0.502499 +v -0.167187 0.024961 -0.450000 +v -0.207187 0.024961 -0.450000 +v -0.207187 0.012461 -0.450000 +v -0.167187 0.024961 -0.489999 +v -0.222187 0.079961 -0.489999 +v -0.222187 0.024961 -0.489999 +v -0.167187 0.024960 -0.435000 +v -0.222187 0.079960 -0.435000 +v -0.222187 0.024960 -0.435000 +v -0.197812 0.024961 -0.462500 +v -0.197812 -0.000039 -0.462500 +v -0.196897 0.024961 -0.460290 +v -0.196897 -0.000039 -0.460290 +v -0.194687 0.024961 -0.459375 +v -0.194687 -0.000039 -0.459375 +v -0.192478 0.024961 -0.460290 +v -0.192478 -0.000039 -0.460290 +v -0.191562 0.024961 -0.462500 +v -0.191562 -0.000039 -0.462500 +v -0.192478 0.024961 -0.464709 +v -0.192478 -0.000039 -0.464709 +v -0.194687 0.024961 -0.465625 +v -0.194687 -0.000039 -0.465625 +v -0.196897 0.024961 -0.464709 +v -0.196897 -0.000039 -0.464709 +v -0.167187 0.031211 -0.489999 +v -0.222187 0.073711 -0.489999 +v -0.222187 0.073710 -0.435000 +v -0.167187 0.073710 -0.435000 +v -0.222187 0.031211 -0.489999 +v -0.222187 0.031210 -0.435000 +v -0.167187 0.031210 -0.435000 +v -0.167187 0.079961 -0.489999 +v -0.167187 0.079960 -0.435000 +v -0.167187 0.073711 -0.489999 +v -0.194547 -0.003788 -0.455146 +v -0.194547 -0.003788 -0.452646 +v -0.194547 0.003711 -0.455146 +v -0.194547 0.003711 -0.452646 +v 0.224250 -0.003791 -0.455141 +v 0.224250 -0.003791 -0.452641 +v 0.224250 0.003711 -0.455141 +v 0.224250 0.003711 -0.452641 +v -0.194547 -0.003788 -0.472176 +v -0.194547 -0.003788 -0.469676 +v -0.194547 0.003711 -0.472176 +v -0.194547 0.003711 -0.469676 +v 0.224250 -0.003791 -0.472171 +v 0.224250 -0.003791 -0.469671 +v 0.224250 0.003711 -0.472171 +v 0.224250 0.003711 -0.469671 +v -0.206594 0.008035 -0.462500 +v -0.206594 -0.010715 -0.462500 +v -0.205688 0.008035 -0.457943 +v -0.205688 -0.010715 -0.457943 +v -0.203107 0.008035 -0.454080 +v -0.203107 -0.010715 -0.454080 +v -0.199244 0.008035 -0.451499 +v -0.199244 -0.010715 -0.451499 +v -0.194687 0.008035 -0.450592 +v -0.194687 -0.010715 -0.450592 +v -0.190130 0.008035 -0.451499 +v -0.190130 -0.010715 -0.451499 +v -0.186268 0.008035 -0.454080 +v -0.186268 -0.010715 -0.454080 +v -0.183686 0.008035 -0.457943 +v -0.183686 -0.010715 -0.457943 +v -0.182780 0.008035 -0.462500 +v -0.182780 -0.010715 -0.462500 +v -0.183686 0.008035 -0.467056 +v -0.183686 -0.010715 -0.467056 +v -0.186268 0.008035 -0.470919 +v -0.186268 -0.010715 -0.470919 +v -0.190131 0.008035 -0.473500 +v -0.190131 -0.010715 -0.473500 +v -0.194687 0.008035 -0.474407 +v -0.194687 -0.010715 -0.474407 +v -0.199244 0.008035 -0.473500 +v -0.199244 -0.010715 -0.473500 +v -0.203107 0.008035 -0.470919 +v -0.203107 -0.010715 -0.470919 +v -0.205688 0.008035 -0.467056 +v -0.205688 -0.010715 -0.467056 +v -0.206594 0.005356 -0.462500 +v -0.204820 0.005079 -0.462500 +v -0.204820 -0.005081 -0.462500 +v -0.206594 -0.005358 -0.462500 +v -0.205688 -0.005358 -0.457943 +v -0.204048 -0.005081 -0.458622 +v -0.204048 0.005079 -0.458622 +v -0.205688 0.005356 -0.457943 +v -0.203107 -0.005358 -0.454080 +v -0.201852 -0.005081 -0.455335 +v -0.201852 0.005078 -0.455335 +v -0.203107 0.005356 -0.454080 +v -0.199244 -0.005358 -0.451499 +v -0.198565 -0.005081 -0.453139 +v -0.198565 0.005078 -0.453139 +v -0.199244 0.005356 -0.451499 +v -0.194687 -0.005358 -0.450592 +v -0.194687 -0.005081 -0.452367 +v -0.194687 0.005078 -0.452367 +v -0.194687 0.005356 -0.450592 +v -0.190130 -0.005358 -0.451499 +v -0.190810 -0.005081 -0.453139 +v -0.190810 0.005078 -0.453139 +v -0.190130 0.005356 -0.451499 +v -0.186268 -0.005358 -0.454080 +v -0.187523 -0.005081 -0.455335 +v -0.187523 0.005078 -0.455335 +v -0.186268 0.005356 -0.454080 +v -0.183686 -0.005358 -0.457943 +v -0.185326 -0.005081 -0.458622 +v -0.185326 0.005079 -0.458622 +v -0.183686 0.005356 -0.457943 +v -0.182780 -0.005358 -0.462500 +v -0.184555 -0.005081 -0.462500 +v -0.184555 0.005079 -0.462500 +v -0.182780 0.005356 -0.462500 +v -0.183686 -0.005358 -0.467056 +v -0.185326 -0.005081 -0.466377 +v -0.185326 0.005079 -0.466377 +v -0.183686 0.005356 -0.467056 +v -0.186268 -0.005358 -0.470919 +v -0.187523 -0.005081 -0.469664 +v -0.187523 0.005079 -0.469664 +v -0.186268 0.005356 -0.470919 +v -0.190131 -0.005358 -0.473500 +v -0.190810 -0.005081 -0.471861 +v -0.190810 0.005079 -0.471861 +v -0.190131 0.005356 -0.473500 +v -0.194687 -0.005358 -0.474407 +v -0.194687 -0.005081 -0.472632 +v -0.194687 0.005079 -0.472632 +v -0.194687 0.005356 -0.474407 +v -0.199244 -0.005358 -0.473500 +v -0.198565 -0.005081 -0.471861 +v -0.198565 0.005079 -0.471861 +v -0.199244 0.005356 -0.473500 +v -0.203107 -0.005358 -0.470919 +v -0.201852 -0.005081 -0.469664 +v -0.201852 0.005079 -0.469664 +v -0.203107 0.005356 -0.470919 +v -0.205688 -0.005358 -0.467056 +v -0.204048 -0.005081 -0.466377 +v -0.204048 0.005079 -0.466377 +v -0.205688 0.005356 -0.467056 +v 0.252812 0.126210 -0.462497 +v 0.252811 -0.136289 -0.462500 +v 0.253193 0.126210 -0.460584 +v 0.253192 -0.136289 -0.460586 +v 0.254277 0.126210 -0.458962 +v 0.254275 -0.136289 -0.458964 +v 0.255899 0.126210 -0.457878 +v 0.255897 -0.136289 -0.457880 +v 0.257812 0.126210 -0.457497 +v 0.257811 -0.136289 -0.457500 +v 0.259726 0.126210 -0.457878 +v 0.259724 -0.136289 -0.457880 +v 0.261348 0.126210 -0.458962 +v 0.261346 -0.136289 -0.458964 +v 0.262432 0.126210 -0.460584 +v 0.262430 -0.136289 -0.460586 +v 0.262812 0.126210 -0.462497 +v 0.262811 -0.136289 -0.462500 +v 0.262432 0.126210 -0.464411 +v 0.262430 -0.136289 -0.464413 +v 0.261348 0.126210 -0.466033 +v 0.261346 -0.136289 -0.466035 +v 0.259726 0.126210 -0.467117 +v 0.259724 -0.136289 -0.467119 +v 0.257812 0.126210 -0.467497 +v 0.257811 -0.136289 -0.467500 +v 0.255899 0.126210 -0.467117 +v 0.255897 -0.136289 -0.467119 +v 0.254277 0.126210 -0.466033 +v 0.254275 -0.136289 -0.466035 +v 0.253193 0.126210 -0.464411 +v 0.253192 -0.136289 -0.464413 +v -0.237186 0.126210 -0.487497 +v -0.237187 -0.136289 -0.487499 +v -0.236805 0.126210 -0.485584 +v -0.236806 -0.136289 -0.485586 +v -0.235721 0.126210 -0.483962 +v -0.235723 -0.136289 -0.483964 +v -0.234099 0.126210 -0.482878 +v -0.234101 -0.136289 -0.482880 +v -0.232186 0.126210 -0.482497 +v -0.232187 -0.136289 -0.482499 +v -0.230272 0.126210 -0.482878 +v -0.230274 -0.136289 -0.482880 +v -0.228650 0.126210 -0.483962 +v -0.228652 -0.136289 -0.483964 +v -0.227566 0.126210 -0.485584 +v -0.227568 -0.136289 -0.485586 +v -0.227186 0.126210 -0.487497 +v -0.227187 -0.136289 -0.487499 +v -0.227566 0.126210 -0.489411 +v -0.227568 -0.136289 -0.489413 +v -0.228650 0.126210 -0.491033 +v -0.228652 -0.136289 -0.491035 +v -0.230272 0.126210 -0.492117 +v -0.230274 -0.136289 -0.492119 +v -0.232186 0.126210 -0.492497 +v -0.232187 -0.136289 -0.492499 +v -0.234099 0.126210 -0.492117 +v -0.234101 -0.136289 -0.492119 +v -0.235721 0.126210 -0.491033 +v -0.235723 -0.136289 -0.491035 +v -0.236805 0.126210 -0.489411 +v -0.236806 -0.136289 -0.489413 +v 0.271561 0.094960 -0.500000 +v 0.244061 0.094960 -0.500000 +v 0.271561 0.117460 -0.499999 +v 0.244061 0.117460 -0.499999 +v 0.268552 0.097969 -0.441250 +v 0.271561 0.094960 -0.444259 +v 0.247070 0.097969 -0.441250 +v 0.244061 0.094960 -0.444259 +v 0.268552 0.114451 -0.441250 +v 0.271561 0.117460 -0.444259 +v 0.247070 0.114451 -0.441250 +v 0.244061 0.117460 -0.444259 +v -0.218437 0.094960 -0.500000 +v -0.245937 0.094960 -0.500000 +v -0.218437 0.117460 -0.499999 +v -0.245937 0.117460 -0.499999 +v -0.221446 0.097969 -0.441250 +v -0.218437 0.094960 -0.444259 +v -0.242928 0.097969 -0.441250 +v -0.245937 0.094960 -0.444259 +v -0.221446 0.114451 -0.441250 +v -0.218437 0.117460 -0.444259 +v -0.242928 0.114451 -0.441250 +v -0.245937 0.117460 -0.444259 +v -0.218437 -0.117500 -0.500000 +v -0.245937 -0.117500 -0.500000 +v -0.218437 -0.095000 -0.499999 +v -0.245937 -0.095000 -0.499999 +v -0.221446 -0.114491 -0.441250 +v -0.218437 -0.117500 -0.444259 +v -0.242928 -0.114491 -0.441250 +v -0.245937 -0.117500 -0.444259 +v -0.221446 -0.098009 -0.441250 +v -0.218437 -0.095000 -0.444259 +v -0.242928 -0.098009 -0.441250 +v -0.245937 -0.095000 -0.444259 +v 0.257811 -0.117500 -0.452500 +v 0.257811 -0.123750 -0.452500 +v 0.266471 -0.117500 -0.457500 +v 0.266471 -0.123750 -0.457500 +v 0.266471 -0.117500 -0.467499 +v 0.266471 -0.123750 -0.467499 +v 0.257811 -0.117500 -0.472500 +v 0.257811 -0.123750 -0.472500 +v 0.249151 -0.117499 -0.467500 +v 0.249151 -0.123749 -0.467500 +v 0.249151 -0.117499 -0.457500 +v 0.249151 -0.123749 -0.457500 +v 0.257811 -0.095000 -0.452500 +v 0.257811 -0.088750 -0.452500 +v 0.249151 -0.095000 -0.457500 +v 0.249151 -0.088750 -0.457500 +v 0.249151 -0.095000 -0.467499 +v 0.249151 -0.088750 -0.467499 +v 0.257811 -0.095000 -0.472500 +v 0.257811 -0.088750 -0.472500 +v 0.266471 -0.095000 -0.467500 +v 0.266471 -0.088750 -0.467500 +v 0.266471 -0.095000 -0.457500 +v 0.266471 -0.088750 -0.457500 +v 0.257811 -0.095000 -0.477500 +v 0.257811 -0.088750 -0.477500 +v 0.249151 -0.095000 -0.482499 +v 0.249151 -0.088750 -0.482499 +v 0.249151 -0.095000 -0.492499 +v 0.249151 -0.088750 -0.492499 +v 0.257811 -0.095000 -0.497499 +v 0.257811 -0.088750 -0.497499 +v 0.266471 -0.095000 -0.492500 +v 0.266471 -0.088750 -0.492500 +v 0.266471 -0.095000 -0.482500 +v 0.266471 -0.088750 -0.482500 +v 0.257811 0.117460 -0.477500 +v 0.257811 0.123710 -0.477500 +v 0.249151 0.117461 -0.482499 +v 0.249151 0.123710 -0.482499 +v 0.249151 0.117461 -0.492499 +v 0.249151 0.123710 -0.492499 +v 0.257811 0.117460 -0.497499 +v 0.257811 0.123710 -0.497499 +v 0.266471 0.117460 -0.492500 +v 0.266471 0.123710 -0.492500 +v 0.266471 0.117460 -0.482500 +v 0.266471 0.123710 -0.482500 +v 0.257811 0.117460 -0.452500 +v 0.257811 0.123710 -0.452500 +v 0.249151 0.117461 -0.457500 +v 0.249151 0.123710 -0.457500 +v 0.249151 0.117461 -0.467499 +v 0.249151 0.123710 -0.467499 +v 0.257811 0.117460 -0.472500 +v 0.257811 0.123710 -0.472500 +v 0.266471 0.117460 -0.467500 +v 0.266471 0.123710 -0.467500 +v 0.266471 0.117460 -0.457500 +v 0.266471 0.123710 -0.457500 +v 0.257811 0.094960 -0.452500 +v 0.257811 0.088711 -0.452500 +v 0.266471 0.094960 -0.457500 +v 0.266471 0.088710 -0.457500 +v 0.266471 0.094960 -0.467499 +v 0.266471 0.088710 -0.467499 +v 0.257811 0.094960 -0.472500 +v 0.257811 0.088711 -0.472500 +v 0.249151 0.094961 -0.467500 +v 0.249151 0.088711 -0.467500 +v 0.249151 0.094961 -0.457500 +v 0.249151 0.088711 -0.457500 +v 0.257811 0.094960 -0.477500 +v 0.257811 0.088711 -0.477500 +v 0.266471 0.094960 -0.482499 +v 0.266471 0.088710 -0.482499 +v 0.266471 0.094960 -0.492499 +v 0.266471 0.088710 -0.492499 +v 0.257811 0.094960 -0.497499 +v 0.257811 0.088711 -0.497499 +v 0.249151 0.094961 -0.492500 +v 0.249151 0.088711 -0.492500 +v 0.249151 0.094961 -0.482500 +v 0.249151 0.088711 -0.482500 +v -0.232187 0.094960 -0.477500 +v -0.232187 0.088710 -0.477500 +v -0.223527 0.094960 -0.482499 +v -0.223527 0.088710 -0.482499 +v -0.223527 0.094960 -0.492499 +v -0.223527 0.088710 -0.492499 +v -0.232187 0.094960 -0.497499 +v -0.232187 0.088710 -0.497499 +v -0.240847 0.094961 -0.492500 +v -0.240847 0.088711 -0.492500 +v -0.240847 0.094961 -0.482500 +v -0.240847 0.088711 -0.482500 +v -0.232187 0.094960 -0.452500 +v -0.232187 0.088710 -0.452500 +v -0.223527 0.094960 -0.457500 +v -0.223527 0.088710 -0.457500 +v -0.223527 0.094960 -0.467499 +v -0.223527 0.088710 -0.467499 +v -0.232187 0.094960 -0.472500 +v -0.232187 0.088710 -0.472500 +v -0.240847 0.094961 -0.467500 +v -0.240847 0.088711 -0.467500 +v -0.240847 0.094961 -0.457500 +v -0.240847 0.088711 -0.457500 +v -0.232187 0.117460 -0.452500 +v -0.232187 0.123710 -0.452500 +v -0.240847 0.117460 -0.457500 +v -0.240847 0.123710 -0.457500 +v -0.240847 0.117460 -0.467499 +v -0.240847 0.123710 -0.467499 +v -0.232187 0.117460 -0.472500 +v -0.232187 0.123710 -0.472500 +v -0.223527 0.117460 -0.467500 +v -0.223527 0.123710 -0.467500 +v -0.223527 0.117460 -0.457500 +v -0.223527 0.123710 -0.457500 +v -0.232187 0.117460 -0.477500 +v -0.232187 0.123710 -0.477500 +v -0.240847 0.117460 -0.482499 +v -0.240847 0.123710 -0.482499 +v -0.240847 0.117460 -0.492499 +v -0.240847 0.123710 -0.492499 +v -0.232187 0.117460 -0.497499 +v -0.232187 0.123710 -0.497499 +v -0.223527 0.117460 -0.492500 +v -0.223527 0.123710 -0.492500 +v -0.223527 0.117460 -0.482500 +v -0.223527 0.123710 -0.482500 +v -0.232187 -0.095000 -0.477500 +v -0.232187 -0.088750 -0.477500 +v -0.240847 -0.095000 -0.482499 +v -0.240847 -0.088750 -0.482499 +v -0.240847 -0.095000 -0.492499 +v -0.240847 -0.088750 -0.492499 +v -0.232187 -0.095000 -0.497499 +v -0.232187 -0.088750 -0.497499 +v -0.223527 -0.095000 -0.492500 +v -0.223527 -0.088750 -0.492500 +v -0.223527 -0.095000 -0.482500 +v -0.223527 -0.088750 -0.482500 +v -0.232187 -0.095000 -0.452500 +v -0.232187 -0.088750 -0.452500 +v -0.240847 -0.095000 -0.457500 +v -0.240847 -0.088750 -0.457500 +v -0.240847 -0.095000 -0.467499 +v -0.240847 -0.088750 -0.467499 +v -0.232187 -0.095000 -0.472500 +v -0.232187 -0.088750 -0.472500 +v -0.223527 -0.095000 -0.467500 +v -0.223527 -0.088750 -0.467500 +v -0.223527 -0.095000 -0.457500 +v -0.223527 -0.088750 -0.457500 +v -0.232187 -0.117500 -0.452500 +v -0.232187 -0.123750 -0.452500 +v -0.223527 -0.117500 -0.457500 +v -0.223527 -0.123750 -0.457500 +v -0.223527 -0.117500 -0.467499 +v -0.223527 -0.123750 -0.467499 +v -0.232187 -0.117500 -0.472500 +v -0.232187 -0.123750 -0.472500 +v -0.240847 -0.117500 -0.467500 +v -0.240847 -0.123749 -0.467500 +v -0.240847 -0.117500 -0.457500 +v -0.240847 -0.123749 -0.457500 +v 0.257811 -0.117500 -0.477500 +v 0.257811 -0.123750 -0.477500 +v 0.266471 -0.117500 -0.482499 +v 0.266471 -0.123750 -0.482499 +v 0.266471 -0.117500 -0.492499 +v 0.266471 -0.123750 -0.492499 +v 0.257811 -0.117500 -0.497499 +v 0.257811 -0.123750 -0.497499 +v 0.249151 -0.117499 -0.492500 +v 0.249151 -0.123749 -0.492500 +v 0.249151 -0.117499 -0.482500 +v 0.249151 -0.123749 -0.482500 +v -0.232187 -0.117500 -0.477500 +v -0.232187 -0.123750 -0.477500 +v -0.223527 -0.117500 -0.482499 +v -0.223527 -0.123750 -0.482499 +v -0.223527 -0.117500 -0.492499 +v -0.223527 -0.123750 -0.492499 +v -0.232187 -0.117500 -0.497499 +v -0.232187 -0.123750 -0.497499 +v -0.240847 -0.117500 -0.492500 +v -0.240847 -0.123749 -0.492500 +v -0.240847 -0.117500 -0.482500 +v -0.240847 -0.123749 -0.482500 +v -0.245936 -0.106248 -0.465000 +v -0.252186 -0.106248 -0.465000 +v -0.245936 -0.114909 -0.469999 +v -0.252186 -0.114909 -0.469999 +v -0.245936 -0.114909 -0.479999 +v -0.252186 -0.114909 -0.479999 +v -0.245936 -0.106248 -0.484999 +v -0.252186 -0.106248 -0.484999 +v -0.245936 -0.097588 -0.480000 +v -0.252186 -0.097588 -0.480000 +v -0.245936 -0.097588 -0.470000 +v -0.252186 -0.097588 -0.470000 +v -0.245936 0.106212 -0.465000 +v -0.252186 0.106212 -0.465000 +v -0.245936 0.097552 -0.469999 +v -0.252186 0.097552 -0.469999 +v -0.245936 0.097552 -0.479999 +v -0.252186 0.097552 -0.479999 +v -0.245936 0.106212 -0.484999 +v -0.252186 0.106212 -0.484999 +v -0.245936 0.114872 -0.480000 +v -0.252186 0.114872 -0.480000 +v -0.245936 0.114872 -0.470000 +v -0.252186 0.114872 -0.470000 +v -0.218436 0.106212 -0.465000 +v -0.212186 0.106212 -0.465000 +v -0.218436 0.114872 -0.469999 +v -0.212186 0.114872 -0.469999 +v -0.218436 0.114872 -0.479999 +v -0.212186 0.114872 -0.479999 +v -0.218436 0.106212 -0.484999 +v -0.212186 0.106212 -0.484999 +v -0.218436 0.097552 -0.480000 +v -0.212186 0.097552 -0.480000 +v -0.218436 0.097552 -0.470000 +v -0.212186 0.097552 -0.470000 +v -0.218436 -0.106248 -0.465000 +v -0.212186 -0.106248 -0.465000 +v -0.218436 -0.097588 -0.469999 +v -0.212186 -0.097588 -0.469999 +v -0.218436 -0.097588 -0.479999 +v -0.212186 -0.097588 -0.479999 +v -0.218436 -0.106248 -0.484999 +v -0.212186 -0.106248 -0.484999 +v -0.218436 -0.114909 -0.480000 +v -0.212186 -0.114909 -0.480000 +v -0.218436 -0.114909 -0.470000 +v -0.212186 -0.114909 -0.470000 +v -0.129148 0.106212 -0.465000 +v -0.135398 0.106212 -0.465000 +v -0.129149 0.097552 -0.469999 +v -0.135398 0.097552 -0.469999 +v -0.129149 0.097552 -0.479999 +v -0.135398 0.097552 -0.479999 +v -0.129148 0.106212 -0.485000 +v -0.135398 0.106212 -0.485000 +v -0.129148 0.114872 -0.480000 +v -0.135398 0.114872 -0.480000 +v -0.135398 0.114872 -0.470000 +v -0.129148 0.114872 -0.470000 +v -0.142898 0.106212 -0.465000 +v -0.149148 0.106212 -0.465000 +v -0.142898 0.097552 -0.469999 +v -0.149148 0.097552 -0.469999 +v -0.142898 0.097552 -0.479999 +v -0.149148 0.097552 -0.479999 +v -0.142898 0.106212 -0.485000 +v -0.149148 0.106212 -0.485000 +v -0.142898 0.114872 -0.480000 +v -0.149148 0.114872 -0.480000 +v -0.149148 0.114872 -0.470000 +v -0.142898 0.114872 -0.470000 +v -0.142898 -0.106248 -0.465000 +v -0.149148 -0.106248 -0.465000 +v -0.142898 -0.114909 -0.469999 +v -0.149148 -0.114909 -0.469999 +v -0.142898 -0.114909 -0.479999 +v -0.149148 -0.114909 -0.479999 +v -0.142898 -0.106248 -0.485000 +v -0.149148 -0.106248 -0.485000 +v -0.142898 -0.097588 -0.480000 +v -0.149148 -0.097588 -0.480000 +v -0.149148 -0.097588 -0.470000 +v -0.142898 -0.097588 -0.470000 +v -0.232187 -0.173601 -0.452500 +v -0.232187 -0.179851 -0.452500 +v -0.223527 -0.173601 -0.457500 +v -0.223527 -0.179851 -0.457500 +v -0.223527 -0.173601 -0.467499 +v -0.223527 -0.179851 -0.467499 +v -0.232187 -0.173601 -0.472500 +v -0.232187 -0.179851 -0.472500 +v -0.240847 -0.173601 -0.467500 +v -0.240847 -0.179851 -0.467500 +v -0.240847 -0.179851 -0.457500 +v -0.240847 -0.173601 -0.457500 +v 0.244062 -0.106248 -0.465000 +v 0.237812 -0.106248 -0.465000 +v 0.244062 -0.114908 -0.469999 +v 0.237812 -0.114908 -0.469999 +v 0.244062 -0.114908 -0.479999 +v 0.237812 -0.114908 -0.479999 +v 0.244062 -0.106248 -0.485000 +v 0.237812 -0.106248 -0.485000 +v 0.244062 -0.097588 -0.480000 +v 0.237812 -0.097588 -0.480000 +v 0.244062 -0.097588 -0.470000 +v 0.237812 -0.097588 -0.470000 +v 0.244062 0.106212 -0.465000 +v 0.237812 0.106212 -0.465000 +v 0.244062 0.097552 -0.469999 +v 0.237812 0.097552 -0.469999 +v 0.244062 0.097552 -0.479999 +v 0.237812 0.097552 -0.479999 +v 0.244062 0.106212 -0.485000 +v 0.237812 0.106212 -0.485000 +v 0.244062 0.114872 -0.480000 +v 0.237812 0.114872 -0.480000 +v 0.244062 0.114872 -0.470000 +v 0.237812 0.114872 -0.470000 +v 0.271562 0.106212 -0.465000 +v 0.277812 0.106212 -0.465000 +v 0.271562 0.114872 -0.469999 +v 0.277812 0.114872 -0.469999 +v 0.271562 0.114872 -0.479999 +v 0.277812 0.114872 -0.479999 +v 0.271562 0.106212 -0.485000 +v 0.277812 0.106212 -0.485000 +v 0.271562 0.097552 -0.480000 +v 0.277812 0.097552 -0.480000 +v 0.271562 0.097552 -0.470000 +v 0.277812 0.097552 -0.470000 +v 0.271562 -0.106248 -0.465000 +v 0.277812 -0.106248 -0.465000 +v 0.271562 -0.097588 -0.469999 +v 0.277812 -0.097588 -0.469999 +v 0.271562 -0.097588 -0.479999 +v 0.277812 -0.097588 -0.479999 +v 0.271562 -0.106248 -0.485000 +v 0.277812 -0.106248 -0.485000 +v 0.271562 -0.114908 -0.480000 +v 0.277812 -0.114908 -0.480000 +v 0.271562 -0.114908 -0.470000 +v 0.277812 -0.114908 -0.470000 +v -0.232187 -0.159851 -0.452500 +v -0.232187 -0.166101 -0.452500 +v -0.223527 -0.159851 -0.457500 +v -0.223527 -0.166101 -0.457500 +v -0.223527 -0.159851 -0.467499 +v -0.223527 -0.166101 -0.467499 +v -0.232187 -0.159851 -0.472500 +v -0.232187 -0.166101 -0.472500 +v -0.240847 -0.159851 -0.467500 +v -0.240847 -0.166101 -0.467500 +v -0.240847 -0.166101 -0.457500 +v -0.240847 -0.159851 -0.457500 +v -0.232187 0.179523 -0.452500 +v -0.232187 0.173273 -0.452500 +v -0.223527 0.179523 -0.457500 +v -0.223527 0.173273 -0.457500 +v -0.223527 0.179523 -0.467499 +v -0.223527 0.173273 -0.467499 +v -0.232187 0.179523 -0.472500 +v -0.232187 0.173273 -0.472500 +v -0.240847 0.179523 -0.467500 +v -0.240847 0.173273 -0.467500 +v -0.240847 0.173273 -0.457500 +v -0.240847 0.179523 -0.457500 +v -0.232187 0.165773 -0.452500 +v -0.232187 0.159523 -0.452500 +v -0.223527 0.165773 -0.457500 +v -0.223527 0.159523 -0.457500 +v -0.223527 0.165773 -0.467499 +v -0.223527 0.159523 -0.467499 +v -0.232187 0.165773 -0.472500 +v -0.232187 0.159523 -0.472500 +v -0.240847 0.165773 -0.467500 +v -0.240847 0.159523 -0.467500 +v -0.240847 0.159523 -0.457500 +v -0.240847 0.165773 -0.457500 +v 0.211561 -0.011289 -0.448750 +v 0.211561 -0.011289 -0.476250 +v 0.211561 0.011211 -0.448750 +v 0.211561 0.011211 -0.476249 +v 0.270311 -0.011289 -0.460114 +v 0.258946 -0.011289 -0.448750 +v 0.268788 -0.011289 -0.454432 +v 0.264629 -0.011289 -0.450272 +v 0.258946 -0.011289 -0.476250 +v 0.270311 -0.011289 -0.464885 +v 0.264629 -0.011289 -0.474727 +v 0.268788 -0.011289 -0.470567 +v 0.258946 0.011211 -0.448750 +v 0.270311 0.011211 -0.460114 +v 0.264629 0.011211 -0.450272 +v 0.268788 0.011211 -0.454432 +v 0.270311 0.011211 -0.464885 +v 0.258946 0.011211 -0.476249 +v 0.268788 0.011211 -0.470567 +v 0.264629 0.011211 -0.474727 +v -0.129148 -0.106248 -0.465000 +v -0.135398 -0.106248 -0.465000 +v -0.129149 -0.114909 -0.469999 +v -0.135398 -0.114909 -0.469999 +v -0.129149 -0.114909 -0.479999 +v -0.135398 -0.114909 -0.479999 +v -0.129148 -0.106248 -0.485000 +v -0.135398 -0.106248 -0.485000 +v -0.129148 -0.097588 -0.480000 +v -0.135398 -0.097588 -0.480000 +v -0.135398 -0.097588 -0.470000 +v -0.129148 -0.097588 -0.470000 +v -0.280936 -0.111248 -0.474995 +v 0.281562 -0.111250 -0.474997 +v -0.280936 -0.110868 -0.473082 +v 0.281562 -0.110869 -0.473084 +v -0.280936 -0.109784 -0.471460 +v 0.281562 -0.109785 -0.471462 +v -0.280936 -0.108162 -0.470376 +v 0.281562 -0.108163 -0.470378 +v -0.280936 -0.106248 -0.469995 +v 0.281562 -0.106250 -0.469997 +v -0.280936 -0.104335 -0.470376 +v 0.281562 -0.104336 -0.470378 +v -0.280936 -0.102713 -0.471460 +v 0.281562 -0.102714 -0.471462 +v -0.280936 -0.101629 -0.473082 +v 0.281562 -0.101630 -0.473084 +v -0.280936 -0.101248 -0.474995 +v 0.281562 -0.101250 -0.474997 +v -0.280936 -0.101629 -0.476908 +v 0.281562 -0.101630 -0.476911 +v -0.280936 -0.102713 -0.478531 +v 0.281562 -0.102714 -0.478533 +v -0.280936 -0.104335 -0.479614 +v 0.281562 -0.104336 -0.479617 +v -0.280936 -0.106248 -0.479995 +v 0.281562 -0.106250 -0.479997 +v -0.280936 -0.108162 -0.479614 +v 0.281562 -0.108163 -0.479617 +v -0.280936 -0.109784 -0.478531 +v 0.281562 -0.109785 -0.478533 +v -0.280936 -0.110868 -0.476908 +v 0.281562 -0.110869 -0.476911 +v -0.280936 0.101212 -0.474995 +v 0.281562 0.101210 -0.474997 +v -0.280936 0.101592 -0.473082 +v 0.281562 0.101591 -0.473084 +v -0.280936 0.102676 -0.471459 +v 0.281562 0.102675 -0.471462 +v -0.280936 0.104298 -0.470376 +v 0.281562 0.104297 -0.470378 +v -0.280936 0.106212 -0.469995 +v 0.281562 0.106210 -0.469997 +v -0.280936 0.108125 -0.470376 +v 0.281562 0.108124 -0.470378 +v -0.280936 0.109747 -0.471459 +v 0.281562 0.109746 -0.471462 +v -0.280936 0.110831 -0.473082 +v 0.281562 0.110830 -0.473084 +v -0.280936 0.111212 -0.474995 +v 0.281562 0.111210 -0.474997 +v -0.280936 0.110831 -0.476908 +v 0.281562 0.110830 -0.476911 +v -0.280936 0.109747 -0.478530 +v 0.281562 0.109746 -0.478533 +v -0.280936 0.108125 -0.479614 +v 0.281562 0.108124 -0.479617 +v -0.280936 0.106212 -0.479995 +v 0.281562 0.106210 -0.479997 +v -0.280936 0.104298 -0.479614 +v 0.281562 0.104297 -0.479617 +v -0.280936 0.102676 -0.478530 +v 0.281562 0.102675 -0.478533 +v -0.280936 0.101592 -0.476908 +v 0.281562 0.101591 -0.476911 +v -0.071249 -0.236289 -0.437497 +v -0.126248 -0.236289 -0.492497 +v -0.126248 -0.236289 -0.437497 +v -0.071248 -0.181289 -0.437496 +v -0.126248 -0.181289 -0.492496 +v -0.126248 -0.181289 -0.437496 +v -0.101873 -0.208789 -0.437496 +v -0.101873 -0.208789 -0.412497 +v -0.100958 -0.206579 -0.437496 +v -0.100958 -0.206579 -0.412497 +v -0.098748 -0.205664 -0.437496 +v -0.098748 -0.205664 -0.412497 +v -0.096539 -0.206579 -0.437496 +v -0.096539 -0.206579 -0.412497 +v -0.095623 -0.208789 -0.437496 +v -0.095623 -0.208789 -0.412497 +v -0.096539 -0.210998 -0.437496 +v -0.096539 -0.210998 -0.412497 +v -0.098748 -0.211914 -0.437497 +v -0.098748 -0.211914 -0.412497 +v -0.100958 -0.210998 -0.437496 +v -0.100958 -0.210998 -0.412497 +v -0.071249 -0.236289 -0.443747 +v -0.126248 -0.236289 -0.486247 +v -0.126248 -0.181289 -0.486246 +v -0.071248 -0.181289 -0.486246 +v -0.126248 -0.236289 -0.443747 +v -0.126248 -0.181289 -0.443746 +v -0.071248 -0.181289 -0.443746 +v -0.071249 -0.236289 -0.492497 +v -0.071248 -0.181289 -0.492496 +v -0.071249 -0.236289 -0.486247 +v -0.100664 -0.204168 -0.031248 +v -0.100662 -0.204169 -0.406247 +v -0.102286 -0.205252 -0.031248 +v -0.102284 -0.205253 -0.406247 +v -0.103370 -0.206874 -0.031248 +v -0.103368 -0.206875 -0.406247 +v -0.103751 -0.208787 -0.031248 +v -0.103748 -0.208789 -0.406247 +v -0.103370 -0.210701 -0.031248 +v -0.103368 -0.210702 -0.406247 +v -0.102286 -0.212323 -0.031248 +v -0.102284 -0.212324 -0.406247 +v -0.100664 -0.213407 -0.031248 +v -0.100662 -0.213408 -0.406247 +v -0.098751 -0.213787 -0.031248 +v -0.098748 -0.213789 -0.406247 +v -0.096837 -0.213407 -0.031248 +v -0.096835 -0.213408 -0.406247 +v -0.095215 -0.212323 -0.031248 +v -0.095213 -0.212324 -0.406247 +v -0.094131 -0.210701 -0.031248 +v -0.094129 -0.210702 -0.406247 +v -0.093751 -0.208787 -0.031248 +v -0.093748 -0.208789 -0.406247 +v -0.094131 -0.206874 -0.031248 +v -0.094129 -0.206875 -0.406247 +v -0.095215 -0.205252 -0.031248 +v -0.095213 -0.205253 -0.406247 +v -0.096837 -0.204168 -0.031248 +v -0.096835 -0.204169 -0.406247 +v -0.098751 -0.203787 -0.031248 +v -0.098748 -0.203789 -0.406247 +v -0.108748 -0.208789 -0.418747 +v -0.108748 -0.208789 -0.393747 +v -0.107987 -0.204962 -0.418747 +v -0.107987 -0.204962 -0.393747 +v -0.105819 -0.201718 -0.418746 +v -0.105819 -0.201718 -0.393747 +v -0.102575 -0.199550 -0.418746 +v -0.102575 -0.199550 -0.393747 +v -0.098748 -0.198789 -0.418746 +v -0.098748 -0.198789 -0.393747 +v -0.094922 -0.199550 -0.418746 +v -0.094922 -0.199550 -0.393747 +v -0.091677 -0.201718 -0.418746 +v -0.091677 -0.201718 -0.393747 +v -0.089510 -0.204962 -0.418747 +v -0.089510 -0.204962 -0.393747 +v -0.088748 -0.208789 -0.418747 +v -0.088748 -0.208789 -0.393747 +v -0.089510 -0.212615 -0.418747 +v -0.089510 -0.212615 -0.393747 +v -0.091677 -0.215860 -0.418747 +v -0.091677 -0.215860 -0.393747 +v -0.094922 -0.218027 -0.418747 +v -0.094922 -0.218027 -0.393747 +v -0.098748 -0.218789 -0.418747 +v -0.098748 -0.218789 -0.393747 +v -0.102575 -0.218027 -0.418747 +v -0.102575 -0.218027 -0.393747 +v -0.105819 -0.215860 -0.418747 +v -0.105819 -0.215860 -0.393747 +v -0.107987 -0.212615 -0.418747 +v -0.107987 -0.212615 -0.393747 +v -0.061248 0.243710 -0.263122 +v -0.006248 0.243710 -0.318122 +v -0.061248 0.243710 -0.318122 +v -0.061249 0.298709 -0.263122 +v -0.006249 0.298709 -0.318121 +v -0.061249 0.298709 -0.318121 +v -0.061248 0.271209 -0.293747 +v -0.086248 0.271209 -0.293747 +v -0.061248 0.273419 -0.292831 +v -0.086248 0.273419 -0.292831 +v -0.061248 0.274334 -0.290622 +v -0.086248 0.274334 -0.290622 +v -0.061248 0.273419 -0.288412 +v -0.086248 0.273419 -0.288412 +v -0.061248 0.271209 -0.287497 +v -0.086248 0.271209 -0.287497 +v -0.061248 0.269000 -0.288412 +v -0.086248 0.269000 -0.288412 +v -0.061248 0.268084 -0.290622 +v -0.086248 0.268084 -0.290622 +v -0.061248 0.269000 -0.292831 +v -0.086248 0.269000 -0.292831 +v -0.054998 0.243710 -0.263122 +v -0.012498 0.243710 -0.318122 +v -0.012499 0.298709 -0.318121 +v -0.012499 0.298709 -0.263122 +v -0.054998 0.243710 -0.318122 +v -0.054999 0.298709 -0.318121 +v -0.054999 0.298709 -0.263122 +v -0.006248 0.243710 -0.263122 +v -0.006249 0.298709 -0.263122 +v -0.012498 0.243710 -0.263122 +v -0.068452 0.283117 -0.290622 +v -0.087202 0.283117 -0.290622 +v -0.068452 0.282211 -0.286065 +v -0.087202 0.282211 -0.286065 +v -0.068452 0.279629 -0.282202 +v -0.087202 0.279629 -0.282202 +v -0.068452 0.275766 -0.279621 +v -0.087202 0.275766 -0.279621 +v -0.068452 0.271210 -0.278714 +v -0.087202 0.271210 -0.278714 +v -0.068452 0.266653 -0.279621 +v -0.087202 0.266653 -0.279621 +v -0.068452 0.262790 -0.282202 +v -0.087202 0.262790 -0.282202 +v -0.068452 0.260209 -0.286065 +v -0.087202 0.260209 -0.286065 +v -0.068452 0.259302 -0.290622 +v -0.087202 0.259302 -0.290622 +v -0.068452 0.260209 -0.295178 +v -0.087202 0.260209 -0.295178 +v -0.068452 0.262790 -0.299041 +v -0.087202 0.262790 -0.299041 +v -0.068452 0.266653 -0.301622 +v -0.087202 0.266653 -0.301622 +v -0.068452 0.271210 -0.302529 +v -0.087202 0.271210 -0.302529 +v -0.068452 0.275766 -0.301622 +v -0.087202 0.275766 -0.301622 +v -0.068452 0.279629 -0.299041 +v -0.087202 0.279629 -0.299041 +v -0.068452 0.282211 -0.295178 +v -0.087202 0.282211 -0.295178 +v -0.071131 0.283117 -0.290622 +v -0.071408 0.281342 -0.290622 +v -0.081568 0.281342 -0.290622 +v -0.081845 0.283117 -0.290622 +v -0.081845 0.282211 -0.286065 +v -0.081568 0.280571 -0.286744 +v -0.071408 0.280571 -0.286744 +v -0.071131 0.282211 -0.286065 +v -0.081845 0.279629 -0.282202 +v -0.081568 0.278374 -0.283457 +v -0.071408 0.278374 -0.283457 +v -0.071131 0.279629 -0.282202 +v -0.081845 0.275766 -0.279621 +v -0.081568 0.275087 -0.281261 +v -0.071409 0.275087 -0.281261 +v -0.071131 0.275766 -0.279621 +v -0.081845 0.271210 -0.278714 +v -0.081568 0.271210 -0.280489 +v -0.071409 0.271210 -0.280489 +v -0.071131 0.271210 -0.278714 +v -0.081845 0.266653 -0.279621 +v -0.081568 0.267332 -0.281261 +v -0.071409 0.267332 -0.281261 +v -0.071131 0.266653 -0.279621 +v -0.081845 0.262790 -0.282202 +v -0.081568 0.264045 -0.283457 +v -0.071408 0.264045 -0.283457 +v -0.071131 0.262790 -0.282202 +v -0.081845 0.260209 -0.286065 +v -0.081568 0.261849 -0.286744 +v -0.071408 0.261849 -0.286744 +v -0.071131 0.260209 -0.286065 +v -0.081845 0.259302 -0.290622 +v -0.081568 0.261077 -0.290622 +v -0.071408 0.261077 -0.290622 +v -0.071131 0.259302 -0.290622 +v -0.081845 0.260209 -0.295178 +v -0.081568 0.261849 -0.294499 +v -0.071408 0.261849 -0.294499 +v -0.071131 0.260209 -0.295178 +v -0.081845 0.262790 -0.299041 +v -0.081568 0.264045 -0.297786 +v -0.071408 0.264045 -0.297786 +v -0.071131 0.262790 -0.299041 +v -0.081845 0.266653 -0.301622 +v -0.081568 0.267332 -0.299983 +v -0.071408 0.267332 -0.299983 +v -0.071131 0.266653 -0.301622 +v -0.081845 0.271210 -0.302529 +v -0.081568 0.271210 -0.300754 +v -0.071408 0.271210 -0.300754 +v -0.071131 0.271210 -0.302529 +v -0.081845 0.275766 -0.301622 +v -0.081568 0.275087 -0.299983 +v -0.071408 0.275087 -0.299983 +v -0.071131 0.275766 -0.301622 +v -0.081845 0.279629 -0.299041 +v -0.081568 0.278374 -0.297786 +v -0.071408 0.278374 -0.297786 +v -0.071131 0.279629 -0.299041 +v -0.081845 0.282211 -0.295178 +v -0.081568 0.280571 -0.294499 +v -0.071408 0.280571 -0.294499 +v -0.071131 0.282211 -0.295178 +v -0.071249 0.173710 -0.437497 +v -0.126248 0.173710 -0.492497 +v -0.126248 0.173710 -0.437497 +v -0.071248 0.228710 -0.437496 +v -0.126248 0.228710 -0.492496 +v -0.126248 0.228710 -0.437496 +v -0.101873 0.201210 -0.437496 +v -0.101873 0.201210 -0.412497 +v -0.100958 0.203419 -0.437496 +v -0.100958 0.203419 -0.412497 +v -0.098748 0.204335 -0.437496 +v -0.098748 0.204335 -0.412497 +v -0.096539 0.203419 -0.437496 +v -0.096539 0.203419 -0.412497 +v -0.095623 0.201210 -0.437496 +v -0.095623 0.201210 -0.412497 +v -0.096539 0.199000 -0.437496 +v -0.096539 0.199000 -0.412497 +v -0.098748 0.198085 -0.437497 +v -0.098748 0.198085 -0.412497 +v -0.100958 0.199000 -0.437496 +v -0.100958 0.199000 -0.412497 +v -0.071249 0.173710 -0.443747 +v -0.126248 0.173710 -0.486247 +v -0.126248 0.228710 -0.486246 +v -0.071248 0.228710 -0.486246 +v -0.126248 0.173710 -0.443747 +v -0.126248 0.228710 -0.443746 +v -0.071248 0.228710 -0.443746 +v -0.071249 0.173710 -0.492497 +v -0.071248 0.228710 -0.492496 +v -0.071249 0.173710 -0.486247 +v -0.100664 0.205830 -0.031248 +v -0.100662 0.205829 -0.406247 +v -0.102286 0.204747 -0.031248 +v -0.102284 0.204745 -0.406247 +v -0.103370 0.203124 -0.031248 +v -0.103368 0.203123 -0.406247 +v -0.103751 0.201211 -0.031248 +v -0.103748 0.201210 -0.406247 +v -0.103370 0.199298 -0.031248 +v -0.103368 0.199296 -0.406247 +v -0.102286 0.197676 -0.031248 +v -0.102284 0.197674 -0.406247 +v -0.100664 0.196592 -0.031248 +v -0.100662 0.196590 -0.406247 +v -0.098751 0.196211 -0.031248 +v -0.098748 0.196210 -0.406247 +v -0.096837 0.196592 -0.031248 +v -0.096835 0.196590 -0.406247 +v -0.095215 0.197676 -0.031248 +v -0.095213 0.197674 -0.406247 +v -0.094131 0.199298 -0.031248 +v -0.094129 0.199296 -0.406247 +v -0.093751 0.201211 -0.031248 +v -0.093748 0.201210 -0.406247 +v -0.094131 0.203124 -0.031248 +v -0.094129 0.203123 -0.406247 +v -0.095215 0.204747 -0.031248 +v -0.095213 0.204745 -0.406247 +v -0.096837 0.205830 -0.031248 +v -0.096835 0.205829 -0.406247 +v -0.098751 0.206211 -0.031248 +v -0.098748 0.206210 -0.406247 +v -0.108748 0.201210 -0.418747 +v -0.108748 0.201210 -0.393747 +v -0.107987 0.205036 -0.418747 +v -0.107987 0.205036 -0.393747 +v -0.105819 0.208281 -0.418746 +v -0.105819 0.208281 -0.393747 +v -0.102575 0.210448 -0.418746 +v -0.102575 0.210448 -0.393747 +v -0.098748 0.211210 -0.418746 +v -0.098748 0.211210 -0.393747 +v -0.094922 0.210448 -0.418746 +v -0.094922 0.210448 -0.393747 +v -0.091677 0.208281 -0.418746 +v -0.091677 0.208281 -0.393747 +v -0.089510 0.205036 -0.418747 +v -0.089510 0.205036 -0.393747 +v -0.088748 0.201210 -0.418747 +v -0.088748 0.201210 -0.393747 +v -0.089510 0.197383 -0.418747 +v -0.089510 0.197383 -0.393747 +v -0.091677 0.194139 -0.418747 +v -0.091677 0.194139 -0.393747 +v -0.094922 0.191971 -0.418747 +v -0.094922 0.191971 -0.393747 +v -0.098748 0.191210 -0.418747 +v -0.098748 0.191210 -0.393747 +v -0.102575 0.191971 -0.418747 +v -0.102575 0.191971 -0.393747 +v -0.105820 0.194139 -0.418747 +v -0.105820 0.194139 -0.393747 +v -0.107987 0.197383 -0.418747 +v -0.107987 0.197383 -0.393747 +vt 0.984375 0.656250 +vt 0.984375 0.718750 +vt 0.953125 0.718750 +vt 0.953125 0.656250 +vt 0.921875 0.656250 +vt 0.921875 0.718750 +vt 0.890625 0.718750 +vt 0.890625 0.656250 +vt 0.859375 0.718750 +vt 0.859375 0.656250 +vt 0.890625 0.656250 +vt 0.921875 0.718750 +vt 0.921875 0.656250 +vt 0.953125 0.718750 +vt 0.965770 0.593750 +vt 0.965770 0.656250 +vt 0.912572 0.656250 +vt 0.912572 0.593750 +vt 0.859375 0.656250 +vt 0.859375 0.593750 +vt 0.912572 0.593750 +vt 0.912572 0.656250 +vt 0.478523 0.252502 +vt 0.478523 0.312500 +vt 0.458012 0.312500 +vt 0.458012 0.252502 +vt 0.338421 0.337090 +vt 0.338421 0.375000 +vt 0.312500 0.375000 +vt 0.312500 0.337090 +vt 0.312500 0.274590 +vt 0.312500 0.312500 +vt 0.338421 0.312500 +vt 0.338421 0.274590 +vt 0.458011 0.252502 +vt 0.458011 0.267531 +vt 0.437500 0.267531 +vt 0.437500 0.252502 +vt 0.338421 0.237040 +vt 0.370821 0.237039 +vt 0.370821 0.224079 +vt 0.312500 0.224079 +vt 0.312500 0.250000 +vt 0.338421 0.250000 +vt 0.375000 0.346512 +vt 0.407869 0.346512 +vt 0.407869 0.360756 +vt 0.403488 0.360756 +vt 0.403488 0.375000 +vt 0.375000 0.375000 +vt 0.338421 0.274590 +vt 0.338421 0.312500 +vt 0.342407 0.312500 +vt 0.342407 0.284086 +vt 0.370821 0.284086 +vt 0.370821 0.274590 +vt 0.312500 0.274590 +vt 0.370821 0.274590 +vt 0.370821 0.284086 +vt 0.342407 0.284086 +vt 0.342407 0.312500 +vt 0.312500 0.312500 +vt 0.437500 0.267531 +vt 0.458012 0.267531 +vt 0.458012 0.312500 +vt 0.437500 0.312500 +vt 0.407869 0.360756 +vt 0.407869 0.346512 +vt 0.439098 0.346512 +vt 0.439098 0.360756 +vt 0.451644 0.337090 +vt 0.451644 0.375000 +vt 0.425724 0.375000 +vt 0.425724 0.337090 +vt 0.375000 0.337090 +vt 0.375000 0.375000 +vt 0.400921 0.375000 +vt 0.400921 0.337090 +vt 0.425724 0.337090 +vt 0.425724 0.375000 +vt 0.451644 0.375000 +vt 0.451644 0.337090 +vt 0.400921 0.337090 +vt 0.400921 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.337090 +vt 0.425724 0.313785 +vt 0.425724 0.339705 +vt 0.451644 0.339705 +vt 0.451644 0.313784 +vt 0.425724 0.339705 +vt 0.425724 0.313785 +vt 0.451644 0.313784 +vt 0.451644 0.339705 +vt 0.437500 0.343408 +vt 0.437500 0.375000 +vt 0.448300 0.375000 +vt 0.448300 0.343408 +vt 0.464180 0.343408 +vt 0.464180 0.375000 +vt 0.496581 0.375000 +vt 0.496581 0.343408 +vt 0.448300 0.343408 +vt 0.448300 0.375000 +vt 0.437500 0.375000 +vt 0.437500 0.343408 +vt 0.496581 0.343408 +vt 0.496581 0.375000 +vt 0.464180 0.375000 +vt 0.464180 0.343408 +vt 0.464180 0.341737 +vt 0.496581 0.341737 +vt 0.496581 0.330937 +vt 0.464180 0.330937 +vt 0.496581 0.341737 +vt 0.464180 0.341737 +vt 0.464180 0.330937 +vt 0.496581 0.330937 +vt 0.437500 0.312500 +vt 0.448300 0.312500 +vt 0.448300 0.288739 +vt 0.437500 0.288739 +vt 0.495227 0.239883 +vt 0.518988 0.239883 +vt 0.518988 0.229083 +vt 0.495227 0.229083 +vt 0.518988 0.288739 +vt 0.518988 0.312500 +vt 0.495227 0.312500 +vt 0.495227 0.288739 +vt 0.495227 0.229083 +vt 0.518988 0.229083 +vt 0.518988 0.239883 +vt 0.495227 0.239883 +vt 0.448300 0.312500 +vt 0.437500 0.312500 +vt 0.437500 0.288739 +vt 0.448300 0.288739 +vt 0.140625 0.953125 +vt 0.140625 0.968750 +vt 0.078125 0.968750 +vt 0.078125 0.953125 +vt 0.015625 0.968750 +vt 0.015625 0.953125 +vt 0.265625 0.953125 +vt 0.265625 0.968750 +vt 0.203125 0.968750 +vt 0.203125 0.953125 +vt 0.203125 0.875000 +vt 0.203125 0.890625 +vt 0.140625 0.890625 +vt 0.140625 0.875000 +vt 0.265625 0.875000 +vt 0.265625 0.890625 +vt 0.078125 0.875000 +vt 0.078125 0.890625 +vt 0.015625 0.890625 +vt 0.015625 0.875000 +vt 0.171875 0.546875 +vt 0.171875 0.625000 +vt 0.093750 0.625000 +vt 0.093750 0.546875 +vt 0.093750 0.625000 +vt 0.093750 0.703125 +vt 0.015625 0.703125 +vt 0.015625 0.625000 +vt 0.171875 0.625000 +vt 0.171875 0.703125 +vt 0.015625 0.625000 +vt 0.015625 0.546875 +vt 0.546875 0.296875 +vt 0.546875 0.312500 +vt 0.296875 0.312500 +vt 0.296875 0.296875 +vt 0.296875 0.343750 +vt 0.296875 0.328125 +vt 0.546875 0.328125 +vt 0.546875 0.343750 +vt 0.546875 0.359375 +vt 0.296875 0.359375 +vt 0.546875 0.296875 +vt 0.546875 0.312500 +vt 0.296875 0.312500 +vt 0.296875 0.296875 +vt 0.296875 0.343750 +vt 0.296875 0.328125 +vt 0.546875 0.328125 +vt 0.546875 0.343750 +vt 0.546875 0.359375 +vt 0.296875 0.359375 +vt 0.475637 0.181108 +vt 0.475637 0.240509 +vt 0.486437 0.240509 +vt 0.486437 0.181108 +vt 0.486101 0.181108 +vt 0.486101 0.240509 +vt 0.437500 0.240509 +vt 0.437500 0.181108 +vt 0.486437 0.181108 +vt 0.486437 0.240509 +vt 0.475637 0.240509 +vt 0.475637 0.181108 +vt 0.475637 0.312500 +vt 0.486437 0.312500 +vt 0.486437 0.263899 +vt 0.475637 0.263899 +vt 0.486437 0.312500 +vt 0.475637 0.312500 +vt 0.475637 0.263899 +vt 0.486437 0.263899 +vt 0.578126 0.453125 +vt 0.578126 0.703124 +vt 0.828125 0.703124 +vt 0.828125 0.453125 +vt 0.671875 0.453125 +vt 0.671875 0.703124 +vt 0.734375 0.703125 +vt 0.734375 0.453126 +vt 0.828124 0.453126 +vt 0.828124 0.703125 +vt 0.578125 0.703125 +vt 0.578125 0.453126 +vt 0.734375 0.453126 +vt 0.734375 0.703125 +vt 0.671875 0.703124 +vt 0.671875 0.453125 +vt 0.578125 0.453125 +vt 0.578125 0.578125 +vt 0.828125 0.578125 +vt 0.578125 0.578125 +vt 0.828125 0.578125 +vt 0.828125 0.703125 +vt 0.030903 0.421869 +vt 0.250347 0.421794 +vt 0.250347 0.406261 +vt 0.030903 0.406334 +vt 0.251736 0.421794 +vt 0.251736 0.406260 +vt 0.265625 0.421790 +vt 0.265625 0.406256 +vt 0.031165 0.171877 +vt 0.031163 0.175256 +vt 0.015631 0.175256 +vt 0.015633 0.171877 +vt 0.031159 0.418497 +vt 0.015625 0.418497 +vt 0.031159 0.421875 +vt 0.015627 0.421875 +vt 0.265625 0.421785 +vt 0.015625 0.421869 +vt 0.015625 0.406334 +vt 0.265625 0.406250 +vt 0.031244 0.421872 +vt 0.031244 0.418494 +vt 0.015712 0.418494 +vt 0.015712 0.421872 +vt 0.265552 0.198904 +vt 0.265559 0.198904 +vt 0.015651 0.198904 +vt 0.015645 0.198904 +vt 0.031198 0.198903 +vt 0.031204 0.182011 +vt 0.015675 0.182011 +vt 0.015667 0.198903 +vt 0.144097 0.421831 +vt 0.137153 0.421834 +vt 0.137153 0.406298 +vt 0.144097 0.406296 +vt 0.031208 0.182011 +vt 0.031212 0.198903 +vt 0.015681 0.198903 +vt 0.015675 0.182011 +vt 0.119792 0.421839 +vt 0.088542 0.421850 +vt 0.088542 0.406314 +vt 0.119792 0.406304 +vt 0.031224 0.198902 +vt 0.031226 0.195524 +vt 0.015693 0.195524 +vt 0.015691 0.198902 +vt 0.031228 0.185345 +vt 0.031228 0.195524 +vt 0.015694 0.195524 +vt 0.015694 0.185345 +vt 0.085069 0.421852 +vt 0.084957 0.421852 +vt 0.084957 0.406317 +vt 0.085069 0.406317 +vt 0.084609 0.421852 +vt 0.084609 0.406317 +vt 0.084057 0.421852 +vt 0.084057 0.406317 +vt 0.083336 0.421852 +vt 0.083336 0.406317 +vt 0.082497 0.421852 +vt 0.082497 0.406318 +vt 0.081597 0.421852 +vt 0.081597 0.406318 +vt 0.080697 0.421852 +vt 0.080697 0.406318 +vt 0.079858 0.421852 +vt 0.079858 0.406318 +vt 0.079138 0.421854 +vt 0.079138 0.406318 +vt 0.078585 0.421854 +vt 0.078585 0.406319 +vt 0.078238 0.421854 +vt 0.078238 0.406319 +vt 0.078125 0.421854 +vt 0.078125 0.406319 +vt 0.031228 0.198902 +vt 0.015697 0.198902 +vt 0.031186 0.195525 +vt 0.031186 0.185346 +vt 0.015653 0.185346 +vt 0.015653 0.195525 +vt 0.156250 0.203125 +vt 0.156250 0.203125 +vt 0.140625 0.203125 +vt 0.140625 0.203125 +vt 0.031236 0.202280 +vt 0.031232 0.391468 +vt 0.015698 0.391468 +vt 0.015704 0.202280 +vt 0.031232 0.394846 +vt 0.015698 0.394846 +vt 0.053819 0.421858 +vt 0.227431 0.421799 +vt 0.227431 0.406264 +vt 0.053819 0.406322 +vt 0.031173 0.394848 +vt 0.031171 0.391469 +vt 0.015641 0.391469 +vt 0.015641 0.394848 +vt 0.031177 0.202282 +vt 0.015643 0.202282 +vt 0.031178 0.198904 +vt 0.074653 0.421854 +vt 0.053819 0.421862 +vt 0.053819 0.406326 +vt 0.074653 0.406319 +vt 0.031184 0.198904 +vt 0.203125 0.421813 +vt 0.203012 0.421813 +vt 0.203012 0.406276 +vt 0.203125 0.406276 +vt 0.202665 0.421813 +vt 0.202665 0.406276 +vt 0.202112 0.421813 +vt 0.202112 0.406276 +vt 0.201392 0.421813 +vt 0.201392 0.406276 +vt 0.200553 0.421813 +vt 0.200553 0.406277 +vt 0.199653 0.421814 +vt 0.199653 0.406277 +vt 0.198753 0.421814 +vt 0.198753 0.406277 +vt 0.197914 0.421814 +vt 0.197914 0.406277 +vt 0.197193 0.421814 +vt 0.197193 0.406277 +vt 0.196640 0.421814 +vt 0.196640 0.406279 +vt 0.196293 0.421814 +vt 0.196293 0.406279 +vt 0.196181 0.421814 +vt 0.196181 0.406279 +vt 0.031226 0.185345 +vt 0.015693 0.185345 +vt 0.031186 0.195525 +vt 0.031188 0.198903 +vt 0.015657 0.198903 +vt 0.015657 0.195525 +vt 0.031250 0.175124 +vt 0.031248 0.171875 +vt 0.015716 0.171875 +vt 0.015716 0.175124 +vt 0.192708 0.421814 +vt 0.161458 0.421824 +vt 0.161458 0.406290 +vt 0.192708 0.406280 +vt 0.015625 0.421875 +vt 0.029514 0.421870 +vt 0.029514 0.406334 +vt 0.015625 0.406340 +vt 0.031188 0.185346 +vt 0.015657 0.185346 +vt 0.225084 0.394848 +vt 0.056166 0.394846 +vt 0.052787 0.391468 +vt 0.015625 0.418494 +vt 0.019003 0.421872 +vt 0.262247 0.421875 +vt 0.265625 0.418497 +vt 0.228463 0.391469 +vt 0.137247 0.182011 +vt 0.083193 0.182005 +vt 0.033868 0.173226 +vt 0.247382 0.173229 +vt 0.198057 0.182006 +vt 0.144003 0.182011 +vt 0.265625 0.175256 +vt 0.262247 0.171877 +vt 0.248733 0.171877 +vt 0.247382 0.173229 +vt 0.225084 0.198904 +vt 0.228463 0.202282 +vt 0.137247 0.182011 +vt 0.144003 0.182011 +vt 0.198057 0.182006 +vt 0.033868 0.173226 +vt 0.083193 0.182005 +vt 0.228463 0.391469 +vt 0.228463 0.202282 +vt 0.225084 0.198904 +vt 0.248733 0.171877 +vt 0.262247 0.171877 +vt 0.265625 0.175256 +vt 0.265625 0.418497 +vt 0.201436 0.185346 +vt 0.201326 0.184514 +vt 0.200988 0.183698 +vt 0.200450 0.182997 +vt 0.199750 0.182459 +vt 0.198933 0.182121 +vt 0.204814 0.198904 +vt 0.201436 0.195525 +vt 0.080800 0.182996 +vt 0.081500 0.182458 +vt 0.082317 0.182120 +vt 0.056166 0.198902 +vt 0.076436 0.198902 +vt 0.079814 0.195524 +vt 0.079814 0.185345 +vt 0.079924 0.184513 +vt 0.080262 0.183697 +vt 0.195127 0.183698 +vt 0.194789 0.184514 +vt 0.194679 0.185346 +vt 0.194679 0.195525 +vt 0.191301 0.198903 +vt 0.160895 0.198903 +vt 0.197182 0.182121 +vt 0.196365 0.182459 +vt 0.195664 0.182997 +vt 0.076436 0.198902 +vt 0.056166 0.198902 +vt 0.082317 0.182120 +vt 0.081500 0.182458 +vt 0.080800 0.182996 +vt 0.080262 0.183697 +vt 0.079924 0.184513 +vt 0.079814 0.185345 +vt 0.079814 0.195524 +vt 0.191301 0.198903 +vt 0.194679 0.195525 +vt 0.194679 0.185346 +vt 0.194789 0.184514 +vt 0.195127 0.183698 +vt 0.195664 0.182997 +vt 0.196365 0.182459 +vt 0.197182 0.182121 +vt 0.160895 0.198903 +vt 0.052787 0.391468 +vt 0.056166 0.394846 +vt 0.225084 0.394848 +vt 0.262247 0.421875 +vt 0.019003 0.421872 +vt 0.015625 0.418494 +vt 0.052787 0.202280 +vt 0.015625 0.175124 +vt 0.019003 0.171875 +vt 0.032517 0.171875 +vt 0.019003 0.171875 +vt 0.015625 0.175124 +vt 0.052787 0.202280 +vt 0.032517 0.171875 +vt 0.086123 0.183697 +vt 0.086461 0.184513 +vt 0.086571 0.185345 +vt 0.086571 0.195524 +vt 0.089949 0.198902 +vt 0.120355 0.198903 +vt 0.084068 0.182120 +vt 0.084885 0.182458 +vt 0.085586 0.182996 +vt 0.198933 0.182121 +vt 0.199750 0.182459 +vt 0.200450 0.182997 +vt 0.200988 0.183698 +vt 0.201326 0.184514 +vt 0.201436 0.185346 +vt 0.201436 0.195525 +vt 0.204814 0.198904 +vt 0.084885 0.182458 +vt 0.084068 0.182120 +vt 0.120355 0.198903 +vt 0.089949 0.198902 +vt 0.086571 0.195524 +vt 0.086571 0.185345 +vt 0.086461 0.184513 +vt 0.086123 0.183697 +vt 0.085586 0.182996 +vt 0.162500 0.766132 +vt 0.162500 0.760997 +vt 0.157857 0.757618 +vt 0.092850 0.757618 +vt 0.091792 0.757517 +vt 0.090807 0.757220 +vt 0.089961 0.756747 +vt 0.089311 0.756132 +vt 0.088903 0.755415 +vt 0.088764 0.754645 +vt 0.088903 0.753876 +vt 0.089311 0.753159 +vt 0.062500 0.735726 +vt 0.062500 0.984375 +vt 0.086238 0.984375 +vt 0.015627 0.752543 +vt 0.015627 0.753159 +vt 0.031250 0.753159 +vt 0.031250 0.752543 +vt 0.149893 0.937500 +vt 0.125000 0.937500 +vt 0.125000 0.921875 +vt 0.149893 0.921875 +vt 0.125000 0.937499 +vt 0.203574 0.937498 +vt 0.203574 0.921875 +vt 0.125000 0.921875 +vt 0.205522 0.937498 +vt 0.225000 0.937498 +vt 0.225000 0.921875 +vt 0.205522 0.921875 +vt 0.015627 0.737753 +vt 0.015627 0.748294 +vt 0.031250 0.748294 +vt 0.031250 0.737753 +vt 0.015627 0.751672 +vt 0.031250 0.751672 +vt 0.225000 0.937498 +vt 0.156828 0.937499 +vt 0.156828 0.921875 +vt 0.225000 0.921875 +vt 0.015627 0.751672 +vt 0.015627 0.751774 +vt 0.031250 0.751774 +vt 0.031250 0.751672 +vt 0.015627 0.753876 +vt 0.015627 0.754645 +vt 0.031250 0.754645 +vt 0.031250 0.753876 +vt 0.156828 0.937499 +vt 0.225000 0.937498 +vt 0.225000 0.921875 +vt 0.156828 0.921875 +vt 0.015627 0.755415 +vt 0.031250 0.755415 +vt 0.015627 0.756132 +vt 0.031250 0.756132 +vt 0.015627 0.756747 +vt 0.031250 0.756747 +vt 0.015627 0.757220 +vt 0.031250 0.757220 +vt 0.015627 0.757517 +vt 0.031250 0.757517 +vt 0.015627 0.757618 +vt 0.031250 0.757618 +vt 0.015627 0.757618 +vt 0.015627 0.760997 +vt 0.031250 0.760997 +vt 0.031250 0.757618 +vt 0.015627 0.766132 +vt 0.031250 0.766132 +vt 0.015625 0.984375 +vt 0.031250 0.984375 +vt 0.015627 0.734375 +vt 0.031250 0.734375 +vt 0.015627 0.752071 +vt 0.031250 0.752071 +vt 0.091792 0.751774 +vt 0.090807 0.752071 +vt 0.089961 0.752543 +vt 0.089311 0.753159 +vt 0.062500 0.735726 +vt 0.137426 0.735726 +vt 0.157857 0.751672 +vt 0.092850 0.751672 +vt 0.137426 0.735726 +vt 0.089961 0.752543 +vt 0.090807 0.752071 +vt 0.091792 0.751774 +vt 0.092850 0.751672 +vt 0.157857 0.751672 +vt 0.162500 0.748294 +vt 0.139283 0.734375 +vt 0.157857 0.734375 +vt 0.162500 0.737753 +vt 0.157857 0.734375 +vt 0.139283 0.734375 +vt 0.162500 0.748294 +vt 0.162500 0.737753 +vt 0.088903 0.753876 +vt 0.088764 0.754645 +vt 0.088903 0.755415 +vt 0.089311 0.756132 +vt 0.089961 0.756747 +vt 0.090807 0.757220 +vt 0.091792 0.757517 +vt 0.092850 0.757618 +vt 0.157857 0.757618 +vt 0.162500 0.760997 +vt 0.162500 0.766132 +vt 0.086238 0.984375 +vt 0.062500 0.984375 +vt 0.162500 0.766132 +vt 0.162500 0.760997 +vt 0.157857 0.757618 +vt 0.092850 0.757618 +vt 0.091792 0.757517 +vt 0.090807 0.757220 +vt 0.089961 0.756747 +vt 0.089311 0.756132 +vt 0.088903 0.755415 +vt 0.088764 0.754645 +vt 0.088903 0.753876 +vt 0.089311 0.753159 +vt 0.062500 0.735726 +vt 0.062500 0.984375 +vt 0.086238 0.984375 +vt 0.015627 0.752543 +vt 0.015627 0.753159 +vt 0.031250 0.753159 +vt 0.031250 0.752543 +vt 0.149893 0.937500 +vt 0.125000 0.937500 +vt 0.125000 0.921875 +vt 0.149893 0.921875 +vt 0.125000 0.937499 +vt 0.203574 0.937498 +vt 0.203574 0.921875 +vt 0.125000 0.921875 +vt 0.205522 0.937498 +vt 0.225000 0.937498 +vt 0.225000 0.921875 +vt 0.205522 0.921875 +vt 0.015627 0.737753 +vt 0.015627 0.748294 +vt 0.031250 0.748294 +vt 0.031250 0.737753 +vt 0.015627 0.751672 +vt 0.031250 0.751672 +vt 0.225000 0.937498 +vt 0.156828 0.937499 +vt 0.156828 0.921875 +vt 0.225000 0.921875 +vt 0.015627 0.751672 +vt 0.015627 0.751774 +vt 0.031250 0.751774 +vt 0.031250 0.751672 +vt 0.015627 0.753876 +vt 0.015627 0.754645 +vt 0.031250 0.754645 +vt 0.031250 0.753876 +vt 0.156828 0.937499 +vt 0.225000 0.937498 +vt 0.225000 0.921875 +vt 0.156828 0.921875 +vt 0.015627 0.755415 +vt 0.031250 0.755415 +vt 0.015627 0.756132 +vt 0.031250 0.756132 +vt 0.015627 0.756747 +vt 0.031250 0.756747 +vt 0.015627 0.757220 +vt 0.031250 0.757220 +vt 0.015627 0.757517 +vt 0.031250 0.757517 +vt 0.015627 0.757618 +vt 0.031250 0.757618 +vt 0.015627 0.757618 +vt 0.015627 0.760997 +vt 0.031250 0.760997 +vt 0.031250 0.757618 +vt 0.015627 0.766132 +vt 0.031250 0.766132 +vt 0.015625 0.984375 +vt 0.031250 0.984375 +vt 0.015627 0.734375 +vt 0.031250 0.734375 +vt 0.015627 0.752071 +vt 0.031250 0.752071 +vt 0.091792 0.751774 +vt 0.090807 0.752071 +vt 0.089961 0.752543 +vt 0.089311 0.753159 +vt 0.062500 0.735726 +vt 0.137426 0.735726 +vt 0.157857 0.751672 +vt 0.092850 0.751672 +vt 0.137426 0.735726 +vt 0.089961 0.752543 +vt 0.090807 0.752071 +vt 0.091792 0.751774 +vt 0.092850 0.751672 +vt 0.157857 0.751672 +vt 0.162500 0.748294 +vt 0.139283 0.734375 +vt 0.157857 0.734375 +vt 0.162500 0.737753 +vt 0.157857 0.734375 +vt 0.139283 0.734375 +vt 0.162500 0.748294 +vt 0.162500 0.737753 +vt 0.088903 0.753876 +vt 0.088764 0.754645 +vt 0.088903 0.755415 +vt 0.089311 0.756132 +vt 0.089961 0.756747 +vt 0.090807 0.757220 +vt 0.091792 0.757517 +vt 0.092850 0.757618 +vt 0.157857 0.757618 +vt 0.162500 0.760997 +vt 0.162500 0.766132 +vt 0.086238 0.984375 +vt 0.062500 0.984375 +vt 0.495440 0.338788 +vt 0.495440 0.362148 +vt 0.485749 0.362148 +vt 0.485749 0.338788 +vt 0.474060 0.331914 +vt 0.485749 0.343893 +vt 0.485749 0.346372 +vt 0.482927 0.349263 +vt 0.478897 0.349263 +vt 0.472850 0.343067 +vt 0.474870 0.340998 +vt 0.466002 0.331910 +vt 0.482121 0.315392 +vt 0.479300 0.312500 +vt 0.483330 0.312500 +vt 0.485749 0.314978 +vt 0.485749 0.319935 +vt 0.487459 0.337035 +vt 0.487459 0.327980 +vt 0.494015 0.321263 +vt 0.494300 0.321263 +vt 0.494300 0.312500 +vt 0.497150 0.312500 +vt 0.497150 0.337035 +vt 0.464701 0.360986 +vt 0.464701 0.351055 +vt 0.465271 0.350471 +vt 0.465271 0.363907 +vt 0.461851 0.363907 +vt 0.461851 0.360986 +vt 0.482818 0.363283 +vt 0.485668 0.366204 +vt 0.476833 0.366204 +vt 0.475123 0.364451 +vt 0.475123 0.363283 +vt 0.497150 0.338788 +vt 0.485749 0.338788 +vt 0.498290 0.338788 +vt 0.498290 0.342292 +vt 0.495440 0.342293 +vt 0.495440 0.338788 +vt 0.498290 0.359233 +vt 0.495440 0.359233 +vt 0.475123 0.353936 +vt 0.479683 0.353936 +vt 0.479683 0.363283 +vt 0.479683 0.349263 +vt 0.475123 0.349263 +vt 0.461286 0.363907 +vt 0.464136 0.363907 +vt 0.464136 0.366828 +vt 0.461286 0.366828 +vt 0.460710 0.360986 +vt 0.460710 0.351055 +vt 0.461286 0.370917 +vt 0.458436 0.373838 +vt 0.458430 0.373838 +vt 0.458430 0.364199 +vt 0.461286 0.364199 +vt 0.461286 0.372669 +vt 0.461286 0.370917 +vt 0.464136 0.370917 +vt 0.464136 0.372669 +vt 0.458430 0.363907 +vt 0.461286 0.363907 +vt 0.465271 0.365075 +vt 0.465271 0.341714 +vt 0.465271 0.341708 +vt 0.458430 0.363907 +vt 0.458430 0.360986 +vt 0.500000 0.329441 +vt 0.497150 0.329441 +vt 0.497150 0.312500 +vt 0.500000 0.312500 +vt 0.479683 0.363277 +vt 0.482818 0.363277 +vt 0.466002 0.358610 +vt 0.475123 0.349263 +vt 0.475123 0.372630 +vt 0.466002 0.363283 +vt 0.485749 0.365361 +vt 0.485749 0.362148 +vt 0.495440 0.362148 +vt 0.495440 0.375000 +vt 0.495155 0.375000 +vt 0.466002 0.315421 +vt 0.466002 0.319510 +vt 0.464292 0.321263 +vt 0.447761 0.321263 +vt 0.447761 0.338203 +vt 0.444340 0.341708 +vt 0.440920 0.341708 +vt 0.437500 0.338203 +vt 0.437500 0.314253 +vt 0.439210 0.312500 +vt 0.463152 0.312500 +vt 0.460711 0.341708 +vt 0.465271 0.341708 +vt 0.412990 0.284722 +vt 0.411772 0.284722 +vt 0.411772 0.277006 +vt 0.414988 0.280093 +vt 0.394467 0.250000 +vt 0.398687 0.253574 +vt 0.398900 0.256841 +vt 0.384537 0.272462 +vt 0.398403 0.284204 +vt 0.398900 0.291828 +vt 0.397765 0.291896 +vt 0.377267 0.274538 +vt 0.375000 0.265342 +vt 0.388793 0.250340 +vt 0.379023 0.291898 +vt 0.383051 0.291896 +vt 0.383051 0.296919 +vt 0.379023 0.296921 +vt 0.375003 0.299613 +vt 0.375000 0.297297 +vt 0.379020 0.297299 +vt 0.379023 0.299615 +vt 0.431872 0.300154 +vt 0.427852 0.300154 +vt 0.427852 0.279321 +vt 0.431872 0.279321 +vt 0.437500 0.253858 +vt 0.433480 0.253858 +vt 0.433480 0.250000 +vt 0.437500 0.250000 +vt 0.427852 0.273148 +vt 0.427852 0.261188 +vt 0.433078 0.256173 +vt 0.433480 0.256173 +vt 0.437500 0.273865 +vt 0.436282 0.274691 +vt 0.426244 0.274691 +vt 0.408556 0.296685 +vt 0.404528 0.296685 +vt 0.404528 0.284726 +vt 0.408556 0.284726 +vt 0.411772 0.250000 +vt 0.424636 0.250000 +vt 0.424636 0.250772 +vt 0.411772 0.250772 +vt 0.408628 0.279398 +vt 0.411768 0.282409 +vt 0.411772 0.284726 +vt 0.398908 0.284724 +vt 0.398900 0.279320 +vt 0.408551 0.253866 +vt 0.408551 0.250000 +vt 0.410162 0.250001 +vt 0.411772 0.251545 +vt 0.383051 0.297305 +vt 0.379023 0.297307 +vt 0.375003 0.291896 +vt 0.379023 0.291898 +vt 0.424636 0.279321 +vt 0.427852 0.282407 +vt 0.427852 0.311728 +vt 0.427048 0.312500 +vt 0.424636 0.310185 +vt 0.404528 0.289741 +vt 0.404528 0.301701 +vt 0.398900 0.301701 +vt 0.398900 0.284726 +vt 0.399302 0.284726 +vt 0.434284 0.279321 +vt 0.424636 0.279321 +vt 0.424636 0.276235 +vt 0.398902 0.261573 +vt 0.402922 0.261573 +vt 0.402923 0.253865 +vt 0.423832 0.284722 +vt 0.423832 0.305556 +vt 0.421420 0.307870 +vt 0.415792 0.307870 +vt 0.411772 0.304012 +vt 0.411772 0.301697 +vt 0.415800 0.301697 +vt 0.415800 0.284722 +vt 0.412990 0.347222 +vt 0.411772 0.347222 +vt 0.411772 0.339506 +vt 0.414988 0.342593 +vt 0.394467 0.312500 +vt 0.398687 0.316074 +vt 0.398900 0.319341 +vt 0.384537 0.334962 +vt 0.398403 0.346704 +vt 0.398900 0.354328 +vt 0.397765 0.354396 +vt 0.377267 0.337039 +vt 0.375000 0.327842 +vt 0.388793 0.312840 +vt 0.379023 0.354398 +vt 0.383051 0.354396 +vt 0.383051 0.359419 +vt 0.379023 0.359421 +vt 0.375003 0.362113 +vt 0.375000 0.359797 +vt 0.379020 0.359799 +vt 0.379023 0.362115 +vt 0.431872 0.362654 +vt 0.427852 0.362654 +vt 0.427852 0.341821 +vt 0.431872 0.341821 +vt 0.437500 0.316358 +vt 0.433480 0.316358 +vt 0.433480 0.312500 +vt 0.437500 0.312500 +vt 0.427852 0.335648 +vt 0.427852 0.323688 +vt 0.433078 0.318673 +vt 0.433480 0.318673 +vt 0.437500 0.336365 +vt 0.436282 0.337191 +vt 0.426244 0.337191 +vt 0.408556 0.359185 +vt 0.404528 0.359185 +vt 0.404528 0.347226 +vt 0.408556 0.347226 +vt 0.411772 0.312500 +vt 0.424636 0.312500 +vt 0.424636 0.313272 +vt 0.411772 0.313272 +vt 0.408628 0.341898 +vt 0.411768 0.344909 +vt 0.411772 0.347226 +vt 0.398908 0.347224 +vt 0.398900 0.341820 +vt 0.408551 0.316366 +vt 0.408551 0.312500 +vt 0.410162 0.312501 +vt 0.411772 0.314045 +vt 0.383051 0.359805 +vt 0.379023 0.359807 +vt 0.375003 0.354396 +vt 0.379023 0.354398 +vt 0.424636 0.341821 +vt 0.427852 0.344907 +vt 0.427852 0.374228 +vt 0.427048 0.375000 +vt 0.424636 0.372685 +vt 0.404528 0.352241 +vt 0.404528 0.364201 +vt 0.398900 0.364201 +vt 0.398900 0.347226 +vt 0.399302 0.347226 +vt 0.434284 0.341821 +vt 0.424636 0.341821 +vt 0.424636 0.338735 +vt 0.398902 0.324073 +vt 0.402922 0.324074 +vt 0.402923 0.316365 +vt 0.423832 0.347222 +vt 0.423832 0.368056 +vt 0.421420 0.370370 +vt 0.415792 0.370370 +vt 0.411772 0.366512 +vt 0.411772 0.364197 +vt 0.415800 0.364197 +vt 0.415800 0.347222 +vt 0.370440 0.338787 +vt 0.370440 0.362148 +vt 0.360749 0.362148 +vt 0.360749 0.338787 +vt 0.349060 0.331914 +vt 0.360749 0.343893 +vt 0.360749 0.346371 +vt 0.357927 0.349263 +vt 0.353897 0.349263 +vt 0.347850 0.343067 +vt 0.349870 0.340997 +vt 0.341002 0.331910 +vt 0.357121 0.315391 +vt 0.354300 0.312500 +vt 0.358330 0.312500 +vt 0.360749 0.314978 +vt 0.360749 0.319935 +vt 0.362459 0.337035 +vt 0.362459 0.327980 +vt 0.369015 0.321262 +vt 0.369300 0.321262 +vt 0.369300 0.312500 +vt 0.372150 0.312500 +vt 0.372150 0.337035 +vt 0.339701 0.360986 +vt 0.339701 0.351055 +vt 0.340271 0.350471 +vt 0.340271 0.363907 +vt 0.336851 0.363907 +vt 0.336851 0.360986 +vt 0.357818 0.363283 +vt 0.360668 0.366204 +vt 0.351833 0.366204 +vt 0.350123 0.364451 +vt 0.350123 0.363283 +vt 0.372150 0.338787 +vt 0.360749 0.338787 +vt 0.373290 0.338787 +vt 0.373290 0.342292 +vt 0.370440 0.342292 +vt 0.370440 0.338787 +vt 0.373290 0.359233 +vt 0.370440 0.359233 +vt 0.350123 0.353936 +vt 0.354683 0.353936 +vt 0.354683 0.363283 +vt 0.354683 0.349263 +vt 0.350123 0.349263 +vt 0.336286 0.363907 +vt 0.339136 0.363907 +vt 0.339136 0.366828 +vt 0.336286 0.366828 +vt 0.335710 0.360986 +vt 0.335710 0.351055 +vt 0.336286 0.370917 +vt 0.333436 0.373838 +vt 0.333430 0.373838 +vt 0.333430 0.364199 +vt 0.336286 0.364199 +vt 0.336286 0.372669 +vt 0.336286 0.370917 +vt 0.339136 0.370917 +vt 0.339136 0.372669 +vt 0.333430 0.363907 +vt 0.336286 0.363907 +vt 0.340271 0.365075 +vt 0.340271 0.341714 +vt 0.340271 0.341708 +vt 0.333430 0.363907 +vt 0.333430 0.360986 +vt 0.375000 0.329441 +vt 0.372150 0.329441 +vt 0.372150 0.312500 +vt 0.375000 0.312500 +vt 0.354683 0.363277 +vt 0.357818 0.363277 +vt 0.341002 0.358610 +vt 0.350123 0.349263 +vt 0.350123 0.372630 +vt 0.341002 0.363283 +vt 0.360749 0.365361 +vt 0.360749 0.362148 +vt 0.370440 0.362148 +vt 0.370440 0.375000 +vt 0.370155 0.375000 +vt 0.341002 0.315421 +vt 0.341002 0.319510 +vt 0.339292 0.321263 +vt 0.322761 0.321262 +vt 0.322761 0.338203 +vt 0.319340 0.341708 +vt 0.315920 0.341708 +vt 0.312500 0.338203 +vt 0.312500 0.314252 +vt 0.314210 0.312500 +vt 0.338152 0.312500 +vt 0.335711 0.341708 +vt 0.340271 0.341708 +vt 0.483174 0.284682 +vt 0.484375 0.296875 +vt 0.483174 0.309068 +vt 0.479618 0.320793 +vt 0.473842 0.331598 +vt 0.466069 0.341069 +vt 0.456598 0.348842 +vt 0.445793 0.354617 +vt 0.434068 0.358174 +vt 0.421875 0.359375 +vt 0.421875 0.317708 +vt 0.425939 0.317308 +vt 0.429848 0.316122 +vt 0.433449 0.314197 +vt 0.436606 0.311606 +vt 0.439197 0.308449 +vt 0.441123 0.304847 +vt 0.442308 0.300939 +vt 0.442708 0.296875 +vt 0.442308 0.292811 +vt 0.441123 0.288902 +vt 0.439197 0.285301 +vt 0.436606 0.282144 +vt 0.433449 0.279553 +vt 0.429848 0.277627 +vt 0.425939 0.276442 +vt 0.421875 0.276042 +vt 0.421875 0.234375 +vt 0.434068 0.235576 +vt 0.445793 0.239133 +vt 0.456598 0.244908 +vt 0.466069 0.252681 +vt 0.473842 0.262152 +vt 0.479617 0.272957 +vt 0.483174 0.284682 +vt 0.479617 0.272957 +vt 0.473842 0.262152 +vt 0.466069 0.252681 +vt 0.456598 0.244908 +vt 0.445793 0.239133 +vt 0.434068 0.235576 +vt 0.421875 0.234375 +vt 0.421875 0.272150 +vt 0.426699 0.272625 +vt 0.431337 0.274032 +vt 0.435611 0.276317 +vt 0.439358 0.279392 +vt 0.442433 0.283139 +vt 0.444718 0.287413 +vt 0.446125 0.292051 +vt 0.446600 0.296875 +vt 0.446125 0.301698 +vt 0.444718 0.306337 +vt 0.442433 0.310611 +vt 0.439358 0.314358 +vt 0.435611 0.317433 +vt 0.431337 0.319717 +vt 0.426699 0.321124 +vt 0.421875 0.321599 +vt 0.421875 0.359375 +vt 0.434068 0.358174 +vt 0.445793 0.354617 +vt 0.456598 0.348842 +vt 0.466069 0.341069 +vt 0.473842 0.331598 +vt 0.479618 0.320793 +vt 0.483174 0.309068 +vt 0.484375 0.296875 +vt 0.484375 0.296875 +vt 0.483174 0.284682 +vt 0.479617 0.272957 +vt 0.473842 0.262152 +vt 0.466069 0.252681 +vt 0.456598 0.244908 +vt 0.445793 0.239133 +vt 0.434068 0.235576 +vt 0.421875 0.234375 +vt 0.421875 0.276042 +vt 0.425939 0.276442 +vt 0.429848 0.277627 +vt 0.433449 0.279553 +vt 0.436606 0.282144 +vt 0.439197 0.285301 +vt 0.441123 0.288902 +vt 0.442308 0.292811 +vt 0.442708 0.296875 +vt 0.442308 0.300939 +vt 0.441123 0.304847 +vt 0.439197 0.308449 +vt 0.436606 0.311606 +vt 0.433449 0.314197 +vt 0.429848 0.316122 +vt 0.425939 0.317308 +vt 0.421875 0.317708 +vt 0.421875 0.359375 +vt 0.434068 0.358174 +vt 0.445793 0.354617 +vt 0.456598 0.348842 +vt 0.466069 0.341069 +vt 0.473842 0.331598 +vt 0.479618 0.320793 +vt 0.483174 0.309068 +vt 0.484375 0.296875 +vt 0.483174 0.309068 +vt 0.479618 0.320793 +vt 0.473842 0.331598 +vt 0.466069 0.341069 +vt 0.456598 0.348842 +vt 0.445793 0.354617 +vt 0.434068 0.358174 +vt 0.421875 0.359375 +vt 0.421875 0.321599 +vt 0.426699 0.321124 +vt 0.431337 0.319717 +vt 0.435611 0.317433 +vt 0.439358 0.314358 +vt 0.442433 0.310611 +vt 0.444718 0.306337 +vt 0.446125 0.301698 +vt 0.446600 0.296875 +vt 0.446125 0.292051 +vt 0.444718 0.287413 +vt 0.442433 0.283139 +vt 0.439358 0.279392 +vt 0.435611 0.276317 +vt 0.431337 0.274032 +vt 0.426699 0.272625 +vt 0.421875 0.272150 +vt 0.421875 0.234375 +vt 0.434068 0.235576 +vt 0.445793 0.239133 +vt 0.456598 0.244908 +vt 0.466069 0.252681 +vt 0.473842 0.262152 +vt 0.479617 0.272957 +vt 0.483174 0.284682 +vt 0.417051 0.272625 +vt 0.412413 0.274032 +vt 0.408139 0.276317 +vt 0.404392 0.279392 +vt 0.401317 0.283139 +vt 0.399032 0.287413 +vt 0.397626 0.292051 +vt 0.397150 0.296875 +vt 0.397626 0.301698 +vt 0.399032 0.306337 +vt 0.401317 0.310611 +vt 0.404392 0.314358 +vt 0.408139 0.317433 +vt 0.412413 0.319717 +vt 0.417051 0.321124 +vt 0.409682 0.358174 +vt 0.397957 0.354617 +vt 0.387152 0.348842 +vt 0.377681 0.341069 +vt 0.369908 0.331598 +vt 0.364133 0.320793 +vt 0.360576 0.309068 +vt 0.359375 0.296875 +vt 0.360576 0.284682 +vt 0.364133 0.272957 +vt 0.369908 0.262152 +vt 0.377681 0.252681 +vt 0.387152 0.244908 +vt 0.397957 0.239133 +vt 0.409682 0.235576 +vt 0.417811 0.276442 +vt 0.413902 0.277627 +vt 0.410301 0.279553 +vt 0.407144 0.282144 +vt 0.404553 0.285301 +vt 0.402628 0.288902 +vt 0.401442 0.292811 +vt 0.401042 0.296875 +vt 0.401442 0.300939 +vt 0.402628 0.304848 +vt 0.404553 0.308449 +vt 0.407144 0.311606 +vt 0.410301 0.314197 +vt 0.413902 0.316122 +vt 0.417811 0.317308 +vt 0.409682 0.358174 +vt 0.397957 0.354617 +vt 0.387152 0.348842 +vt 0.377681 0.341069 +vt 0.369908 0.331598 +vt 0.364133 0.320793 +vt 0.360576 0.309068 +vt 0.359375 0.296875 +vt 0.360576 0.284682 +vt 0.364133 0.272957 +vt 0.369908 0.262152 +vt 0.377681 0.252681 +vt 0.387152 0.244908 +vt 0.397957 0.239133 +vt 0.409682 0.235576 +vt 0.417051 0.321124 +vt 0.412413 0.319717 +vt 0.408139 0.317433 +vt 0.404392 0.314358 +vt 0.401317 0.310611 +vt 0.399032 0.306337 +vt 0.397626 0.301698 +vt 0.397150 0.296875 +vt 0.397626 0.292051 +vt 0.399032 0.287413 +vt 0.401317 0.283139 +vt 0.404392 0.279392 +vt 0.408139 0.276317 +vt 0.412413 0.274032 +vt 0.417051 0.272625 +vt 0.409682 0.235576 +vt 0.397957 0.239133 +vt 0.387152 0.244908 +vt 0.377681 0.252681 +vt 0.369908 0.262152 +vt 0.364133 0.272957 +vt 0.360576 0.284682 +vt 0.359375 0.296875 +vt 0.360576 0.309068 +vt 0.364133 0.320793 +vt 0.369908 0.331598 +vt 0.377681 0.341069 +vt 0.387152 0.348842 +vt 0.397957 0.354617 +vt 0.409682 0.358174 +vt 0.417811 0.317308 +vt 0.413902 0.316122 +vt 0.410301 0.314197 +vt 0.407144 0.311606 +vt 0.404553 0.308449 +vt 0.402628 0.304848 +vt 0.401442 0.300939 +vt 0.401042 0.296875 +vt 0.401442 0.292811 +vt 0.402628 0.288902 +vt 0.404553 0.285301 +vt 0.407144 0.282144 +vt 0.410301 0.279553 +vt 0.413902 0.277627 +vt 0.417811 0.276442 +vt 0.409682 0.235576 +vt 0.397957 0.239133 +vt 0.387152 0.244908 +vt 0.377681 0.252681 +vt 0.369908 0.262152 +vt 0.364133 0.272957 +vt 0.360576 0.284682 +vt 0.359375 0.296875 +vt 0.360576 0.309068 +vt 0.364133 0.320793 +vt 0.369908 0.331598 +vt 0.377681 0.341069 +vt 0.387152 0.348842 +vt 0.397957 0.354617 +vt 0.409682 0.358174 +vt 0.512500 0.514256 +vt 0.495057 0.514256 +vt 0.495057 0.487500 +vt 0.512500 0.487500 +vt 0.477385 0.520174 +vt 0.494827 0.520183 +vt 0.495053 0.664231 +vt 0.477611 0.664222 +vt 0.512500 0.559357 +vt 0.512500 0.564707 +vt 0.495057 0.564707 +vt 0.495057 0.559357 +vt 0.477614 0.487500 +vt 0.366263 0.519892 +vt 0.369938 0.515742 +vt 0.386221 0.675899 +vt 0.343067 0.687500 +vt 0.316477 0.657017 +vt 0.342916 0.522181 +vt 0.349531 0.523401 +vt 0.358189 0.522788 +vt 0.512500 0.569234 +vt 0.495057 0.569234 +vt 0.495057 0.571877 +vt 0.512500 0.571877 +vt 0.459941 0.487500 +vt 0.477385 0.487500 +vt 0.477385 0.668275 +vt 0.459941 0.668275 +vt 0.512500 0.577327 +vt 0.495057 0.577327 +vt 0.495057 0.582459 +vt 0.512500 0.582459 +vt 0.495057 0.535749 +vt 0.495057 0.516943 +vt 0.512499 0.516954 +vt 0.512499 0.535760 +vt 0.512500 0.542001 +vt 0.512500 0.554529 +vt 0.495057 0.554529 +vt 0.495057 0.542001 +vt 0.498955 0.586077 +vt 0.498955 0.595823 +vt 0.505646 0.595823 +vt 0.505646 0.586077 +vt 0.218750 0.812500 +vt 0.216371 0.824459 +vt 0.209597 0.834597 +vt 0.199459 0.841371 +vt 0.187500 0.843750 +vt 0.175541 0.841371 +vt 0.165403 0.834597 +vt 0.158629 0.824459 +vt 0.156250 0.812500 +vt 0.158629 0.800541 +vt 0.165403 0.790403 +vt 0.175541 0.783629 +vt 0.187500 0.781250 +vt 0.199459 0.783629 +vt 0.209597 0.790403 +vt 0.216371 0.800541 +vt 0.512500 0.514256 +vt 0.512500 0.487500 +vt 0.495057 0.487500 +vt 0.495057 0.514256 +vt 0.477385 0.520174 +vt 0.477611 0.664222 +vt 0.495053 0.664231 +vt 0.494827 0.520183 +vt 0.512500 0.559357 +vt 0.495057 0.559357 +vt 0.495057 0.564707 +vt 0.512500 0.564707 +vt 0.477614 0.487500 +vt 0.459941 0.487500 +vt 0.459941 0.668275 +vt 0.477385 0.668275 +vt 0.477385 0.487500 +vt 0.495057 0.535749 +vt 0.512499 0.535760 +vt 0.512499 0.516954 +vt 0.495057 0.516943 +vt 0.512500 0.542001 +vt 0.495057 0.542001 +vt 0.495057 0.554529 +vt 0.512500 0.554529 +vt 0.218750 0.812500 +vt 0.216371 0.800541 +vt 0.209597 0.790403 +vt 0.199459 0.783629 +vt 0.187500 0.781250 +vt 0.175541 0.783629 +vt 0.165403 0.790403 +vt 0.158629 0.800541 +vt 0.156250 0.812500 +vt 0.158629 0.824459 +vt 0.165403 0.834597 +vt 0.175541 0.841371 +vt 0.187500 0.843750 +vt 0.199459 0.841371 +vt 0.209597 0.834597 +vt 0.216371 0.824459 +vt 0.477385 0.671815 +vt 0.459941 0.671815 +vt 0.512499 0.539359 +vt 0.495057 0.539349 +vt 0.512500 0.573710 +vt 0.495057 0.573710 +vt 0.495057 0.586077 +vt 0.512500 0.586077 +vt 0.512500 0.577327 +vt 0.512500 0.582459 +vt 0.495057 0.582459 +vt 0.495057 0.577327 +vt 0.495057 0.666381 +vt 0.477614 0.666372 +vt 0.498955 0.586077 +vt 0.498955 0.595823 +vt 0.495057 0.595823 +vt 0.495057 0.586077 +vt 0.509545 0.595823 +vt 0.509545 0.586077 +vt 0.495057 0.556662 +vt 0.512500 0.556662 +vt 0.505646 0.586077 +vt 0.505646 0.595823 +vt 0.495057 0.556662 +vt 0.512500 0.556662 +vt 0.512500 0.569235 +vt 0.495057 0.569234 +vt 0.495057 0.539359 +vt 0.512500 0.539359 +vt 0.512499 0.514267 +vt 0.495057 0.514256 +vt 0.495057 0.573710 +vt 0.512500 0.573710 +vt 0.512500 0.571877 +vt 0.495057 0.571877 +vt 0.386279 0.664060 +vt 0.390197 0.517983 +vt 0.416636 0.652819 +vt 0.459941 0.499102 +vt 0.459941 0.683882 +vt 0.443659 0.659258 +vt 0.446104 0.683400 +vt 0.440909 0.678098 +vt 0.454220 0.685805 +vt 0.336367 0.518866 +vt 0.327081 0.507159 +vt 0.322002 0.506133 +vt 0.315998 0.507792 +vt 0.312558 0.510940 +vt 0.342916 0.522181 +vt 0.316477 0.657017 +vt 0.343067 0.687500 +vt 0.386221 0.675899 +vt 0.369938 0.515742 +vt 0.366263 0.519892 +vt 0.358189 0.522788 +vt 0.349531 0.523401 +vt 0.431909 0.652212 +vt 0.423252 0.651599 +vt 0.416788 0.487500 +vt 0.439984 0.655108 +vt 0.312558 0.510940 +vt 0.336367 0.518866 +vt 0.315998 0.507792 +vt 0.322002 0.506133 +vt 0.327081 0.507159 +vt 0.367188 0.496902 +vt 0.372384 0.491600 +vt 0.380499 0.489195 +vt 0.386221 0.491119 +vt 0.390197 0.517983 +vt 0.386279 0.664060 +vt 0.416636 0.652819 +vt 0.389719 0.667208 +vt 0.395723 0.668867 +vt 0.400802 0.667841 +vt 0.410088 0.656134 +vt 0.459941 0.683882 +vt 0.459941 0.499102 +vt 0.443659 0.659258 +vt 0.440909 0.678098 +vt 0.446104 0.683400 +vt 0.454220 0.685805 +vt 0.410088 0.656134 +vt 0.400802 0.667841 +vt 0.395723 0.668867 +vt 0.389719 0.667208 +vt 0.386221 0.491119 +vt 0.372384 0.491600 +vt 0.367188 0.496902 +vt 0.380499 0.489195 +vt 0.423252 0.651599 +vt 0.431909 0.652212 +vt 0.439984 0.655108 +vt 0.416788 0.487500 +vt 0.249991 0.781257 +vt 0.247613 0.793214 +vt 0.240840 0.803349 +vt 0.230703 0.810122 +vt 0.218745 0.812500 +vt 0.206789 0.810122 +vt 0.196652 0.803349 +vt 0.189879 0.793214 +vt 0.187500 0.781257 +vt 0.189879 0.769301 +vt 0.196652 0.759165 +vt 0.206789 0.752393 +vt 0.218746 0.750015 +vt 0.230703 0.752393 +vt 0.240840 0.759165 +vt 0.247613 0.769301 +vt 0.247613 0.793213 +vt 0.249991 0.781257 +vt 0.247613 0.769301 +vt 0.240840 0.759165 +vt 0.230703 0.752393 +vt 0.218746 0.750015 +vt 0.206789 0.752393 +vt 0.196652 0.759165 +vt 0.189879 0.769301 +vt 0.187500 0.781257 +vt 0.189879 0.793213 +vt 0.196652 0.803349 +vt 0.206789 0.810122 +vt 0.218746 0.812500 +vt 0.230703 0.810122 +vt 0.240840 0.803349 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.394804 0.394044 +vt 0.417696 0.394044 +vt 0.417696 0.418456 +vt 0.394804 0.418456 +vt 0.390625 0.328125 +vt 0.390625 0.387424 +vt 0.359375 0.387424 +vt 0.359375 0.328125 +vt 0.328125 0.328125 +vt 0.328125 0.387424 +vt 0.296875 0.387424 +vt 0.296875 0.328125 +vt 0.328125 0.296875 +vt 0.359375 0.296875 +vt 0.421875 0.328125 +vt 0.421875 0.387424 +vt 0.421875 0.390625 +vt 0.421875 0.421875 +vt 0.390625 0.421875 +vt 0.390625 0.390625 +vt 0.296875 0.859375 +vt 0.296875 0.984375 +vt 0.421875 0.984375 +vt 0.421875 0.859375 +vt 0.296875 0.859375 +vt 0.421875 0.859375 +vt 0.421875 0.984375 +vt 0.296875 0.984375 +vt 0.437500 0.859375 +vt 0.453125 0.859375 +vt 0.453125 0.984375 +vt 0.437500 0.984375 +vt 0.437500 0.984375 +vt 0.453125 0.984375 +vt 0.453125 0.859375 +vt 0.437500 0.859375 +vt 0.421875 0.828125 +vt 0.421875 0.843750 +vt 0.296875 0.843750 +vt 0.296875 0.828125 +vt 0.296875 0.828125 +vt 0.296875 0.843750 +vt 0.421875 0.843750 +vt 0.421875 0.828125 +vt 0.031250 0.281250 +vt 0.031250 0.265625 +vt 0.125000 0.265625 +vt 0.125000 0.281250 +vt 0.015943 0.420689 +vt 0.015625 0.419504 +vt 0.015625 0.299368 +vt 0.015943 0.298183 +vt 0.016811 0.297315 +vt 0.017998 0.296997 +vt 0.019204 0.296997 +vt 0.020390 0.297315 +vt 0.021259 0.298183 +vt 0.021577 0.299368 +vt 0.021577 0.320784 +vt 0.021577 0.398088 +vt 0.021577 0.419504 +vt 0.021259 0.420689 +vt 0.020390 0.421557 +vt 0.019204 0.421874 +vt 0.017998 0.421874 +vt 0.016811 0.421557 +vt 0.031250 0.281250 +vt 0.125000 0.281250 +vt 0.125000 0.265625 +vt 0.031250 0.265625 +vt 0.134658 0.320784 +vt 0.134658 0.398089 +vt 0.140610 0.299369 +vt 0.140610 0.419504 +vt 0.140292 0.420690 +vt 0.139424 0.421557 +vt 0.138237 0.421875 +vt 0.137031 0.421875 +vt 0.135845 0.421557 +vt 0.134976 0.420690 +vt 0.134658 0.419504 +vt 0.134658 0.299369 +vt 0.134976 0.298183 +vt 0.135845 0.297316 +vt 0.137031 0.296998 +vt 0.138237 0.296998 +vt 0.139424 0.297316 +vt 0.140292 0.298183 +vt 0.718750 0.984375 +vt 0.718750 0.859375 +vt 0.734375 0.859375 +vt 0.734375 0.984375 +vt 0.703125 0.984375 +vt 0.578125 0.984375 +vt 0.578125 0.859375 +vt 0.703125 0.859375 +vt 0.718750 0.859375 +vt 0.718750 0.984375 +vt 0.734375 0.984375 +vt 0.734375 0.859375 +vt 0.578125 0.828125 +vt 0.703125 0.828125 +vt 0.703125 0.843750 +vt 0.578125 0.843750 +vt 0.703125 0.828125 +vt 0.578125 0.828125 +vt 0.578125 0.843750 +vt 0.703125 0.843750 +vt 0.406250 0.375000 +vt 0.397097 0.375000 +vt 0.384153 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.354120 +vt 0.377349 0.349406 +vt 0.381804 0.345702 +vt 0.387474 0.343750 +vt 0.393776 0.343750 +vt 0.399446 0.345702 +vt 0.403901 0.349407 +vt 0.406250 0.354120 +vt 0.443972 0.375000 +vt 0.453125 0.375000 +vt 0.453125 0.354120 +vt 0.450777 0.349407 +vt 0.446321 0.345702 +vt 0.440651 0.343750 +vt 0.434349 0.343750 +vt 0.428679 0.345702 +vt 0.424224 0.349406 +vt 0.421875 0.354120 +vt 0.421875 0.375000 +vt 0.431028 0.375000 +vt 0.406250 0.375000 +vt 0.397097 0.375000 +vt 0.384153 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.354120 +vt 0.377349 0.349406 +vt 0.381804 0.345702 +vt 0.387474 0.343750 +vt 0.393776 0.343750 +vt 0.399446 0.345702 +vt 0.403901 0.349407 +vt 0.406250 0.354120 +vt 0.443972 0.375000 +vt 0.453125 0.375000 +vt 0.453125 0.354120 +vt 0.450777 0.349407 +vt 0.446321 0.345702 +vt 0.440651 0.343750 +vt 0.434349 0.343750 +vt 0.428679 0.345702 +vt 0.424224 0.349406 +vt 0.421875 0.354120 +vt 0.421875 0.375000 +vt 0.431028 0.375000 +vt 0.406250 0.375000 +vt 0.397097 0.375000 +vt 0.384153 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.354120 +vt 0.377349 0.349406 +vt 0.381804 0.345702 +vt 0.387474 0.343750 +vt 0.393776 0.343750 +vt 0.399446 0.345702 +vt 0.403901 0.349407 +vt 0.406250 0.354120 +vt 0.443972 0.375000 +vt 0.453125 0.375000 +vt 0.453125 0.354120 +vt 0.450777 0.349407 +vt 0.446321 0.345702 +vt 0.440651 0.343750 +vt 0.434349 0.343750 +vt 0.428679 0.345702 +vt 0.424224 0.349406 +vt 0.421875 0.354120 +vt 0.421875 0.375000 +vt 0.431028 0.375000 +vt 0.406250 0.375000 +vt 0.397097 0.375000 +vt 0.384153 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.354120 +vt 0.377349 0.349406 +vt 0.381804 0.345702 +vt 0.387474 0.343750 +vt 0.393776 0.343750 +vt 0.399446 0.345702 +vt 0.403901 0.349407 +vt 0.406250 0.354120 +vt 0.443972 0.375000 +vt 0.453125 0.375000 +vt 0.453125 0.354120 +vt 0.450777 0.349407 +vt 0.446321 0.345702 +vt 0.440651 0.343750 +vt 0.434349 0.343750 +vt 0.428679 0.345702 +vt 0.424224 0.349406 +vt 0.421875 0.354120 +vt 0.421875 0.375000 +vt 0.431028 0.375000 +vt 0.343750 0.218750 +vt 0.343750 0.281250 +vt 0.312500 0.281250 +vt 0.312500 0.218750 +vt 0.437500 0.218750 +vt 0.437500 0.281250 +vt 0.406250 0.281250 +vt 0.406250 0.218750 +vt 0.375000 0.281250 +vt 0.375000 0.218750 +vt 0.343750 0.187500 +vt 0.375000 0.187500 +vt 0.437500 0.312500 +vt 0.406250 0.312500 +vt 0.249991 0.781257 +vt 0.247613 0.793213 +vt 0.240839 0.803349 +vt 0.230703 0.810122 +vt 0.218745 0.812500 +vt 0.206789 0.810122 +vt 0.196652 0.803349 +vt 0.189879 0.793213 +vt 0.187500 0.781257 +vt 0.189879 0.769301 +vt 0.196652 0.759165 +vt 0.206789 0.752393 +vt 0.218746 0.750015 +vt 0.230703 0.752393 +vt 0.240839 0.759165 +vt 0.247613 0.769301 +vt 0.247613 0.793213 +vt 0.249991 0.781257 +vt 0.247613 0.769301 +vt 0.240840 0.759165 +vt 0.230703 0.752393 +vt 0.218746 0.750015 +vt 0.206789 0.752393 +vt 0.196652 0.759165 +vt 0.189879 0.769301 +vt 0.187500 0.781257 +vt 0.189879 0.793213 +vt 0.196652 0.803349 +vt 0.206789 0.810122 +vt 0.218746 0.812500 +vt 0.230703 0.810122 +vt 0.240840 0.803349 +vt 0.521365 0.347801 +vt 0.521365 0.320023 +vt 0.546875 0.320023 +vt 0.546875 0.347801 +vt 0.347895 0.394097 +vt 0.322385 0.394097 +vt 0.322385 0.320023 +vt 0.347895 0.320023 +vt 0.373406 0.320023 +vt 0.398916 0.320023 +vt 0.398916 0.394097 +vt 0.373406 0.394097 +vt 0.347895 0.394097 +vt 0.347895 0.320023 +vt 0.373406 0.320023 +vt 0.373406 0.394097 +vt 0.322385 0.320023 +vt 0.322385 0.421875 +vt 0.296875 0.421875 +vt 0.296875 0.320023 +vt 0.546875 0.320023 +vt 0.521365 0.320023 +vt 0.521365 0.171875 +vt 0.546875 0.171875 +vt 0.409120 0.320023 +vt 0.409120 0.171875 +vt 0.439732 0.245949 +vt 0.439732 0.320023 +vt 0.521365 0.171875 +vt 0.521365 0.245949 +vt 0.409120 0.320023 +vt 0.296875 0.320023 +vt 0.327487 0.245949 +vt 0.409120 0.245949 +vt 0.296875 0.171875 +vt 0.327487 0.171875 +vt 0.140625 0.953125 +vt 0.140625 0.968750 +vt 0.078125 0.968750 +vt 0.078125 0.953125 +vt 0.015625 0.968750 +vt 0.015625 0.953125 +vt 0.265625 0.953125 +vt 0.265625 0.968750 +vt 0.203125 0.968750 +vt 0.203125 0.953125 +vt 0.859375 0.984375 +vt 0.937500 0.984375 +vt 0.937500 0.906250 +vt 0.859375 0.906250 +vt 0.937500 0.859375 +vt 0.859375 0.859375 +vt 0.859375 0.781250 +vt 0.937500 0.781250 +vt 0.203125 0.921875 +vt 0.203125 0.937500 +vt 0.140625 0.937500 +vt 0.140625 0.921875 +vt 0.265625 0.921875 +vt 0.265625 0.937500 +vt 0.078125 0.921875 +vt 0.078125 0.937500 +vt 0.015625 0.937500 +vt 0.015625 0.921875 +vt 0.171875 0.546875 +vt 0.171875 0.625000 +vt 0.093750 0.625000 +vt 0.093750 0.546875 +vt 0.093750 0.625000 +vt 0.093750 0.703125 +vt 0.015625 0.703125 +vt 0.015625 0.625000 +vt 0.171875 0.625000 +vt 0.171875 0.703125 +vt 0.015625 0.625000 +vt 0.015625 0.546875 +vt 0.546875 0.343750 +vt 0.546875 0.359375 +vt 0.296875 0.359375 +vt 0.296875 0.343750 +vt 0.296875 0.390625 +vt 0.296875 0.375000 +vt 0.546875 0.375000 +vt 0.546875 0.390625 +vt 0.546875 0.406250 +vt 0.296875 0.406250 +vt 0.546875 0.343750 +vt 0.546875 0.359375 +vt 0.296875 0.359375 +vt 0.296875 0.343750 +vt 0.296875 0.390625 +vt 0.296875 0.375000 +vt 0.546875 0.375000 +vt 0.546875 0.390625 +vt 0.546875 0.406250 +vt 0.296875 0.406250 +vt 0.693479 0.655060 +vt 0.687500 0.656250 +vt 0.681521 0.655061 +vt 0.676452 0.651673 +vt 0.673064 0.646604 +vt 0.671875 0.640625 +vt 0.673064 0.634646 +vt 0.676452 0.629576 +vt 0.681521 0.626189 +vt 0.687500 0.625000 +vt 0.693479 0.626189 +vt 0.698549 0.629576 +vt 0.701936 0.634645 +vt 0.703125 0.640625 +vt 0.701936 0.646604 +vt 0.698549 0.651673 +vt 0.734375 0.656250 +vt 0.740354 0.655060 +vt 0.745424 0.651673 +vt 0.748811 0.646604 +vt 0.750000 0.640625 +vt 0.748811 0.634645 +vt 0.745424 0.629576 +vt 0.740354 0.626189 +vt 0.734375 0.625000 +vt 0.728396 0.626189 +vt 0.723327 0.629576 +vt 0.719939 0.634646 +vt 0.718750 0.640625 +vt 0.719939 0.646604 +vt 0.723327 0.651673 +vt 0.728396 0.655061 +vt 0.249991 0.781257 +vt 0.247613 0.793214 +vt 0.240840 0.803349 +vt 0.230703 0.810122 +vt 0.218745 0.812500 +vt 0.206789 0.810122 +vt 0.196652 0.803349 +vt 0.189879 0.793214 +vt 0.187500 0.781257 +vt 0.189879 0.769301 +vt 0.196652 0.759165 +vt 0.206789 0.752393 +vt 0.218746 0.750015 +vt 0.230703 0.752393 +vt 0.240840 0.759165 +vt 0.247613 0.769301 +vt 0.247613 0.793213 +vt 0.249991 0.781257 +vt 0.247613 0.769301 +vt 0.240840 0.759165 +vt 0.230703 0.752393 +vt 0.218746 0.750015 +vt 0.206789 0.752393 +vt 0.196652 0.759165 +vt 0.189879 0.769301 +vt 0.187500 0.781257 +vt 0.189879 0.793213 +vt 0.196652 0.803349 +vt 0.206789 0.810122 +vt 0.218746 0.812500 +vt 0.230703 0.810122 +vt 0.240840 0.803349 +vt 0.249991 0.781257 +vt 0.247613 0.793214 +vt 0.240840 0.803349 +vt 0.230703 0.810122 +vt 0.218745 0.812500 +vt 0.206789 0.810122 +vt 0.196652 0.803349 +vt 0.189879 0.793214 +vt 0.187500 0.781257 +vt 0.189879 0.769301 +vt 0.196652 0.759165 +vt 0.206789 0.752393 +vt 0.218746 0.750015 +vt 0.230703 0.752393 +vt 0.240840 0.759165 +vt 0.247613 0.769301 +vt 0.247613 0.793213 +vt 0.249991 0.781257 +vt 0.247613 0.769301 +vt 0.240840 0.759165 +vt 0.230703 0.752393 +vt 0.218746 0.750015 +vt 0.206789 0.752393 +vt 0.196652 0.759165 +vt 0.189879 0.769301 +vt 0.187500 0.781257 +vt 0.189879 0.793213 +vt 0.196652 0.803349 +vt 0.206789 0.810122 +vt 0.218746 0.812500 +vt 0.230703 0.810122 +vt 0.240840 0.803349 +vt 0.394804 0.394044 +vt 0.417696 0.394044 +vt 0.417696 0.418456 +vt 0.394804 0.418456 +vt 0.390625 0.328125 +vt 0.390625 0.387424 +vt 0.359375 0.387424 +vt 0.359375 0.328125 +vt 0.328125 0.328125 +vt 0.328125 0.387424 +vt 0.296875 0.387424 +vt 0.296875 0.328125 +vt 0.328125 0.296875 +vt 0.359375 0.296875 +vt 0.421875 0.328125 +vt 0.421875 0.387424 +vt 0.421875 0.390625 +vt 0.421875 0.421875 +vt 0.390625 0.421875 +vt 0.390625 0.390625 +vt 0.394804 0.394044 +vt 0.417696 0.394044 +vt 0.417696 0.418456 +vt 0.394804 0.418456 +vt 0.390625 0.328125 +vt 0.390625 0.387424 +vt 0.359375 0.387424 +vt 0.359375 0.328125 +vt 0.328125 0.328125 +vt 0.328125 0.387424 +vt 0.296875 0.387424 +vt 0.296875 0.328125 +vt 0.328125 0.296875 +vt 0.359375 0.296875 +vt 0.421875 0.328125 +vt 0.421875 0.387424 +vt 0.421875 0.390625 +vt 0.421875 0.421875 +vt 0.390625 0.421875 +vt 0.390625 0.390625 +vt 0.394804 0.394044 +vt 0.417696 0.394044 +vt 0.417696 0.418456 +vt 0.394804 0.418456 +vt 0.390625 0.328125 +vt 0.390625 0.387424 +vt 0.359375 0.387424 +vt 0.359375 0.328125 +vt 0.328125 0.328125 +vt 0.328125 0.387424 +vt 0.296875 0.387424 +vt 0.296875 0.328125 +vt 0.328125 0.296875 +vt 0.359375 0.296875 +vt 0.421875 0.328125 +vt 0.421875 0.387424 +vt 0.421875 0.390625 +vt 0.421875 0.421875 +vt 0.390625 0.421875 +vt 0.390625 0.390625 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.500000 0.300935 +vt 0.500000 0.343750 +vt 0.468750 0.343750 +vt 0.468750 0.300935 +vt 0.455836 0.290666 +vt 0.462293 0.292042 +vt 0.467020 0.295801 +vt 0.437500 0.343750 +vt 0.437500 0.300935 +vt 0.438077 0.295801 +vt 0.439652 0.285523 +vt 0.450414 0.290666 +vt 0.406250 0.343750 +vt 0.406250 0.300935 +vt 0.500000 0.375000 +vt 0.468750 0.375000 +vt 0.393336 0.290666 +vt 0.404098 0.285523 +vt 0.405673 0.295801 +vt 0.406250 0.300935 +vt 0.375000 0.343750 +vt 0.375000 0.300935 +vt 0.376730 0.295801 +vt 0.381457 0.292042 +vt 0.387914 0.290666 +vt 0.468750 0.295801 +vt 0.500000 0.295801 +vt 0.468750 0.290666 +vt 0.500000 0.290666 +vt 0.406250 0.258403 +vt 0.437500 0.258403 +vt 0.437500 0.266806 +vt 0.406250 0.266806 +vt 0.406250 0.273861 +vt 0.437500 0.273861 +vt 0.806239 0.557064 +vt 0.785488 0.569044 +vt 0.764737 0.557063 +vt 0.764737 0.533102 +vt 0.785488 0.521121 +vt 0.806239 0.533102 +vt 0.806239 0.557064 +vt 0.806239 0.533102 +vt 0.785488 0.521121 +vt 0.764737 0.533102 +vt 0.764737 0.557063 +vt 0.785488 0.569044 +vt 0.249991 0.781257 +vt 0.247613 0.793213 +vt 0.240840 0.803349 +vt 0.230703 0.810122 +vt 0.218745 0.812500 +vt 0.206789 0.810122 +vt 0.196652 0.803349 +vt 0.189879 0.793213 +vt 0.187500 0.781257 +vt 0.189879 0.769301 +vt 0.196652 0.759165 +vt 0.206789 0.752393 +vt 0.218746 0.750015 +vt 0.230703 0.752393 +vt 0.240840 0.759165 +vt 0.247613 0.769301 +vt 0.247613 0.793213 +vt 0.249991 0.781257 +vt 0.247613 0.769301 +vt 0.240840 0.759165 +vt 0.230703 0.752393 +vt 0.218746 0.750015 +vt 0.206789 0.752393 +vt 0.196652 0.759165 +vt 0.189879 0.769301 +vt 0.187500 0.781257 +vt 0.189879 0.793213 +vt 0.196652 0.803349 +vt 0.206789 0.810122 +vt 0.218746 0.812500 +vt 0.230703 0.810122 +vt 0.240840 0.803349 +vt 0.249991 0.781257 +vt 0.247613 0.793213 +vt 0.240840 0.803349 +vt 0.230703 0.810122 +vt 0.218745 0.812500 +vt 0.206789 0.810122 +vt 0.196652 0.803349 +vt 0.189879 0.793213 +vt 0.187500 0.781257 +vt 0.189879 0.769301 +vt 0.196652 0.759165 +vt 0.206789 0.752393 +vt 0.218746 0.750015 +vt 0.230703 0.752393 +vt 0.240840 0.759165 +vt 0.247613 0.769301 +vt 0.247613 0.793213 +vt 0.249991 0.781257 +vt 0.247613 0.769301 +vt 0.240840 0.759165 +vt 0.230703 0.752393 +vt 0.218746 0.750015 +vt 0.206789 0.752393 +vt 0.196652 0.759165 +vt 0.189879 0.769301 +vt 0.187500 0.781257 +vt 0.189879 0.793213 +vt 0.196652 0.803349 +vt 0.206789 0.810122 +vt 0.218746 0.812500 +vt 0.230703 0.810122 +vt 0.240840 0.803349 +vt 0.140625 0.953125 +vt 0.140625 0.968750 +vt 0.078125 0.968750 +vt 0.078125 0.953125 +vt 0.015625 0.968750 +vt 0.015625 0.953125 +vt 0.265625 0.953125 +vt 0.265625 0.968750 +vt 0.203125 0.968750 +vt 0.203125 0.953125 +vt 0.859375 0.984375 +vt 0.937500 0.984375 +vt 0.937500 0.906250 +vt 0.859375 0.906250 +vt 0.937500 0.859375 +vt 0.859375 0.859375 +vt 0.859375 0.781250 +vt 0.937500 0.781250 +vt 0.203125 0.921875 +vt 0.203125 0.937500 +vt 0.140625 0.937500 +vt 0.140625 0.921875 +vt 0.265625 0.921875 +vt 0.265625 0.937500 +vt 0.078125 0.921875 +vt 0.078125 0.937500 +vt 0.015625 0.937500 +vt 0.015625 0.921875 +vt 0.171875 0.546875 +vt 0.171875 0.625000 +vt 0.093750 0.625000 +vt 0.093750 0.546875 +vt 0.093750 0.625000 +vt 0.093750 0.703125 +vt 0.015625 0.703125 +vt 0.015625 0.625000 +vt 0.171875 0.625000 +vt 0.171875 0.703125 +vt 0.015625 0.625000 +vt 0.015625 0.546875 +vt 0.122613 0.918213 +vt 0.124991 0.906257 +vt 0.122613 0.894301 +vt 0.115840 0.884165 +vt 0.105703 0.877393 +vt 0.093746 0.875015 +vt 0.081789 0.877393 +vt 0.071652 0.884165 +vt 0.064879 0.894301 +vt 0.062500 0.906257 +vt 0.064879 0.918213 +vt 0.071652 0.928349 +vt 0.081789 0.935122 +vt 0.093746 0.937500 +vt 0.105703 0.935122 +vt 0.115840 0.928349 +vt 0.755979 0.545686 +vt 0.750000 0.546875 +vt 0.744021 0.545686 +vt 0.738952 0.542298 +vt 0.735564 0.537229 +vt 0.734375 0.531250 +vt 0.735564 0.525271 +vt 0.738952 0.520201 +vt 0.744021 0.516814 +vt 0.750000 0.515625 +vt 0.755979 0.516814 +vt 0.761049 0.520201 +vt 0.764436 0.525270 +vt 0.765625 0.531250 +vt 0.764436 0.537229 +vt 0.761049 0.542298 +vt 0.750000 0.546875 +vt 0.755979 0.545686 +vt 0.761049 0.542298 +vt 0.764436 0.537229 +vt 0.765625 0.531250 +vt 0.764436 0.525270 +vt 0.761049 0.520201 +vt 0.755979 0.516814 +vt 0.750000 0.515625 +vt 0.744021 0.516814 +vt 0.738952 0.520201 +vt 0.735564 0.525271 +vt 0.734375 0.531250 +vt 0.735564 0.537229 +vt 0.738952 0.542298 +vt 0.744021 0.545686 +vt 0.140625 0.953125 +vt 0.140625 0.968750 +vt 0.078125 0.968750 +vt 0.078125 0.953125 +vt 0.015625 0.968750 +vt 0.015625 0.953125 +vt 0.265625 0.953125 +vt 0.265625 0.968750 +vt 0.203125 0.968750 +vt 0.203125 0.953125 +vt 0.859375 0.984375 +vt 0.937500 0.984375 +vt 0.937500 0.906250 +vt 0.859375 0.906250 +vt 0.937500 0.859375 +vt 0.859375 0.859375 +vt 0.859375 0.781250 +vt 0.937500 0.781250 +vt 0.203125 0.921875 +vt 0.203125 0.937500 +vt 0.140625 0.937500 +vt 0.140625 0.921875 +vt 0.265625 0.921875 +vt 0.265625 0.937500 +vt 0.078125 0.921875 +vt 0.078125 0.937500 +vt 0.015625 0.937500 +vt 0.015625 0.921875 +vt 0.171875 0.546875 +vt 0.171875 0.625000 +vt 0.093750 0.625000 +vt 0.093750 0.546875 +vt 0.093750 0.625000 +vt 0.093750 0.703125 +vt 0.015625 0.703125 +vt 0.015625 0.625000 +vt 0.171875 0.625000 +vt 0.171875 0.703125 +vt 0.015625 0.625000 +vt 0.015625 0.546875 +vt 0.693479 0.655060 +vt 0.687500 0.656250 +vt 0.681521 0.655061 +vt 0.676452 0.651673 +vt 0.673064 0.646604 +vt 0.671875 0.640625 +vt 0.673064 0.634646 +vt 0.676452 0.629576 +vt 0.681521 0.626189 +vt 0.687500 0.625000 +vt 0.693479 0.626189 +vt 0.698549 0.629576 +vt 0.701936 0.634645 +vt 0.703125 0.640625 +vt 0.701936 0.646604 +vt 0.698549 0.651673 +vt 0.734375 0.656250 +vt 0.740354 0.655060 +vt 0.745424 0.651673 +vt 0.748811 0.646604 +vt 0.750000 0.640625 +vt 0.748811 0.634645 +vt 0.745424 0.629576 +vt 0.740354 0.626189 +vt 0.734375 0.625000 +vt 0.728396 0.626189 +vt 0.723327 0.629576 +vt 0.719939 0.634646 +vt 0.718750 0.640625 +vt 0.719939 0.646604 +vt 0.723327 0.651673 +vt 0.728396 0.655061 +vt 0.140625 0.953125 +vt 0.140625 0.968750 +vt 0.078125 0.968750 +vt 0.078125 0.953125 +vt 0.015625 0.968750 +vt 0.015625 0.953125 +vt 0.265625 0.953125 +vt 0.265625 0.968750 +vt 0.203125 0.968750 +vt 0.203125 0.953125 +vt 0.859375 0.984375 +vt 0.937500 0.984375 +vt 0.937500 0.906250 +vt 0.859375 0.906250 +vt 0.937500 0.859375 +vt 0.859375 0.859375 +vt 0.859375 0.781250 +vt 0.937500 0.781250 +vt 0.203125 0.921875 +vt 0.203125 0.937500 +vt 0.140625 0.937500 +vt 0.140625 0.921875 +vt 0.265625 0.921875 +vt 0.265625 0.937500 +vt 0.078125 0.921875 +vt 0.078125 0.937500 +vt 0.015625 0.937500 +vt 0.015625 0.921875 +vt 0.171875 0.546875 +vt 0.171875 0.625000 +vt 0.093750 0.625000 +vt 0.093750 0.546875 +vt 0.093750 0.625000 +vt 0.093750 0.703125 +vt 0.015625 0.703125 +vt 0.015625 0.625000 +vt 0.171875 0.625000 +vt 0.171875 0.703125 +vt 0.015625 0.625000 +vt 0.015625 0.546875 +vt 0.122613 0.918213 +vt 0.124991 0.906257 +vt 0.122613 0.894301 +vt 0.115840 0.884165 +vt 0.105703 0.877393 +vt 0.093746 0.875015 +vt 0.081789 0.877393 +vt 0.071652 0.884165 +vt 0.064879 0.894301 +vt 0.062500 0.906257 +vt 0.064879 0.918213 +vt 0.071652 0.928349 +vt 0.081789 0.935122 +vt 0.093746 0.937500 +vt 0.105703 0.935122 +vt 0.115840 0.928349 +vt 0.755979 0.545686 +vt 0.750000 0.546875 +vt 0.744021 0.545686 +vt 0.738952 0.542298 +vt 0.735564 0.537229 +vt 0.734375 0.531250 +vt 0.735564 0.525271 +vt 0.738952 0.520201 +vt 0.744021 0.516814 +vt 0.750000 0.515625 +vt 0.755979 0.516814 +vt 0.761049 0.520201 +vt 0.764436 0.525270 +vt 0.765625 0.531250 +vt 0.764436 0.537229 +vt 0.761049 0.542298 +vt 0.750000 0.546875 +vt 0.755979 0.545686 +vt 0.761049 0.542298 +vt 0.764436 0.537229 +vt 0.765625 0.531250 +vt 0.764436 0.525270 +vt 0.761049 0.520201 +vt 0.755979 0.516814 +vt 0.750000 0.515625 +vt 0.744021 0.516814 +vt 0.738952 0.520201 +vt 0.735564 0.525271 +vt 0.734375 0.531250 +vt 0.735564 0.537229 +vt 0.738952 0.542298 +vt 0.744021 0.545686 +vt 0.812500 0.562500 +vt 0.812500 0.625000 +vt 0.796875 0.625000 +vt 0.796875 0.562500 +vt 0.781250 0.625000 +vt 0.781250 0.562500 +vt 0.765625 0.625000 +vt 0.765625 0.562500 +vt 0.750000 0.625000 +vt 0.750000 0.562500 +vt 0.734375 0.625000 +vt 0.734375 0.562500 +vt 0.718750 0.625000 +vt 0.718750 0.562500 +vt 0.703125 0.625000 +vt 0.703125 0.562500 +vt 0.687500 0.625000 +vt 0.687500 0.562500 +vt 0.671875 0.625000 +vt 0.671875 0.562500 +vt 0.656250 0.625000 +vt 0.656250 0.562500 +vt 0.640625 0.625000 +vt 0.640625 0.562500 +vt 0.625000 0.625000 +vt 0.625000 0.562500 +vt 0.609375 0.625000 +vt 0.609375 0.562500 +vt 0.593750 0.625000 +vt 0.593750 0.562500 +vt 0.578125 0.625000 +vt 0.578125 0.562500 +vt 0.828125 0.562500 +vt 0.828125 0.625000 +vt 0.875000 0.718750 +vt 0.875000 0.671875 +vt 0.890625 0.671875 +vt 0.890625 0.718750 +vt 0.906250 0.671875 +vt 0.906250 0.718750 +vt 0.921875 0.671875 +vt 0.921875 0.718750 +vt 0.937500 0.671875 +vt 0.937500 0.718750 +vt 0.953125 0.671875 +vt 0.953125 0.718750 +vt 0.968750 0.671875 +vt 0.968750 0.718750 +vt 0.984375 0.671875 +vt 0.984375 0.718750 +vt 0.859375 0.671875 +vt 0.859375 0.625000 +vt 0.875000 0.625000 +vt 0.875000 0.671875 +vt 0.890625 0.625000 +vt 0.890625 0.671875 +vt 0.906250 0.625000 +vt 0.906250 0.671875 +vt 0.921875 0.625000 +vt 0.921875 0.671875 +vt 0.937500 0.625000 +vt 0.937500 0.671875 +vt 0.953125 0.625000 +vt 0.953125 0.671875 +vt 0.968750 0.625000 +vt 0.968750 0.671875 +vt 0.984375 0.625000 +vt 0.984375 0.671875 +vt 0.859375 0.718750 +vt 0.859375 0.671875 +vt 0.890684 0.627563 +vt 0.897620 0.626184 +vt 0.903500 0.622255 +vt 0.907429 0.616375 +vt 0.908809 0.609439 +vt 0.907429 0.602502 +vt 0.903500 0.596622 +vt 0.897620 0.592693 +vt 0.890684 0.591314 +vt 0.883747 0.592693 +vt 0.877867 0.596622 +vt 0.873938 0.602502 +vt 0.872559 0.609439 +vt 0.873938 0.616375 +vt 0.877867 0.622255 +vt 0.883747 0.626184 +vt 0.640625 0.703125 +vt 0.640625 0.453125 +vt 0.656250 0.453125 +vt 0.656250 0.703125 +vt 0.671875 0.453125 +vt 0.671875 0.703125 +vt 0.687500 0.453125 +vt 0.687500 0.703125 +vt 0.703125 0.453125 +vt 0.703125 0.703125 +vt 0.718750 0.453125 +vt 0.718750 0.703125 +vt 0.734375 0.453125 +vt 0.734375 0.703125 +vt 0.750000 0.453125 +vt 0.750000 0.703125 +vt 0.765625 0.453125 +vt 0.765625 0.703125 +vt 0.781250 0.453125 +vt 0.781250 0.703125 +vt 0.796875 0.453125 +vt 0.796875 0.703125 +vt 0.812500 0.453125 +vt 0.812500 0.703125 +vt 0.828125 0.453125 +vt 0.828125 0.703125 +vt 0.578125 0.703125 +vt 0.578125 0.453125 +vt 0.593750 0.453125 +vt 0.593750 0.703125 +vt 0.609375 0.453125 +vt 0.609375 0.703125 +vt 0.625000 0.453125 +vt 0.625000 0.703125 +vt 0.640625 0.703125 +vt 0.640625 0.453125 +vt 0.656250 0.453125 +vt 0.656250 0.703125 +vt 0.671875 0.453125 +vt 0.671875 0.703125 +vt 0.687500 0.453125 +vt 0.687500 0.703125 +vt 0.703125 0.453125 +vt 0.703125 0.703125 +vt 0.718750 0.453125 +vt 0.718750 0.703125 +vt 0.734375 0.453125 +vt 0.734375 0.703125 +vt 0.750000 0.453125 +vt 0.750000 0.703125 +vt 0.765625 0.453125 +vt 0.765625 0.703125 +vt 0.781250 0.453125 +vt 0.781250 0.703125 +vt 0.796875 0.453125 +vt 0.796875 0.703125 +vt 0.812500 0.453125 +vt 0.812500 0.703125 +vt 0.828125 0.453125 +vt 0.828125 0.703125 +vt 0.578125 0.703125 +vt 0.578125 0.453125 +vt 0.593750 0.453125 +vt 0.593750 0.703125 +vt 0.609375 0.453125 +vt 0.609375 0.703125 +vt 0.625000 0.453125 +vt 0.625000 0.703125 +vt 0.640626 0.703125 +vt 0.656251 0.703125 +vt 0.656251 0.453125 +vt 0.640626 0.453125 +vt 0.671876 0.703125 +vt 0.671876 0.453125 +vt 0.687501 0.703125 +vt 0.687501 0.453125 +vt 0.703126 0.703125 +vt 0.703126 0.453125 +vt 0.718751 0.703125 +vt 0.718751 0.453125 +vt 0.734377 0.703125 +vt 0.734377 0.453125 +vt 0.750002 0.703125 +vt 0.750002 0.453125 +vt 0.765627 0.703125 +vt 0.765627 0.453125 +vt 0.781252 0.703125 +vt 0.781252 0.453125 +vt 0.796877 0.703125 +vt 0.796877 0.453125 +vt 0.812502 0.703125 +vt 0.812502 0.453125 +vt 0.828127 0.703125 +vt 0.828127 0.453125 +vt 0.578125 0.703125 +vt 0.593750 0.703125 +vt 0.593750 0.453125 +vt 0.578125 0.453125 +vt 0.609376 0.703125 +vt 0.609375 0.453125 +vt 0.625001 0.703125 +vt 0.625001 0.453125 +vt 0.812501 0.671875 +vt 0.811312 0.665896 +vt 0.807924 0.660827 +vt 0.802855 0.657439 +vt 0.796876 0.656250 +vt 0.790897 0.657439 +vt 0.785827 0.660826 +vt 0.782440 0.665895 +vt 0.781251 0.671875 +vt 0.782440 0.677854 +vt 0.785827 0.682923 +vt 0.790897 0.686310 +vt 0.796876 0.687500 +vt 0.802855 0.686310 +vt 0.807924 0.682923 +vt 0.811312 0.677854 +vt 0.640626 0.703125 +vt 0.656251 0.703125 +vt 0.656251 0.453125 +vt 0.640626 0.453125 +vt 0.671876 0.703125 +vt 0.671876 0.453125 +vt 0.687501 0.703125 +vt 0.687501 0.453125 +vt 0.703126 0.703125 +vt 0.703126 0.453125 +vt 0.718751 0.703125 +vt 0.718751 0.453125 +vt 0.734377 0.703125 +vt 0.734377 0.453125 +vt 0.750002 0.703125 +vt 0.750002 0.453125 +vt 0.765627 0.703125 +vt 0.765627 0.453125 +vt 0.781252 0.703125 +vt 0.781252 0.453125 +vt 0.796877 0.703125 +vt 0.796877 0.453125 +vt 0.812502 0.703125 +vt 0.812502 0.453125 +vt 0.828127 0.703125 +vt 0.828127 0.453125 +vt 0.578125 0.703125 +vt 0.593750 0.703125 +vt 0.593750 0.453125 +vt 0.578125 0.453125 +vt 0.609376 0.703125 +vt 0.609375 0.453125 +vt 0.625001 0.703125 +vt 0.625001 0.453125 +vt 0.812501 0.671875 +vt 0.811312 0.665896 +vt 0.807924 0.660827 +vt 0.802855 0.657439 +vt 0.796876 0.656250 +vt 0.790897 0.657439 +vt 0.785827 0.660826 +vt 0.782440 0.665895 +vt 0.781251 0.671875 +vt 0.782440 0.677854 +vt 0.785827 0.682923 +vt 0.790897 0.686310 +vt 0.796876 0.687500 +vt 0.802855 0.686310 +vt 0.807924 0.682923 +vt 0.811312 0.677854 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.421875 0.218750 +vt 0.312500 0.234375 +vt 0.406250 0.234375 +vt 0.406250 0.250000 +vt 0.312500 0.250000 +vt 0.406250 0.265625 +vt 0.312500 0.265625 +vt 0.406250 0.281250 +vt 0.312500 0.281250 +vt 0.406250 0.296875 +vt 0.312500 0.296875 +vt 0.406250 0.312500 +vt 0.312500 0.312500 +vt 0.406250 0.328125 +vt 0.312500 0.328125 +vt 0.406250 0.343750 +vt 0.312500 0.343750 +vt 0.406250 0.359375 +vt 0.312500 0.359375 +vt 0.406250 0.375000 +vt 0.312500 0.375000 +vt 0.406250 0.390625 +vt 0.312500 0.390625 +vt 0.406250 0.406250 +vt 0.312500 0.406250 +vt 0.406250 0.421875 +vt 0.312500 0.421875 +vt 0.437500 0.171875 +vt 0.531250 0.171875 +vt 0.531250 0.187500 +vt 0.437500 0.187500 +vt 0.531250 0.203125 +vt 0.437500 0.203125 +vt 0.531250 0.218750 +vt 0.437500 0.218750 +vt 0.531250 0.234375 +vt 0.437500 0.234375 +vt 0.531250 0.250000 +vt 0.437500 0.250000 +vt 0.531250 0.265625 +vt 0.437500 0.265625 +vt 0.531250 0.281250 +vt 0.437500 0.281250 +vt 0.531250 0.296875 +vt 0.437500 0.296875 +vt 0.531250 0.312500 +vt 0.437500 0.312500 +vt 0.531250 0.328125 +vt 0.437500 0.328125 +vt 0.531250 0.343750 +vt 0.437500 0.343750 +vt 0.531250 0.359375 +vt 0.437500 0.359375 +vt 0.531250 0.375000 +vt 0.437500 0.375000 +vt 0.531250 0.390625 +vt 0.437500 0.390625 +vt 0.531250 0.406250 +vt 0.437500 0.406250 +vt 0.531250 0.421875 +vt 0.437500 0.421875 +vt 0.312500 0.171875 +vt 0.406250 0.171875 +vt 0.406250 0.187500 +vt 0.312500 0.187500 +vt 0.406250 0.203125 +vt 0.312500 0.203125 +vt 0.406250 0.218750 +vt 0.312500 0.218750 +vt 0.046875 0.906250 +vt 0.046875 0.921875 +vt 0.031250 0.921875 +vt 0.031250 0.906250 +vt 0.046875 0.765625 +vt 0.046875 0.781250 +vt 0.031250 0.781250 +vt 0.031250 0.765625 +vt 0.046875 0.937500 +vt 0.031250 0.937500 +vt 0.046875 0.843750 +vt 0.046875 0.859375 +vt 0.031250 0.859375 +vt 0.031250 0.843750 +vt 0.046875 0.875000 +vt 0.031250 0.875000 +vt 0.046875 0.796875 +vt 0.031250 0.796875 +vt 0.046875 0.953125 +vt 0.031250 0.953125 +vt 0.046875 0.812500 +vt 0.031250 0.812500 +vt 0.046875 0.968750 +vt 0.031250 0.968750 +vt 0.046875 0.890625 +vt 0.031250 0.890625 +vt 0.046875 0.734375 +vt 0.046875 0.750000 +vt 0.031250 0.750000 +vt 0.031250 0.734375 +vt 0.046875 0.828125 +vt 0.031250 0.828125 +vt 0.046875 0.984375 +vt 0.031250 0.984375 +vt 0.015625 0.859375 +vt 0.015625 0.843750 +vt 0.015625 0.750000 +vt 0.015625 0.734375 +vt 0.015625 0.984375 +vt 0.015625 0.968750 +vt 0.015625 0.875000 +vt 0.015625 0.765625 +vt 0.015625 0.890625 +vt 0.015625 0.781250 +vt 0.015625 0.906250 +vt 0.015625 0.796875 +vt 0.015625 0.921875 +vt 0.015625 0.812500 +vt 0.015625 0.937500 +vt 0.015625 0.828125 +vt 0.015625 0.953125 +vt 0.234375 0.906250 +vt 0.250000 0.906250 +vt 0.250000 0.921875 +vt 0.234375 0.921875 +vt 0.234375 0.765625 +vt 0.250000 0.765625 +vt 0.250000 0.781250 +vt 0.234375 0.781250 +vt 0.250000 0.937500 +vt 0.234375 0.937500 +vt 0.234375 0.843750 +vt 0.250000 0.843750 +vt 0.250000 0.859375 +vt 0.234375 0.859375 +vt 0.250000 0.875000 +vt 0.234375 0.875000 +vt 0.250000 0.796875 +vt 0.234375 0.796875 +vt 0.250000 0.953125 +vt 0.234375 0.953125 +vt 0.250000 0.812500 +vt 0.234375 0.812500 +vt 0.250000 0.968750 +vt 0.234375 0.968750 +vt 0.250000 0.890625 +vt 0.234375 0.890625 +vt 0.234375 0.734375 +vt 0.250000 0.734375 +vt 0.250000 0.750000 +vt 0.234375 0.750000 +vt 0.250000 0.828125 +vt 0.234375 0.828125 +vt 0.250000 0.984375 +vt 0.234375 0.984375 +vt 0.265625 0.843750 +vt 0.265625 0.859375 +vt 0.265625 0.734375 +vt 0.265625 0.750000 +vt 0.265625 0.968750 +vt 0.265625 0.984375 +vt 0.265625 0.875000 +vt 0.265625 0.765625 +vt 0.265625 0.890625 +vt 0.265625 0.781250 +vt 0.265625 0.906250 +vt 0.265625 0.796875 +vt 0.265625 0.921875 +vt 0.265625 0.812500 +vt 0.265625 0.937500 +vt 0.265625 0.828125 +vt 0.265625 0.953125 +vt 1.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.109375 +vt 1.000000 0.109375 +vt 0.000000 0.093750 +vt 1.000000 0.093750 +vt 0.000000 0.078125 +vt 1.000000 0.078125 +vt 0.000000 0.062500 +vt 1.000000 0.062500 +vt 0.000000 0.046875 +vt 1.000000 0.046875 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 0.000000 0.015625 +vt 1.000000 0.015625 +vt 1.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.109375 +vt 1.000000 0.109375 +vt 0.000000 0.093750 +vt 1.000000 0.093750 +vt 0.000000 0.078125 +vt 1.000000 0.078125 +vt 0.000000 0.062500 +vt 1.000000 0.062500 +vt 0.000000 0.046875 +vt 1.000000 0.046875 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 0.000000 0.015625 +vt 1.000000 0.015625 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.640626 0.703125 +vt 0.640626 0.453125 +vt 0.656251 0.453125 +vt 0.656251 0.703125 +vt 0.671876 0.453125 +vt 0.671876 0.703125 +vt 0.687501 0.453125 +vt 0.687501 0.703125 +vt 0.703126 0.453125 +vt 0.703126 0.703125 +vt 0.718751 0.453125 +vt 0.718751 0.703125 +vt 0.734377 0.453125 +vt 0.734377 0.703125 +vt 0.750002 0.453125 +vt 0.750002 0.703125 +vt 0.765627 0.453125 +vt 0.765627 0.703125 +vt 0.781252 0.453125 +vt 0.781252 0.703125 +vt 0.796877 0.453125 +vt 0.796877 0.703125 +vt 0.812502 0.453125 +vt 0.812502 0.703125 +vt 0.828127 0.453125 +vt 0.828127 0.703125 +vt 0.578125 0.703125 +vt 0.578125 0.453125 +vt 0.593750 0.453125 +vt 0.593750 0.703125 +vt 0.609375 0.453125 +vt 0.609376 0.703125 +vt 0.811311 0.630980 +vt 0.812501 0.625000 +vt 0.811311 0.619021 +vt 0.807924 0.613952 +vt 0.802855 0.610565 +vt 0.796876 0.609375 +vt 0.790896 0.610565 +vt 0.785827 0.613952 +vt 0.782440 0.619021 +vt 0.781251 0.625000 +vt 0.782440 0.630979 +vt 0.785827 0.636048 +vt 0.790896 0.639436 +vt 0.796876 0.640625 +vt 0.802855 0.639436 +vt 0.807924 0.636049 +vt 0.625001 0.453125 +vt 0.625001 0.703125 +vt 0.812501 0.671875 +vt 0.811312 0.677854 +vt 0.807924 0.682923 +vt 0.802855 0.686310 +vt 0.796876 0.687500 +vt 0.790897 0.686310 +vt 0.785827 0.682923 +vt 0.782440 0.677854 +vt 0.781251 0.671875 +vt 0.782440 0.665895 +vt 0.785827 0.660826 +vt 0.790897 0.657439 +vt 0.796876 0.656250 +vt 0.802855 0.657439 +vt 0.807924 0.660827 +vt 0.811312 0.665896 +vt 0.156250 0.418760 +vt 0.156250 0.390625 +vt 0.171875 0.390625 +vt 0.171875 0.418760 +vt 0.171875 0.390625 +vt 0.156250 0.390625 +vt 0.156250 0.418760 +vt 0.171875 0.418760 +vt 0.028135 0.265625 +vt 0.025021 0.265625 +vt 0.025021 0.281250 +vt 0.028135 0.281250 +vt 0.156250 0.298432 +vt 0.156250 0.299990 +vt 0.171875 0.299990 +vt 0.171875 0.298432 +vt 0.025021 0.265625 +vt 0.025021 0.281250 +vt 0.021854 0.281250 +vt 0.021854 0.265625 +vt 0.021854 0.281250 +vt 0.021854 0.265625 +vt 0.156250 0.298061 +vt 0.156250 0.299248 +vt 0.171875 0.299248 +vt 0.171875 0.298061 +vt 0.137510 0.265625 +vt 0.134396 0.265625 +vt 0.134396 0.281250 +vt 0.137510 0.281250 +vt 0.171875 0.420689 +vt 0.156250 0.420689 +vt 0.156250 0.419502 +vt 0.171875 0.419502 +vt 0.156250 0.420689 +vt 0.171875 0.420688 +vt 0.171875 0.419502 +vt 0.156250 0.419502 +vt 0.028135 0.265625 +vt 0.028135 0.281250 +vt 0.156250 0.299248 +vt 0.171875 0.299248 +vt 0.128115 0.281250 +vt 0.128115 0.265625 +vt 0.131229 0.265625 +vt 0.131229 0.281250 +vt 0.018740 0.265625 +vt 0.018740 0.281250 +vt 0.156250 0.420318 +vt 0.171875 0.420318 +vt 0.128115 0.265625 +vt 0.125000 0.265625 +vt 0.125000 0.281250 +vt 0.128115 0.281250 +vt 0.156250 0.298061 +vt 0.171875 0.298061 +vt 0.131229 0.281250 +vt 0.131229 0.265625 +vt 0.031250 0.265625 +vt 0.031250 0.281250 +vt 0.156250 0.420318 +vt 0.171875 0.420318 +vt 0.018740 0.281250 +vt 0.018740 0.265625 +vt 0.134396 0.281250 +vt 0.134396 0.265625 +vt 0.137510 0.265625 +vt 0.137510 0.281250 +vt 0.171875 0.328125 +vt 0.156250 0.328125 +vt 0.156250 0.298432 +vt 0.156250 0.296875 +vt 0.171875 0.296875 +vt 0.171875 0.298432 +vt 0.156250 0.328125 +vt 0.156250 0.299990 +vt 0.171875 0.299989 +vt 0.171875 0.328125 +vt 0.156250 0.296875 +vt 0.171875 0.296875 +vt 0.015625 0.265625 +vt 0.015625 0.281250 +vt 0.015625 0.281250 +vt 0.015625 0.265625 +vt 0.140625 0.265625 +vt 0.140625 0.281250 +vt 0.156250 0.421875 +vt 0.171875 0.421875 +vt 0.375000 0.300884 +vt 0.406250 0.300884 +vt 0.406250 0.308491 +vt 0.375000 0.308491 +vt 0.375000 0.269634 +vt 0.406250 0.269634 +vt 0.406250 0.277241 +vt 0.375000 0.277241 +vt 0.375000 0.314325 +vt 0.406250 0.314325 +vt 0.406250 0.328125 +vt 0.375000 0.328125 +vt 0.375000 0.285259 +vt 0.406250 0.285259 +vt 0.406250 0.292866 +vt 0.375000 0.292866 +vt 0.375000 0.250000 +vt 0.406250 0.250000 +vt 0.406250 0.263800 +vt 0.375000 0.263800 +vt 0.375000 0.300884 +vt 0.406250 0.300884 +vt 0.406250 0.308491 +vt 0.375000 0.308491 +vt 0.375000 0.269634 +vt 0.406250 0.269634 +vt 0.406250 0.277241 +vt 0.375000 0.277241 +vt 0.375000 0.314325 +vt 0.406250 0.314325 +vt 0.406250 0.328125 +vt 0.375000 0.328125 +vt 0.375000 0.285259 +vt 0.406250 0.285259 +vt 0.406250 0.292866 +vt 0.375000 0.292866 +vt 0.375000 0.250000 +vt 0.406250 0.250000 +vt 0.406250 0.263800 +vt 0.375000 0.263800 +vt 0.375000 0.300884 +vt 0.406250 0.300884 +vt 0.406250 0.308491 +vt 0.375000 0.308491 +vt 0.375000 0.269634 +vt 0.406250 0.269634 +vt 0.406250 0.277241 +vt 0.375000 0.277241 +vt 0.375000 0.314325 +vt 0.406250 0.314325 +vt 0.406250 0.328125 +vt 0.375000 0.328125 +vt 0.375000 0.285259 +vt 0.406250 0.285259 +vt 0.406250 0.292866 +vt 0.375000 0.292866 +vt 0.375000 0.250000 +vt 0.406250 0.250000 +vt 0.406250 0.263800 +vt 0.375000 0.263800 +vt 0.375000 0.300884 +vt 0.406250 0.300884 +vt 0.406250 0.308491 +vt 0.375000 0.308491 +vt 0.375000 0.269634 +vt 0.406250 0.269634 +vt 0.406250 0.277241 +vt 0.375000 0.277241 +vt 0.375000 0.314325 +vt 0.406250 0.314325 +vt 0.406250 0.328125 +vt 0.375000 0.328125 +vt 0.375000 0.285259 +vt 0.406250 0.285259 +vt 0.406250 0.292866 +vt 0.375000 0.292866 +vt 0.375000 0.250000 +vt 0.406250 0.250000 +vt 0.406250 0.263800 +vt 0.375000 0.263800 +vt 0.640626 0.703125 +vt 0.640626 0.453125 +vt 0.656251 0.453125 +vt 0.656251 0.703125 +vt 0.671876 0.453125 +vt 0.671876 0.703125 +vt 0.687501 0.453125 +vt 0.687501 0.703125 +vt 0.703126 0.453125 +vt 0.703126 0.703125 +vt 0.718751 0.453125 +vt 0.718751 0.703125 +vt 0.734377 0.453125 +vt 0.734377 0.703125 +vt 0.750002 0.453125 +vt 0.750002 0.703125 +vt 0.765627 0.453125 +vt 0.765627 0.703125 +vt 0.781252 0.453125 +vt 0.781252 0.703125 +vt 0.796877 0.453125 +vt 0.796877 0.703125 +vt 0.812502 0.453125 +vt 0.812502 0.703125 +vt 0.828127 0.453125 +vt 0.828127 0.703125 +vt 0.578125 0.703125 +vt 0.578125 0.453125 +vt 0.593750 0.453125 +vt 0.593750 0.703125 +vt 0.609375 0.453125 +vt 0.609376 0.703125 +vt 0.811311 0.630980 +vt 0.812501 0.625000 +vt 0.811311 0.619021 +vt 0.807924 0.613952 +vt 0.802855 0.610565 +vt 0.796876 0.609375 +vt 0.790896 0.610565 +vt 0.785827 0.613952 +vt 0.782440 0.619021 +vt 0.781251 0.625000 +vt 0.782440 0.630979 +vt 0.785827 0.636048 +vt 0.790896 0.639436 +vt 0.796876 0.640625 +vt 0.802855 0.639436 +vt 0.807924 0.636049 +vt 0.625001 0.453125 +vt 0.625001 0.703125 +vt 0.812501 0.671875 +vt 0.811312 0.677854 +vt 0.807924 0.682923 +vt 0.802855 0.686310 +vt 0.796876 0.687500 +vt 0.790897 0.686310 +vt 0.785827 0.682923 +vt 0.782440 0.677854 +vt 0.781251 0.671875 +vt 0.782440 0.665895 +vt 0.785827 0.660826 +vt 0.790897 0.657439 +vt 0.796876 0.656250 +vt 0.802855 0.657439 +vt 0.807924 0.660827 +vt 0.811312 0.665896 +vt -0.000000 0.109375 +vt 2.000000 0.109375 +vt 2.000000 0.125000 +vt -0.000000 0.125000 +vt 2.000000 0.140625 +vt -0.000000 0.140625 +vt -0.000000 0.015625 +vt 2.000000 0.015625 +vt 2.000000 0.031250 +vt -0.000000 0.031250 +vt 2.000000 0.046875 +vt -0.000000 0.046875 +vt 2.000000 0.062500 +vt -0.000000 0.062500 +vt 2.000000 0.078125 +vt -0.000000 0.078125 +vt 2.000000 0.093750 +vt -0.000000 0.093750 +vt 2.000000 0.109375 +vt -0.000000 0.109375 +vt 2.000000 0.125000 +vt -0.000000 0.125000 +vt 2.000000 0.140625 +vt -0.000000 0.140625 +vt -0.000000 0.015625 +vt 2.000000 0.015625 +vt 2.000000 0.031250 +vt -0.000000 0.031250 +vt 2.000000 0.046875 +vt -0.000000 0.046875 +vt 2.000000 0.062500 +vt -0.000000 0.062500 +vt 2.000000 0.078125 +vt -0.000000 0.078125 +vt 2.000000 0.093750 +vt -0.000000 0.093750 +vt 0.750000 0.562500 +vt 0.750000 0.593750 +vt 0.734375 0.593750 +vt 0.734375 0.562500 +vt 0.718750 0.593750 +vt 0.718750 0.562500 +vt 0.703125 0.593750 +vt 0.703125 0.562500 +vt 0.687500 0.593750 +vt 0.687500 0.562500 +vt 0.671875 0.593750 +vt 0.671875 0.562500 +vt 0.656250 0.593750 +vt 0.656250 0.562500 +vt 0.640625 0.593750 +vt 0.640625 0.562500 +vt 0.765625 0.562500 +vt 0.765625 0.593750 +vt 0.593750 0.593750 +vt 0.593750 0.562500 +vt 0.609375 0.562500 +vt 0.609375 0.593750 +vt 0.625000 0.562500 +vt 0.625000 0.593750 +vt 0.640625 0.562500 +vt 0.640625 0.593750 +vt 0.656250 0.562500 +vt 0.656250 0.593750 +vt 0.671875 0.562500 +vt 0.671875 0.593750 +vt 0.687500 0.562500 +vt 0.687500 0.593750 +vt 0.703125 0.562500 +vt 0.703125 0.593750 +vt 0.718750 0.562500 +vt 0.718750 0.593750 +vt 0.734375 0.562500 +vt 0.734375 0.593750 +vt 0.750000 0.562500 +vt 0.750000 0.593750 +vt 0.765625 0.562500 +vt 0.765625 0.593750 +vt 0.781250 0.562500 +vt 0.781250 0.593750 +vt 0.796875 0.562500 +vt 0.796875 0.593750 +vt 0.812500 0.562500 +vt 0.812500 0.593750 +vt 0.828125 0.562500 +vt 0.828125 0.593750 +vt 0.578125 0.703125 +vt 0.578125 0.687500 +vt 0.593750 0.687500 +vt 0.593750 0.703125 +vt 0.578125 0.671875 +vt 0.593750 0.671875 +vt 0.812500 0.609375 +vt 0.828125 0.609375 +vt 0.828125 0.671875 +vt 0.812500 0.671875 +vt 0.578125 0.609375 +vt 0.578125 0.593750 +vt 0.593750 0.609375 +vt 0.812500 0.703125 +vt 0.812500 0.687500 +vt 0.828125 0.687500 +vt 0.828125 0.703125 +vt 0.796875 0.609375 +vt 0.796875 0.671875 +vt 0.796875 0.703125 +vt 0.796875 0.687500 +vt 0.781250 0.609375 +vt 0.781250 0.671875 +vt 0.781250 0.703125 +vt 0.781250 0.687500 +vt 0.765625 0.609375 +vt 0.765625 0.671875 +vt 0.765625 0.703125 +vt 0.765625 0.687500 +vt 0.750000 0.609375 +vt 0.750000 0.671875 +vt 0.750000 0.703125 +vt 0.750000 0.687500 +vt 0.734375 0.609375 +vt 0.734375 0.671875 +vt 0.734375 0.703125 +vt 0.734375 0.687500 +vt 0.718750 0.609375 +vt 0.718750 0.671875 +vt 0.718750 0.703125 +vt 0.718750 0.687500 +vt 0.703125 0.609375 +vt 0.703125 0.671875 +vt 0.703125 0.703125 +vt 0.703125 0.687500 +vt 0.687500 0.609375 +vt 0.687500 0.671875 +vt 0.687500 0.703125 +vt 0.687500 0.687500 +vt 0.671875 0.609375 +vt 0.671875 0.671875 +vt 0.671875 0.703125 +vt 0.671875 0.687500 +vt 0.656250 0.609375 +vt 0.656250 0.671875 +vt 0.656250 0.703125 +vt 0.656250 0.687500 +vt 0.640625 0.609375 +vt 0.640625 0.671875 +vt 0.640625 0.703125 +vt 0.640625 0.687500 +vt 0.625000 0.609375 +vt 0.625000 0.671875 +vt 0.625000 0.703125 +vt 0.625000 0.687500 +vt 0.609375 0.609375 +vt 0.609375 0.671875 +vt 0.609375 0.703125 +vt 0.609375 0.687500 +vt 0.578125 0.562500 +vt 1.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.109375 +vt 1.000000 0.109375 +vt 0.000000 0.093750 +vt 1.000000 0.093750 +vt 0.000000 0.078125 +vt 1.000000 0.078125 +vt 0.000000 0.062500 +vt 1.000000 0.062500 +vt 0.000000 0.046875 +vt 1.000000 0.046875 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 0.000000 0.015625 +vt 1.000000 0.015625 +vt 1.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.109375 +vt 1.000000 0.109375 +vt 0.000000 0.093750 +vt 1.000000 0.093750 +vt 0.000000 0.078125 +vt 1.000000 0.078125 +vt 0.000000 0.062500 +vt 1.000000 0.062500 +vt 0.000000 0.046875 +vt 1.000000 0.046875 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 0.000000 0.015625 +vt 1.000000 0.015625 +vt 1.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.109375 +vt 1.000000 0.109375 +vt 0.000000 0.093750 +vt 1.000000 0.093750 +vt 0.000000 0.078125 +vt 1.000000 0.078125 +vt 0.000000 0.062500 +vt 1.000000 0.062500 +vt 0.000000 0.046875 +vt 1.000000 0.046875 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 0.000000 0.015625 +vt 1.000000 0.015625 +vt 1.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.109375 +vt 1.000000 0.109375 +vt 0.000000 0.093750 +vt 1.000000 0.093750 +vt 0.000000 0.078125 +vt 1.000000 0.078125 +vt 0.000000 0.062500 +vt 1.000000 0.062500 +vt 0.000000 0.046875 +vt 1.000000 0.046875 +vt 0.000000 0.031250 +vt 1.000000 0.031250 +vt 0.000000 0.015625 +vt 1.000000 0.015625 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 0.656250 0.593750 +vt 0.656250 0.625000 +vt 0.625000 0.625000 +vt 0.625000 0.593750 +vt 0.812500 0.593750 +vt 0.812500 0.625000 +vt 0.781250 0.625000 +vt 0.781250 0.593750 +vt 0.750000 0.625000 +vt 0.750000 0.593750 +vt 0.718750 0.625000 +vt 0.718750 0.593750 +vt 0.687500 0.625000 +vt 0.687500 0.593750 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.000000 0.062500 +vt 2.000000 0.062500 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.000000 0.062500 +vt 2.000000 0.062500 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.000000 0.062500 +vt 2.000000 0.062500 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.000000 0.062500 +vt 2.000000 0.062500 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 0.750000 0.562500 +vt 0.750000 0.593750 +vt 0.734375 0.593750 +vt 0.734375 0.562500 +vt 0.718750 0.593750 +vt 0.718750 0.562500 +vt 0.703125 0.593750 +vt 0.703125 0.562500 +vt 0.687500 0.593750 +vt 0.687500 0.562500 +vt 0.671875 0.593750 +vt 0.671875 0.562500 +vt 0.656250 0.593750 +vt 0.656250 0.562500 +vt 0.640625 0.593750 +vt 0.640625 0.562500 +vt 0.765625 0.562500 +vt 0.765625 0.593750 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 2.000000 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.000000 0.062500 +vt 2.000000 0.062500 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.812500 0.562500 +vt 0.812500 0.609375 +vt 0.796875 0.609375 +vt 0.796875 0.562500 +vt 0.781250 0.609375 +vt 0.781250 0.562500 +vt 0.765625 0.609375 +vt 0.765625 0.562500 +vt 0.750000 0.609375 +vt 0.750000 0.562500 +vt 0.734375 0.609375 +vt 0.734375 0.562500 +vt 0.718750 0.609375 +vt 0.718750 0.562500 +vt 0.703125 0.609375 +vt 0.703125 0.562500 +vt 0.687500 0.609375 +vt 0.687500 0.562500 +vt 0.671875 0.609375 +vt 0.671875 0.562500 +vt 0.656250 0.609375 +vt 0.656250 0.562500 +vt 0.640625 0.609375 +vt 0.640625 0.562500 +vt 0.625000 0.609375 +vt 0.625000 0.562500 +vt 0.609375 0.609375 +vt 0.609375 0.562500 +vt 0.593750 0.609375 +vt 0.593750 0.562500 +vt 0.578125 0.609375 +vt 0.578125 0.562500 +vt 0.828125 0.562500 +vt 0.828125 0.609375 +vt 0.750000 0.562500 +vt 0.750000 0.593750 +vt 0.734375 0.593750 +vt 0.734375 0.562500 +vt 0.718750 0.593750 +vt 0.718750 0.562500 +vt 0.703125 0.593750 +vt 0.703125 0.562500 +vt 0.687500 0.593750 +vt 0.687500 0.562500 +vt 0.671875 0.593750 +vt 0.671875 0.562500 +vt 0.656250 0.593750 +vt 0.656250 0.562500 +vt 0.640625 0.593750 +vt 0.640625 0.562500 +vt 0.765625 0.562500 +vt 0.765625 0.593750 +vt 0.593750 0.593750 +vt 0.593750 0.562500 +vt 0.609375 0.562500 +vt 0.609375 0.593750 +vt 0.625000 0.562500 +vt 0.625000 0.593750 +vt 0.640625 0.562500 +vt 0.640625 0.593750 +vt 0.656250 0.562500 +vt 0.656250 0.593750 +vt 0.671875 0.562500 +vt 0.671875 0.593750 +vt 0.687500 0.562500 +vt 0.687500 0.593750 +vt 0.703125 0.562500 +vt 0.703125 0.593750 +vt 0.718750 0.562500 +vt 0.718750 0.593750 +vt 0.734375 0.562500 +vt 0.734375 0.593750 +vt 0.750000 0.562500 +vt 0.750000 0.593750 +vt 0.765625 0.562500 +vt 0.765625 0.593750 +vt 0.781250 0.562500 +vt 0.781250 0.593750 +vt 0.796875 0.562500 +vt 0.796875 0.593750 +vt 0.812500 0.562500 +vt 0.812500 0.593750 +vt 0.828125 0.562500 +vt 0.828125 0.593750 +vt 0.578125 0.703125 +vt 0.578125 0.687500 +vt 0.593750 0.687500 +vt 0.593750 0.703125 +vt 0.578125 0.671875 +vt 0.593750 0.671875 +vt 0.812500 0.609375 +vt 0.828125 0.609375 +vt 0.828125 0.671875 +vt 0.812500 0.671875 +vt 0.578125 0.609375 +vt 0.578125 0.593750 +vt 0.593750 0.609375 +vt 0.812500 0.703125 +vt 0.812500 0.687500 +vt 0.828125 0.687500 +vt 0.828125 0.703125 +vt 0.796875 0.609375 +vt 0.796875 0.671875 +vt 0.796875 0.703125 +vt 0.796875 0.687500 +vt 0.781250 0.609375 +vt 0.781250 0.671875 +vt 0.781250 0.703125 +vt 0.781250 0.687500 +vt 0.765625 0.609375 +vt 0.765625 0.671875 +vt 0.765625 0.703125 +vt 0.765625 0.687500 +vt 0.750000 0.609375 +vt 0.750000 0.671875 +vt 0.750000 0.703125 +vt 0.750000 0.687500 +vt 0.734375 0.609375 +vt 0.734375 0.671875 +vt 0.734375 0.703125 +vt 0.734375 0.687500 +vt 0.718750 0.609375 +vt 0.718750 0.671875 +vt 0.718750 0.703125 +vt 0.718750 0.687500 +vt 0.703125 0.609375 +vt 0.703125 0.671875 +vt 0.703125 0.703125 +vt 0.703125 0.687500 +vt 0.687500 0.609375 +vt 0.687500 0.671875 +vt 0.687500 0.703125 +vt 0.687500 0.687500 +vt 0.671875 0.609375 +vt 0.671875 0.671875 +vt 0.671875 0.703125 +vt 0.671875 0.687500 +vt 0.656250 0.609375 +vt 0.656250 0.671875 +vt 0.656250 0.703125 +vt 0.656250 0.687500 +vt 0.640625 0.609375 +vt 0.640625 0.671875 +vt 0.640625 0.703125 +vt 0.640625 0.687500 +vt 0.625000 0.609375 +vt 0.625000 0.671875 +vt 0.625000 0.703125 +vt 0.625000 0.687500 +vt 0.609375 0.609375 +vt 0.609375 0.671875 +vt 0.609375 0.703125 +vt 0.609375 0.687500 +vt 0.578125 0.562500 +vt 0.750000 0.562500 +vt 0.750000 0.593750 +vt 0.734375 0.593750 +vt 0.734375 0.562500 +vt 0.718750 0.593750 +vt 0.718750 0.562500 +vt 0.703125 0.593750 +vt 0.703125 0.562500 +vt 0.687500 0.593750 +vt 0.687500 0.562500 +vt 0.671875 0.593750 +vt 0.671875 0.562500 +vt 0.656250 0.593750 +vt 0.656250 0.562500 +vt 0.640625 0.593750 +vt 0.640625 0.562500 +vt 0.765625 0.562500 +vt 0.765625 0.593750 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 2.000000 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.000000 0.062500 +vt 2.000000 0.062500 +vt 0.000000 0.046875 +vt 2.000000 0.046875 +vt 0.000000 0.031250 +vt 2.000000 0.031250 +vt 0.000000 0.015625 +vt 2.000000 0.015625 +vt 0.000000 0.125000 +vt 2.000000 0.125000 +vt 2.000000 0.140625 +vt 0.000000 0.140625 +vt 0.000000 0.109375 +vt 2.000000 0.109375 +vt 0.000000 0.093750 +vt 2.000000 0.093750 +vt 0.000000 0.078125 +vt 2.000000 0.078125 +vt 0.812500 0.562500 +vt 0.812500 0.609375 +vt 0.796875 0.609375 +vt 0.796875 0.562500 +vt 0.781250 0.609375 +vt 0.781250 0.562500 +vt 0.765625 0.609375 +vt 0.765625 0.562500 +vt 0.750000 0.609375 +vt 0.750000 0.562500 +vt 0.734375 0.609375 +vt 0.734375 0.562500 +vt 0.718750 0.609375 +vt 0.718750 0.562500 +vt 0.703125 0.609375 +vt 0.703125 0.562500 +vt 0.687500 0.609375 +vt 0.687500 0.562500 +vt 0.671875 0.609375 +vt 0.671875 0.562500 +vt 0.656250 0.609375 +vt 0.656250 0.562500 +vt 0.640625 0.609375 +vt 0.640625 0.562500 +vt 0.625000 0.609375 +vt 0.625000 0.562500 +vt 0.609375 0.609375 +vt 0.609375 0.562500 +vt 0.593750 0.609375 +vt 0.593750 0.562500 +vt 0.578125 0.609375 +vt 0.578125 0.562500 +vt 0.828125 0.562500 +vt 0.828125 0.609375 +vn -0.0000 1.0000 0.0000 +vn 1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.9914 0.1305 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.7934 0.6088 +vn 0.0000 -0.6088 0.7933 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 -0.1305 0.9914 +vn 0.0000 0.1305 0.9914 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.6087 0.7934 +vn 0.0000 0.7934 0.6088 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9914 0.1305 +vn 0.0000 -0.6088 0.7934 +vn 0.0000 0.6088 0.7934 +vn 0.0000 0.7933 0.6088 +vn 0.0000 -0.6931 -0.7208 +vn -0.7933 0.0000 0.6088 +vn -0.7071 -0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.1305 -0.0000 0.9914 +vn -0.9914 0.0000 0.1305 +vn -0.9239 0.0000 0.3827 +vn -0.9914 0.0000 -0.1305 +vn -0.9239 0.0000 -0.3827 +vn -0.7933 0.0000 -0.6088 +vn -0.6088 0.0000 -0.7933 +vn -0.3827 0.0000 -0.9239 +vn -0.1305 0.0000 -0.9914 +vn -0.7071 0.0000 -0.7071 +vn -0.9692 0.0000 0.2464 +vn -0.3827 -0.0000 0.9239 +vn -0.6088 -0.0000 0.7934 +vn -0.7934 0.0000 0.6088 +vn -0.7071 0.7071 -0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 -0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0051 +vn -0.7071 -0.5000 0.5000 +vn 1.0000 0.0017 -0.0047 +vn 0.7071 -0.5000 -0.5000 +vn -1.0000 0.0017 0.0047 +vn -1.0000 0.0000 -0.0057 +vn 0.0000 -0.0012 1.0000 +vn 0.0280 -0.0000 -0.9996 +vn 0.8954 0.0000 0.4453 +vn 0.0941 0.0000 0.9956 +vn 0.9997 -0.0000 0.0230 +vn -0.7140 0.0000 0.7001 +vn -0.8886 -0.0000 -0.4587 +vn 0.0112 0.0000 0.9999 +vn 0.9229 0.0000 0.3849 +vn -0.9982 0.0000 -0.0593 +vn -0.0170 0.0000 0.9999 +vn -0.8511 0.0000 0.5250 +vn 0.5592 0.0000 0.8290 +vn 0.5194 0.0000 0.8545 +vn -0.7336 0.0000 0.6796 +vn 0.5931 0.0000 0.8051 +vn -0.3434 0.0000 0.9392 +vn -0.9366 0.0000 0.3505 +vn 0.7071 -0.0000 0.7071 +vn 0.2588 0.0000 -0.9659 +vn 0.9659 0.0000 -0.2588 +vn 0.2588 -0.0000 0.9659 +vn 0.9659 -0.0000 0.2588 +vn -0.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.5420 0.0000 -0.8404 +vn -0.8638 0.0000 -0.5039 +vn -0.7980 0.3305 -0.5039 +vn -0.5007 0.2074 -0.8404 +vn -0.6108 0.6108 -0.5039 +vn -0.3832 0.3832 -0.8404 +vn -0.3305 0.7980 -0.5039 +vn -0.2074 0.5007 -0.8404 +vn 0.0000 0.8638 -0.5039 +vn 0.0000 0.5420 -0.8404 +vn 0.3305 0.7980 -0.5039 +vn 0.2074 0.5007 -0.8404 +vn 0.6108 0.6108 -0.5039 +vn 0.3832 0.3832 -0.8404 +vn 0.7980 0.3305 -0.5039 +vn 0.5007 0.2074 -0.8404 +vn 0.8638 0.0000 -0.5039 +vn 0.5420 0.0000 -0.8404 +vn 0.7980 -0.3305 -0.5039 +vn 0.5007 -0.2074 -0.8404 +vn 0.6108 -0.6108 -0.5039 +vn 0.3832 -0.3832 -0.8404 +vn 0.3305 -0.7980 -0.5039 +vn 0.2074 -0.5007 -0.8404 +vn 0.0000 -0.8638 -0.5039 +vn 0.0000 -0.5420 -0.8404 +vn -0.3305 -0.7980 -0.5039 +vn -0.2074 -0.5007 -0.8404 +vn -0.6108 -0.6108 -0.5039 +vn -0.3832 -0.3832 -0.8404 +vn -0.7980 -0.3305 -0.5039 +vn -0.5007 -0.2074 -0.8404 +vn 0.3827 0.0000 0.9239 +vn 0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 -0.9239 +vn 0.0000 0.7462 0.6657 +vn 0.2855 0.6894 0.6657 +vn 0.5276 0.5276 0.6657 +vn 0.6894 0.2855 0.6657 +vn 0.7462 0.0000 0.6657 +vn 0.6894 -0.2856 0.6657 +vn 0.5276 -0.5276 0.6657 +vn 0.2856 -0.6894 0.6657 +vn 0.0000 -0.7462 0.6657 +vn -0.2855 -0.6894 0.6657 +vn -0.5276 -0.5276 0.6657 +vn -0.6894 -0.2855 0.6657 +vn -0.7462 0.0000 0.6657 +vn -0.6894 0.2856 0.6657 +vn -0.5276 0.5276 0.6657 +vn -0.2855 0.6894 0.6657 +vn 0.7139 0.6857 -0.1420 +vn 0.7139 -0.6857 -0.1420 +vn 0.6725 -0.6857 -0.2785 +vn 0.6725 0.6857 -0.2785 +vn -0.2785 0.6857 -0.6725 +vn -0.2785 -0.6857 -0.6725 +vn -0.4044 -0.6857 -0.6052 +vn -0.4044 0.6857 -0.6052 +vn -0.5147 0.6857 0.5147 +vn -0.5147 -0.6857 0.5147 +vn -0.4044 -0.6857 0.6052 +vn -0.4044 0.6857 0.6052 +vn 0.6052 0.6857 0.4044 +vn 0.6052 -0.6857 0.4044 +vn 0.6725 -0.6857 0.2785 +vn 0.6725 0.6857 0.2785 +vn 0.2785 0.6857 -0.6725 +vn 0.2785 -0.6857 -0.6725 +vn 0.1420 -0.6857 -0.7139 +vn 0.1420 0.6857 -0.7139 +vn -0.7279 0.6857 0.0000 +vn -0.7279 -0.6857 0.0000 +vn -0.7139 -0.6857 0.1420 +vn -0.7139 0.6857 0.1420 +vn -0.7139 0.6857 -0.1420 +vn -0.7139 -0.6857 -0.1420 +vn 0.1420 0.6857 0.7139 +vn 0.1420 -0.6857 0.7139 +vn 0.2785 -0.6857 0.6725 +vn 0.2785 0.6857 0.6725 +vn 0.6052 -0.6857 -0.4044 +vn 0.6052 0.6857 -0.4044 +vn -0.5147 -0.6857 -0.5147 +vn -0.5147 0.6857 -0.5147 +vn -0.2785 -0.6857 0.6725 +vn -0.2785 0.6857 0.6725 +vn 0.7139 -0.6857 0.1420 +vn 0.7139 0.6857 0.1420 +vn 0.0000 -0.6857 -0.7279 +vn 0.0000 0.6857 -0.7279 +vn -0.6725 -0.6857 0.2785 +vn -0.6725 0.6857 0.2785 +vn 0.4044 -0.6857 0.6052 +vn 0.4044 0.6857 0.6052 +vn 0.5147 -0.6857 -0.5147 +vn 0.5147 0.6857 -0.5147 +vn -0.6052 -0.6857 -0.4044 +vn -0.6052 0.6857 -0.4044 +vn -0.1420 -0.6857 0.7139 +vn -0.1420 0.6857 0.7139 +vn 0.7279 -0.6857 0.0000 +vn 0.7279 0.6857 0.0000 +vn -0.1420 -0.6857 -0.7139 +vn -0.1420 0.6857 -0.7139 +vn -0.6052 -0.6857 0.4044 +vn -0.6052 0.6857 0.4044 +vn 0.5147 -0.6857 0.5147 +vn 0.5147 0.6857 0.5147 +vn 0.4044 -0.6857 -0.6052 +vn 0.4044 0.6857 -0.6052 +vn -0.6725 -0.6857 -0.2785 +vn -0.6725 0.6857 -0.2785 +vn 0.0000 -0.6857 0.7279 +vn 0.0000 0.6857 0.7279 +vn 0.0000 -0.7299 -0.6836 +vn 0.0000 0.7298 -0.6836 +vn 0.0000 -0.7298 0.6836 +vn 0.0000 0.7299 0.6836 +vn 0.3507 -0.3999 -0.8468 +vn 0.0000 -0.3999 -0.9165 +vn 0.0000 -0.3663 -0.9305 +vn 0.3561 -0.3663 -0.8596 +vn -0.6481 -0.3999 0.6481 +vn -0.3507 -0.3999 0.8468 +vn -0.3561 -0.3663 0.8596 +vn -0.6579 -0.3663 0.6579 +vn -0.3507 -0.3999 -0.8468 +vn -0.3561 -0.3663 -0.8596 +vn 0.8468 -0.3999 0.3507 +vn 0.9165 -0.3999 0.0000 +vn 0.9305 -0.3663 0.0000 +vn 0.8596 -0.3663 0.3561 +vn 0.8468 -0.3999 -0.3507 +vn 0.8596 -0.3663 -0.3561 +vn 0.0000 -0.3999 0.9165 +vn 0.0000 -0.3663 0.9305 +vn -0.6481 -0.3999 -0.6481 +vn -0.6579 -0.3663 -0.6579 +vn 0.3507 -0.3999 0.8468 +vn 0.3561 -0.3663 0.8596 +vn -0.8468 -0.3999 -0.3507 +vn -0.8596 -0.3663 -0.3561 +vn 0.6481 -0.3999 -0.6481 +vn 0.6579 -0.3663 -0.6579 +vn -0.9165 -0.3999 0.0000 +vn -0.8468 -0.3999 0.3507 +vn -0.8596 -0.3663 0.3561 +vn -0.9305 -0.3663 0.0000 +vn 0.6481 -0.3999 0.6481 +vn 0.6579 -0.3663 0.6579 +vn 0.7462 0.6657 0.0000 +vn 0.6894 0.6657 0.2855 +vn -0.6894 0.6657 0.2855 +vn -0.7462 0.6657 0.0000 +vn -0.6894 0.6657 -0.2855 +vn 0.6894 0.6657 -0.2855 +vn -0.5276 0.6657 0.5276 +vn 0.5276 0.6657 -0.5276 +vn -0.2855 0.6657 0.6894 +vn 0.2855 0.6657 -0.6894 +vn 0.0000 0.6657 0.7462 +vn 0.0000 0.6657 -0.7462 +vn 0.2855 0.6657 0.6894 +vn -0.2855 0.6657 -0.6894 +vn 0.5276 0.6657 0.5276 +vn -0.5276 0.6657 -0.5276 +vn 0.3507 0.3999 -0.8468 +vn 0.3561 0.3663 -0.8596 +vn 0.0000 0.3663 -0.9305 +vn 0.0000 0.3999 -0.9165 +vn -0.6481 0.3999 0.6481 +vn -0.6579 0.3663 0.6579 +vn -0.3561 0.3663 0.8596 +vn -0.3507 0.3999 0.8468 +vn -0.3561 0.3663 -0.8596 +vn -0.3507 0.3999 -0.8468 +vn 0.8468 0.3999 0.3507 +vn 0.8596 0.3663 0.3561 +vn 0.9305 0.3663 0.0000 +vn 0.9165 0.3999 0.0000 +vn 0.8596 0.3663 -0.3561 +vn 0.8468 0.3999 -0.3507 +vn 0.0000 0.3663 0.9305 +vn 0.0000 0.3999 0.9165 +vn -0.6579 0.3663 -0.6579 +vn -0.6481 0.3999 -0.6481 +vn 0.3561 0.3663 0.8596 +vn 0.3507 0.3999 0.8468 +vn -0.8596 0.3663 -0.3561 +vn -0.8468 0.3999 -0.3507 +vn 0.6579 0.3663 -0.6579 +vn 0.6481 0.3999 -0.6481 +vn -0.9165 0.3999 0.0000 +vn -0.9305 0.3663 0.0000 +vn -0.8596 0.3663 0.3561 +vn -0.8468 0.3999 0.3507 +vn 0.6579 0.3663 0.6579 +vn 0.6481 0.3999 0.6481 +vn 0.6894 -0.6657 0.2855 +vn 0.7462 -0.6657 0.0000 +vn -0.7462 -0.6657 0.0000 +vn -0.6894 -0.6657 0.2856 +vn -0.6894 -0.6657 -0.2855 +vn 0.6894 -0.6657 -0.2855 +vn -0.5276 -0.6657 0.5276 +vn 0.5276 -0.6657 -0.5276 +vn -0.2855 -0.6657 0.6894 +vn 0.2855 -0.6657 -0.6894 +vn 0.0000 -0.6657 0.7462 +vn 0.0000 -0.6657 -0.7462 +vn 0.2855 -0.6657 0.6894 +vn -0.2855 -0.6657 -0.6894 +vn 0.5276 -0.6657 0.5276 +vn -0.5276 -0.6657 -0.5276 +vn -0.6894 -0.6657 0.2855 +vn -0.2856 -0.6657 0.6894 +vn -0.2856 0.6657 0.6894 +vn 0.2856 0.6657 0.6894 +vn 0.6894 0.6657 0.2856 +vn 0.0000 0.6100 0.7924 +vn -0.6862 0.6100 0.3962 +vn -0.8660 0.0000 0.5000 +vn -0.6862 0.6100 -0.3962 +vn -0.8660 0.0000 -0.5000 +vn 0.0000 0.6100 -0.7924 +vn 0.6862 0.6100 -0.3962 +vn 0.8660 0.0000 -0.5000 +vn 0.6862 0.6100 0.3962 +vn 0.8660 0.0000 0.5000 +vn 0.0000 -0.6100 0.7924 +vn 0.6862 -0.6100 0.3962 +vn 0.6862 -0.6100 -0.3962 +vn 0.0000 -0.6100 -0.7924 +vn -0.6862 -0.6100 -0.3962 +vn -0.6862 -0.6100 0.3962 +vn 0.6657 0.7462 0.0000 +vn -0.6657 0.7462 0.0000 +vn -0.6657 0.6894 0.2855 +vn 0.6657 0.6894 0.2856 +vn -0.6657 0.5276 0.5276 +vn 0.6657 0.5276 0.5276 +vn -0.6657 0.2856 0.6894 +vn 0.6657 0.2855 0.6894 +vn -0.6657 0.0000 0.7462 +vn 0.6657 0.0000 0.7462 +vn -0.6657 -0.2856 0.6894 +vn 0.6657 -0.2856 0.6894 +vn -0.6657 -0.5276 0.5276 +vn 0.6657 -0.5276 0.5276 +vn -0.6657 -0.6894 0.2856 +vn 0.6657 -0.6894 0.2855 +vn -0.6657 -0.7462 0.0000 +vn 0.6657 -0.7462 0.0000 +vn -0.6657 -0.6894 -0.2856 +vn 0.6657 -0.6894 -0.2855 +vn -0.6657 -0.5276 -0.5276 +vn 0.6657 -0.5276 -0.5276 +vn -0.6657 -0.2855 -0.6894 +vn 0.6657 -0.2855 -0.6894 +vn -0.6657 0.0000 -0.7462 +vn 0.6657 0.0000 -0.7462 +vn -0.6657 0.2856 -0.6894 +vn 0.6657 0.2856 -0.6894 +vn -0.6657 0.5276 -0.5276 +vn 0.6657 0.5276 -0.5276 +vn -0.6657 0.6894 -0.2855 +vn 0.6657 0.6894 -0.2855 +vn 0.0958 0.7280 -0.6789 +vn 0.3015 0.3015 -0.9045 +vn 0.1305 0.9914 0.0000 +vn 0.3015 -0.3015 -0.9045 +vn 0.0958 -0.7280 -0.6789 +vn 0.1305 -0.9914 0.0000 +vn -0.6557 0.3786 -0.6532 +vn -0.7280 0.0958 -0.6789 +vn -0.9914 0.1305 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.3786 -0.6557 -0.6532 +vn -0.0958 -0.7280 -0.6789 +vn -0.1305 -0.9914 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.7280 0.0958 -0.6789 +vn 0.9914 0.1305 0.0000 +vn 0.9914 -0.1305 0.0000 +vn 0.7280 -0.0958 -0.6789 +vn -0.9914 -0.1305 0.0000 +vn -0.7280 -0.0958 -0.6789 +vn 0.5000 0.8660 0.0000 +vn 0.3786 0.6557 -0.6532 +vn 0.3786 -0.6557 -0.6532 +vn 0.5000 -0.8660 0.0000 +vn 0.6557 0.3786 -0.6532 +vn 0.8660 0.5000 0.0000 +vn -0.0958 0.7280 -0.6789 +vn -0.1305 0.9914 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.6557 -0.3786 -0.6532 +vn -0.6557 -0.3786 -0.6532 +vn -0.8660 -0.5000 0.0000 +vn -0.3786 0.6557 -0.6532 +vn -0.5000 0.8660 0.0000 +vn -0.3015 -0.3015 -0.9045 +vn -0.3015 0.3015 -0.9045 +vn -0.6657 -0.4145 -0.6204 +vn 0.6657 -0.4146 -0.6204 +vn 0.6657 -0.6204 -0.4146 +vn -0.6657 -0.6204 -0.4146 +vn -0.6657 0.6204 -0.4146 +vn 0.6657 0.6204 -0.4146 +vn 0.6657 0.4146 -0.6204 +vn -0.6657 0.4146 -0.6204 +vn -0.6657 -0.7318 -0.1456 +vn 0.6657 -0.7319 -0.1456 +vn -0.6657 0.1456 -0.7318 +vn 0.6657 0.1456 -0.7318 +vn 0.6657 -0.1455 -0.7319 +vn -0.6657 -0.1455 -0.7319 +vn 0.6657 0.7318 -0.1456 +vn -0.6657 0.7319 -0.1456 +vn 0.6657 -0.1456 -0.7319 +vn -0.6657 -0.6894 0.2855 +vn -0.6894 0.6657 0.2856 +vn 0.2856 -0.6657 0.6894 +vn 0.6894 -0.6657 -0.2856 +vn 0.6894 0.6657 -0.2856 +vn -0.2856 -0.6657 -0.6894 +vn -0.2856 0.6657 -0.6894 +vn -0.6894 -0.6657 -0.2856 +vn -0.7902 0.6128 0.0000 +vn -0.7300 0.6128 0.3024 +vn -0.5587 0.6128 0.5587 +vn -0.3024 0.6128 0.7300 +vn 0.0000 0.6128 0.7902 +vn 0.3024 0.6128 0.7300 +vn 0.5587 0.6128 0.5587 +vn 0.7300 0.6128 0.3024 +vn 0.7902 0.6128 0.0000 +vn 0.7300 0.6128 -0.3024 +vn 0.5587 0.6128 -0.5587 +vn 0.3024 0.6128 -0.7300 +vn 0.0000 0.6128 -0.7902 +vn -0.3024 0.6128 -0.7300 +vn -0.5587 0.6128 -0.5587 +vn -0.7300 0.6128 -0.3024 +vn -0.7300 -0.6128 -0.3024 +vn -0.7902 -0.6128 0.0000 +vn -0.6660 -0.6930 -0.2759 +vn -0.7209 -0.6930 0.0000 +vn -0.5098 0.6930 -0.5098 +vn -0.6661 0.6930 -0.2759 +vn -0.5098 -0.6930 -0.5098 +vn -0.7209 0.6930 0.0000 +vn -0.5587 -0.6128 -0.5587 +vn -0.2759 0.6930 -0.6661 +vn -0.2759 -0.6930 -0.6660 +vn -0.3024 -0.6128 -0.7300 +vn 0.0000 0.6930 -0.7209 +vn 0.0000 -0.6930 -0.7209 +vn 0.0000 -0.6128 -0.7902 +vn 0.2759 0.6930 -0.6661 +vn 0.2759 -0.6930 -0.6660 +vn 0.3024 -0.6128 -0.7300 +vn 0.5098 0.6930 -0.5098 +vn 0.5098 -0.6930 -0.5098 +vn 0.5587 -0.6128 -0.5587 +vn 0.6660 0.6930 -0.2759 +vn 0.6660 -0.6930 -0.2759 +vn 0.7300 -0.6128 -0.3024 +vn 0.7209 0.6930 0.0000 +vn 0.7209 -0.6930 0.0000 +vn 0.7902 -0.6128 0.0000 +vn 0.6660 0.6930 0.2759 +vn 0.6661 -0.6930 0.2759 +vn 0.7300 -0.6128 0.3024 +vn 0.5098 0.6930 0.5098 +vn 0.5098 -0.6930 0.5098 +vn 0.5588 -0.6128 0.5587 +vn 0.2759 0.6930 0.6660 +vn 0.2759 -0.6930 0.6661 +vn 0.3024 -0.6128 0.7300 +vn 0.0000 0.6930 0.7209 +vn 0.0000 -0.6930 0.7209 +vn 0.0000 -0.6128 0.7902 +vn -0.2759 0.6930 0.6660 +vn -0.2759 -0.6930 0.6661 +vn -0.3024 -0.6128 0.7300 +vn -0.5098 0.6930 0.5098 +vn -0.5098 -0.6930 0.5098 +vn -0.5587 -0.6128 0.5587 +vn -0.6660 0.6930 0.2759 +vn -0.6661 -0.6930 0.2759 +vn -0.7300 -0.6128 0.3024 +vn 0.6894 -0.6657 0.2856 +vn -0.6894 0.6657 -0.2856 +vn -0.6100 0.0000 0.7924 +vn -0.6100 -0.6862 0.3962 +vn 0.0000 -0.8660 0.5000 +vn -0.6100 -0.6862 -0.3962 +vn 0.0000 -0.8660 -0.5000 +vn -0.6100 0.0000 -0.7924 +vn -0.6100 0.6862 -0.3962 +vn 0.0000 0.8660 -0.5000 +vn -0.6100 0.6862 0.3962 +vn 0.0000 0.8660 0.5000 +vn 0.6100 0.0000 0.7924 +vn 0.6100 0.6862 0.3962 +vn 0.6100 0.6862 -0.3962 +vn 0.6100 0.0000 -0.7924 +vn 0.6100 -0.6862 -0.3962 +vn 0.6100 -0.6862 0.3962 +vn 0.6657 0.2856 0.6894 +vn -0.6657 0.6894 0.2856 +vn 0.6657 0.6894 -0.2856 +vn -0.6657 0.6894 -0.2856 +vn 0.6657 0.2855 -0.6894 +vn -0.6657 0.2855 -0.6894 +vn 0.6657 -0.2856 -0.6894 +vn -0.6657 -0.6894 -0.2855 +vn 0.6657 -0.2855 0.6894 +vn -0.6657 -0.2855 0.6894 +vn -0.6657 0.2855 0.6894 +vn 0.6657 0.6894 0.2855 +vn -0.2856 -0.6894 0.6657 +vn 0.6894 -0.2855 0.6657 +vn -0.7462 0.0000 -0.6657 +vn -0.6894 0.2855 0.6657 +vn -0.6894 0.2856 -0.6657 +vn -0.5276 0.5276 -0.6657 +vn -0.2855 0.6894 -0.6657 +vn 0.0000 0.7462 -0.6657 +vn 0.2855 0.6894 -0.6657 +vn 0.5276 0.5276 -0.6657 +vn 0.6894 0.2855 -0.6657 +vn 0.7462 0.0000 -0.6657 +vn 0.6894 -0.2855 -0.6657 +vn 0.5276 -0.5276 -0.6657 +vn 0.2855 -0.6894 0.6657 +vn 0.2855 -0.6894 -0.6657 +vn 0.0000 -0.7462 -0.6657 +vn -0.2856 -0.6894 -0.6657 +vn -0.5276 -0.5276 -0.6657 +vn -0.6894 -0.2856 0.6657 +vn -0.6894 -0.2855 -0.6657 +vn 0.6128 0.7902 0.0000 +vn 0.6128 0.7300 0.3024 +vn 0.6128 0.5587 0.5587 +vn 0.6128 0.3024 0.7300 +vn 0.6128 0.0000 0.7902 +vn 0.6128 -0.3024 0.7300 +vn 0.6128 -0.5587 0.5587 +vn 0.6128 -0.7300 0.3024 +vn 0.6128 -0.7902 0.0000 +vn 0.6128 -0.7300 -0.3024 +vn 0.6128 -0.5587 -0.5587 +vn 0.6128 -0.3024 -0.7300 +vn 0.6128 0.0000 -0.7902 +vn 0.6128 0.3024 -0.7300 +vn 0.6128 0.5587 -0.5587 +vn 0.6128 0.7300 -0.3024 +vn -0.6128 0.7300 -0.3024 +vn -0.6128 0.7902 0.0000 +vn -0.6930 0.6660 -0.2759 +vn -0.6930 0.7209 0.0000 +vn 0.6930 0.5098 -0.5098 +vn 0.6930 0.6660 -0.2759 +vn -0.6930 0.5098 -0.5098 +vn 0.6930 0.7209 0.0000 +vn -0.6128 0.5587 -0.5587 +vn 0.6930 0.2759 -0.6661 +vn -0.6930 0.2759 -0.6660 +vn -0.6128 0.3024 -0.7300 +vn 0.6930 0.0000 -0.7209 +vn -0.6930 0.0000 -0.7209 +vn -0.6128 0.0000 -0.7902 +vn 0.6930 -0.2759 -0.6661 +vn -0.6930 -0.2759 -0.6660 +vn -0.6128 -0.3024 -0.7300 +vn 0.6930 -0.5098 -0.5098 +vn -0.6930 -0.5098 -0.5098 +vn -0.6128 -0.5587 -0.5587 +vn 0.6930 -0.6660 -0.2759 +vn -0.6930 -0.6660 -0.2759 +vn -0.6128 -0.7300 -0.3024 +vn 0.6930 -0.7209 0.0000 +vn -0.6930 -0.7209 0.0000 +vn -0.6128 -0.7902 0.0000 +vn 0.6930 -0.6660 0.2759 +vn -0.6930 -0.6661 0.2759 +vn -0.6128 -0.7300 0.3024 +vn 0.6930 -0.5098 0.5098 +vn -0.6930 -0.5098 0.5098 +vn -0.6128 -0.5588 0.5587 +vn 0.6930 -0.2759 0.6660 +vn -0.6930 -0.2759 0.6661 +vn -0.6128 -0.3024 0.7300 +vn 0.6930 0.0000 0.7209 +vn -0.6930 0.0000 0.7209 +vn -0.6128 0.0000 0.7902 +vn 0.6930 0.2759 0.6660 +vn -0.6930 0.2759 0.6661 +vn -0.6128 0.3024 0.7300 +vn 0.6930 0.5098 0.5098 +vn -0.6930 0.5098 0.5098 +vn -0.6128 0.5587 0.5587 +vn 0.6930 0.6660 0.2759 +vn -0.6930 0.6661 0.2759 +vn -0.6128 0.7300 0.3024 +g Cube.013_Cube.023_main +s off +f 65/1/1 67/2/1 68/3/1 66/4/1 +f 67/5/2 71/6/2 72/7/2 68/8/2 +f 71/9/3 69/10/3 70/11/3 72/7/3 +f 69/12/4 65/13/4 66/4/4 70/14/4 +f 67/15/5 65/16/5 69/17/5 71/18/5 +f 72/19/6 70/20/6 66/21/6 68/22/6 +f 75/23/1 76/24/1 80/25/1 79/26/1 +f 73/27/3 74/28/3 78/29/3 77/30/3 +f 77/31/4 78/32/4 76/33/4 75/34/4 +f 82/35/1 86/36/1 83/37/1 81/38/1 +f 79/39/6 82/40/6 81/41/6 73/42/6 77/43/6 75/44/6 +f 74/45/5 87/46/5 88/47/5 80/48/5 76/49/5 78/50/5 +f 79/51/4 80/52/4 88/53/4 85/54/4 86/55/4 82/56/4 +f 73/57/2 81/58/2 83/59/2 84/60/2 87/61/2 74/62/2 +f 84/63/1 85/64/1 88/65/1 87/66/1 +f 85/67/5 84/68/5 83/69/5 86/70/5 +f 89/71/2 90/72/2 92/73/2 91/74/2 +f 91/75/3 92/76/3 96/77/3 95/78/3 +f 95/79/4 96/80/4 94/81/4 93/82/4 +f 93/83/1 94/84/1 90/85/1 89/86/1 +f 91/87/6 95/88/6 93/89/6 89/90/6 +f 96/91/5 92/92/5 90/93/5 94/94/5 +f 129/95/3 130/96/3 132/97/3 131/98/3 +f 131/99/4 132/100/4 136/101/4 135/102/4 +f 135/103/1 136/104/1 134/105/1 133/106/1 +f 133/107/2 134/108/2 130/109/2 129/110/2 +f 131/111/6 135/112/6 133/113/6 129/114/6 +f 136/115/5 132/116/5 130/117/5 134/118/5 +f 142/119/3 138/120/3 137/121/3 141/122/3 +f 137/123/6 139/124/6 143/125/6 141/126/6 +f 143/127/2 144/128/2 142/129/2 141/130/2 +f 142/131/5 144/132/5 140/133/5 138/134/5 +f 140/135/1 144/136/1 143/137/1 139/138/1 +f 151/139/3 145/140/3 147/141/3 155/142/3 +f 155/142/5 147/141/5 150/143/5 156/144/5 +f 156/145/1 150/146/1 148/147/1 157/148/1 +f 157/148/6 148/147/6 145/140/6 151/139/6 +f 159/149/6 154/150/6 160/151/6 158/152/6 +f 149/153/1 153/154/1 154/150/1 159/149/1 +f 146/155/5 152/156/5 153/157/5 149/158/5 +f 158/152/3 160/151/3 152/156/3 146/155/3 +f 153/159/1 156/160/1 157/161/1 154/162/1 +f 152/163/5 155/164/5 156/165/5 153/166/5 +f 160/167/3 151/168/3 155/164/3 152/163/3 +f 154/162/6 157/161/6 151/169/6 160/170/6 +f 163/171/4 164/172/4 168/173/4 167/174/4 +f 165/175/2 166/176/2 162/177/2 161/178/2 +f 163/179/6 167/180/6 165/175/6 161/178/6 +f 168/173/5 164/172/5 162/177/5 166/176/5 +f 203/181/4 204/182/4 208/183/4 207/184/4 +f 205/185/2 206/186/2 202/187/2 201/188/2 +f 203/189/6 207/190/6 205/185/6 201/188/6 +f 208/183/5 204/182/5 202/187/5 206/186/5 +f 211/191/4 212/192/4 216/193/4 215/194/4 +f 215/195/1 216/196/1 214/197/1 213/198/1 +f 213/199/2 214/200/2 210/201/2 209/202/2 +f 211/203/6 215/204/6 213/205/6 209/206/6 +f 216/207/5 212/208/5 210/209/5 214/210/5 +f 217/211/3 218/212/3 220/213/3 219/214/3 +f 219/215/4 220/216/4 224/217/4 223/218/4 +f 223/219/1 224/220/1 222/221/1 221/222/1 +f 221/223/2 222/224/2 218/225/2 217/226/2 +f 219/214/6 223/227/6 221/228/6 217/229/6 +f 224/230/5 220/231/5 218/232/5 222/221/5 +f 226/233/6 227/234/6 285/235/6 284/236/6 +f 227/234/7 228/237/7 286/238/7 285/235/7 +f 228/237/6 281/239/6 338/240/6 286/238/6 +f 281/241/8 229/242/8 287/243/8 338/244/8 +f 229/242/1 230/245/1 288/246/1 287/243/1 +f 230/245/9 231/247/9 289/248/9 288/246/9 +f 231/249/5 232/250/5 290/251/5 289/252/5 +f 232/253/10 233/254/10 291/255/10 290/256/10 +f 262/257/5 263/258/5 320/259/5 319/260/5 +f 234/261/10 235/262/10 293/263/10 292/264/10 +f 235/265/5 236/266/5 294/267/5 293/268/5 +f 236/269/9 237/270/9 295/271/9 294/272/9 +f 237/273/5 238/274/5 296/275/5 295/276/5 +f 238/277/10 239/278/10 297/279/10 296/280/10 +f 252/281/1 253/282/1 311/283/1 310/284/1 +f 240/285/11 241/286/11 299/287/11 298/288/11 +f 241/286/12 242/289/12 300/290/12 299/287/12 +f 242/289/13 243/291/13 301/292/13 300/290/13 +f 243/291/14 244/293/14 302/294/14 301/292/14 +f 244/293/15 245/295/15 303/296/15 302/294/15 +f 245/295/16 246/297/16 304/298/16 303/296/16 +f 246/297/17 247/299/17 305/300/17 304/298/17 +f 247/299/18 248/301/18 306/302/18 305/300/18 +f 248/301/19 249/303/19 307/304/19 306/302/19 +f 249/303/20 250/305/20 308/306/20 307/304/20 +f 250/305/21 251/307/21 309/308/21 308/306/21 +f 251/307/22 252/309/22 310/310/22 309/308/22 +f 253/282/9 254/311/9 312/312/9 311/283/9 +f 264/313/3 265/314/3 322/315/3 321/316/3 +f 255/317/9 256/318/9 340/319/9 313/320/9 +f 256/321/1 257/322/1 314/323/1 340/324/1 +f 257/322/8 258/325/8 315/326/8 314/323/8 +f 258/327/6 259/328/6 316/329/6 315/330/6 +f 259/331/7 260/332/7 317/333/7 316/334/7 +f 260/332/3 261/335/3 318/336/3 317/333/3 +f 261/335/10 262/337/10 319/260/10 318/336/10 +f 254/338/5 255/339/5 313/340/5 312/341/5 +f 263/342/10 264/313/10 321/316/10 320/259/10 +f 265/343/11 266/344/11 323/345/11 322/346/11 +f 266/344/12 267/347/12 324/348/12 323/345/12 +f 267/347/13 268/349/13 325/350/13 324/348/13 +f 268/349/23 269/351/23 326/352/23 325/350/23 +f 269/351/15 270/353/15 327/354/15 326/352/15 +f 270/353/16 271/355/16 328/356/16 327/354/16 +f 271/355/17 272/357/17 329/358/17 328/356/17 +f 272/357/18 273/359/18 330/360/18 329/358/18 +f 273/359/24 274/361/24 331/362/24 330/360/24 +f 274/361/25 275/363/25 332/364/25 331/362/25 +f 275/363/21 276/365/21 333/366/21 332/364/21 +f 276/365/22 277/367/22 334/368/22 333/366/22 +f 239/278/3 240/369/3 298/370/3 297/279/3 +f 278/371/9 279/372/9 336/373/9 335/374/9 +f 282/375/26 280/376/26 337/377/26 339/378/26 +f 279/379/5 234/380/5 292/381/5 336/382/5 +f 233/254/3 282/375/3 339/378/3 291/255/3 +f 280/383/6 225/384/6 283/385/6 337/386/6 +f 225/384/8 226/233/8 284/236/8 283/385/8 +f 277/387/1 278/371/1 335/374/1 334/388/1 +f 259/389/4 258/390/4 257/391/4 233/392/4 232/393/4 231/394/4 230/395/4 260/396/4 +f 294/397/2 304/398/2 284/399/2 285/400/2 328/401/2 293/402/2 +f 229/403/4 281/404/4 228/405/4 227/406/4 262/407/4 261/408/4 260/396/4 230/395/4 +f 236/409/4 235/410/4 271/411/4 227/406/4 226/412/4 246/413/4 +f 317/414/2 318/415/2 319/416/2 285/400/2 286/417/2 338/418/2 287/419/2 288/420/2 +f 322/421/2 323/422/2 324/423/2 325/424/2 326/425/2 327/426/2 328/401/2 285/400/2 319/416/2 320/427/2 321/428/2 +f 249/429/4 248/430/4 247/431/4 246/413/4 226/412/4 255/432/4 254/433/4 253/434/4 252/435/4 251/436/4 250/437/4 +f 332/438/2 333/439/2 334/440/2 335/441/2 336/442/2 292/443/2 293/402/2 328/401/2 329/444/2 330/445/2 331/446/2 +f 312/447/2 313/448/2 284/399/2 304/398/2 305/449/2 306/450/2 307/451/2 308/452/2 309/453/2 310/454/2 311/455/2 +f 279/456/4 278/457/4 277/458/4 276/459/4 275/460/4 274/461/4 273/462/4 272/463/4 271/411/4 235/410/4 234/464/4 +f 314/465/2 315/466/2 316/467/2 317/414/2 288/420/2 289/468/2 290/469/2 291/470/2 +f 340/471/2 314/465/2 291/470/2 339/472/2 337/473/2 283/474/2 284/399/2 313/448/2 +f 280/475/4 282/476/4 233/392/4 257/391/4 256/477/4 255/432/4 226/412/4 225/478/4 +f 242/479/4 241/480/4 240/481/4 239/482/4 238/483/4 237/484/4 236/409/4 246/413/4 245/485/4 244/486/4 243/487/4 +f 262/407/4 227/406/4 271/411/4 270/488/4 269/489/4 268/490/4 267/491/4 266/492/4 265/493/4 264/494/4 263/495/4 +f 302/496/2 303/497/2 304/398/2 294/397/2 295/498/2 296/499/2 297/500/2 298/501/2 299/502/2 300/503/2 301/504/2 +f 351/505/3 363/506/3 350/507/3 349/508/3 362/509/3 348/510/3 361/511/3 347/512/3 360/513/3 346/514/3 345/515/3 359/516/3 352/517/3 365/518/3 364/519/3 +f 358/520/27 359/521/27 378/522/27 377/523/27 +f 364/524/5 365/525/5 380/526/5 379/527/5 +f 352/528/6 341/529/6 366/530/6 381/531/6 +f 342/532/6 353/533/6 373/534/6 367/535/6 +f 354/536/4 343/537/4 382/538/4 374/539/4 +f 343/537/28 355/540/28 383/541/28 382/538/28 +f 355/542/5 344/543/5 384/544/5 383/545/5 +f 341/529/29 342/532/29 367/535/29 366/530/29 +f 344/546/30 356/547/30 375/548/30 384/549/30 +f 345/550/31 346/551/31 369/552/31 368/553/31 +f 359/521/32 345/550/32 368/553/32 378/522/32 +f 349/554/6 350/555/6 371/556/6 370/557/6 +f 346/551/33 360/558/33 385/559/33 369/552/33 +f 360/558/34 347/560/34 386/561/34 385/559/34 +f 347/560/35 361/562/35 387/563/35 386/561/35 +f 361/562/36 348/564/36 388/565/36 387/563/36 +f 348/564/37 362/566/37 389/567/37 388/565/37 +f 362/566/38 349/568/38 370/569/38 389/567/38 +f 350/570/39 363/571/39 390/572/39 371/573/39 +f 363/571/4 351/574/4 372/575/4 390/572/4 +f 351/574/40 364/576/40 379/577/40 372/575/40 +f 353/578/39 354/536/39 374/539/39 373/579/39 +f 356/547/41 357/580/41 376/581/41 375/548/41 +f 357/580/42 358/520/42 377/523/42 376/581/42 +f 375/582/1 376/583/1 377/584/1 378/585/1 381/586/1 366/587/1 383/588/1 384/589/1 +f 341/590/3 352/517/3 359/516/3 358/591/3 357/592/3 356/593/3 344/594/3 355/595/3 +f 382/596/1 383/588/1 366/587/1 367/597/1 373/598/1 374/599/1 +f 353/600/3 342/601/3 341/590/3 355/595/3 343/602/3 354/603/3 +f 368/604/1 369/605/1 385/606/1 386/607/1 387/608/1 388/609/1 389/610/1 370/611/1 371/612/1 390/613/1 372/614/1 379/615/1 380/616/1 381/586/1 378/585/1 +f 401/617/3 413/618/3 400/619/3 399/620/3 412/621/3 398/622/3 411/623/3 397/624/3 410/625/3 396/626/3 395/627/3 409/628/3 402/629/3 415/630/3 414/631/3 +f 408/632/43 409/633/43 428/634/43 427/635/43 +f 414/636/5 415/637/5 430/638/5 429/639/5 +f 402/640/6 391/641/6 416/642/6 431/643/6 +f 392/644/6 403/645/6 423/646/6 417/647/6 +f 404/648/4 393/649/4 432/650/4 424/651/4 +f 393/649/28 405/652/28 433/653/28 432/650/28 +f 405/654/5 394/655/5 434/656/5 433/657/5 +f 391/641/29 392/644/29 417/647/29 416/642/29 +f 394/658/30 406/659/30 425/660/30 434/661/30 +f 395/662/31 396/663/31 419/664/31 418/665/31 +f 409/633/32 395/662/32 418/665/32 428/634/32 +f 399/666/6 400/667/6 421/668/6 420/669/6 +f 396/663/33 410/670/33 435/671/33 419/664/33 +f 410/670/34 397/672/34 436/673/34 435/671/34 +f 397/672/35 411/674/35 437/675/35 436/673/35 +f 411/674/36 398/676/36 438/677/36 437/675/36 +f 398/676/37 412/678/37 439/679/37 438/677/37 +f 412/678/38 399/680/38 420/681/38 439/679/38 +f 400/682/39 413/683/39 440/684/39 421/685/39 +f 413/683/4 401/686/4 422/687/4 440/684/4 +f 401/686/40 414/688/40 429/689/40 422/687/40 +f 403/690/39 404/648/39 424/651/39 423/691/39 +f 406/659/41 407/692/41 426/693/41 425/660/41 +f 407/692/42 408/632/42 427/635/42 426/693/42 +f 425/694/1 426/695/1 427/696/1 428/697/1 431/698/1 416/699/1 433/700/1 434/701/1 +f 391/702/3 402/629/3 409/628/3 408/703/3 407/704/3 406/705/3 394/706/3 405/707/3 +f 432/708/1 433/700/1 416/699/1 417/709/1 423/710/1 424/711/1 +f 403/712/3 392/713/3 391/702/3 405/707/3 393/714/3 404/715/3 +f 418/716/1 419/717/1 435/718/1 436/719/1 437/720/1 438/721/1 439/722/1 420/723/1 421/724/1 440/725/1 422/726/1 429/727/1 430/728/1 431/698/1 428/697/1 +f 509/729/2 503/730/2 512/731/2 513/732/2 +f 497/733/6 496/734/6 495/735/6 494/736/6 493/737/6 490/738/6 511/739/6 513/740/6 512/741/6 502/742/6 500/743/6 499/744/6 498/745/6 +f 489/746/3 492/747/3 491/748/3 490/749/3 493/750/3 483/751/3 475/752/3 +f 502/753/44 501/754/44 488/755/44 474/756/44 476/757/44 500/758/44 +f 507/759/7 492/760/7 489/761/7 484/762/7 485/763/7 +f 473/764/45 484/765/45 489/746/45 475/752/45 +f 477/766/46 478/767/46 498/768/46 499/769/46 +f 498/768/2 478/767/2 479/770/2 497/771/2 +f 485/763/7 486/772/7 505/773/7 506/774/7 +f 504/775/6 505/773/6 486/772/6 487/776/6 +f 483/777/47 493/778/47 494/779/47 482/780/47 +f 501/754/1 502/753/1 512/781/1 503/782/1 +f 492/783/29 507/784/29 508/785/29 510/786/29 491/787/29 +f 480/788/46 481/789/46 495/790/46 496/791/46 +f 510/786/2 511/792/2 490/793/2 491/787/2 +f 503/794/48 509/795/48 506/796/48 +f 500/758/1 476/757/1 477/797/1 499/798/1 +f 497/799/1 479/800/1 480/801/1 496/802/1 +f 509/803/6 508/804/6 507/759/6 485/763/6 506/774/6 +f 495/790/2 481/789/2 482/780/2 494/779/2 +f 504/805/2 503/806/2 506/807/2 505/808/2 +f 508/809/1 509/810/1 513/811/1 511/812/1 510/813/1 +f 482/814/5 481/815/5 480/816/5 479/817/5 478/818/5 477/819/5 476/820/5 474/821/5 473/822/5 475/823/5 483/824/5 +f 501/754/8 503/782/8 504/825/8 487/826/8 488/755/8 +f 519/827/49 522/828/49 516/829/49 514/830/49 +f 528/831/5 527/832/5 526/833/5 525/834/5 524/835/5 523/836/5 518/837/5 516/838/5 522/839/5 529/840/5 +f 534/841/29 544/842/29 545/843/29 535/844/29 +f 526/845/46 527/846/46 539/847/46 540/848/46 +f 541/849/1 525/850/1 526/851/1 540/852/1 +f 529/853/47 532/854/47 538/855/47 528/856/47 +f 531/857/3 534/858/3 535/859/3 533/860/3 532/854/3 529/853/3 522/861/3 519/862/3 520/863/3 +f 544/864/6 534/865/6 531/866/6 536/867/6 +f 523/868/44 530/869/44 517/870/44 518/871/44 +f 543/872/46 537/873/46 530/874/46 523/875/46 524/876/46 +f 536/877/29 531/878/29 520/879/29 521/880/29 537/873/29 543/872/29 +f 545/843/2 546/881/2 533/882/2 535/844/2 +f 539/847/2 527/846/2 528/883/2 538/884/2 +f 521/885/6 515/886/6 517/887/6 530/888/6 537/889/6 +f 544/890/1 536/891/1 542/892/1 546/893/1 545/894/1 +f 519/862/45 514/895/45 515/896/45 521/897/45 520/863/45 +f 543/872/50 524/876/50 525/898/50 541/899/50 542/900/50 536/877/50 +f 541/901/6 540/902/6 539/903/6 538/904/6 532/905/6 533/906/6 546/907/6 542/908/6 +f 584/909/51 587/910/51 581/911/51 579/912/51 +f 593/913/6 592/914/6 591/915/6 590/916/6 589/917/6 588/918/6 583/919/6 581/920/6 587/921/6 594/922/6 +f 599/923/28 609/924/28 610/925/28 600/926/28 +f 591/927/44 592/928/44 604/929/44 605/930/44 +f 606/931/1 590/932/1 591/933/1 605/934/1 +f 594/935/45 597/936/45 603/937/45 593/938/45 +f 596/939/3 599/940/3 600/941/3 598/942/3 597/936/3 594/935/3 587/943/3 584/944/3 585/945/3 +f 609/946/5 599/947/5 596/948/5 601/949/5 +f 588/950/46 595/951/46 582/952/46 583/953/46 +f 608/954/44 602/955/44 595/956/44 588/957/44 589/958/44 +f 601/959/28 596/960/28 585/961/28 586/962/28 602/955/28 608/954/28 +f 610/925/4 611/963/4 598/964/4 600/926/4 +f 604/929/4 592/928/4 593/965/4 603/966/4 +f 586/967/5 580/968/5 582/969/5 595/970/5 602/971/5 +f 609/972/1 601/973/1 607/974/1 611/975/1 610/976/1 +f 584/944/47 579/977/47 580/978/47 586/979/47 585/945/47 +f 608/954/52 589/958/52 590/980/52 606/981/52 607/982/52 601/959/52 +f 606/983/5 605/984/5 604/985/5 603/986/5 597/987/5 598/988/5 611/989/5 607/990/5 +f 648/991/4 642/992/4 651/993/4 652/994/4 +f 636/995/5 635/996/5 634/997/5 633/998/5 632/999/5 629/1000/5 650/1001/5 652/1002/5 651/1003/5 641/1004/5 639/1005/5 638/1006/5 637/1007/5 +f 628/1008/3 631/1009/3 630/1010/3 629/1011/3 632/1012/3 622/1013/3 614/1014/3 +f 641/1015/46 640/1016/46 627/1017/46 613/1018/46 615/1019/46 639/1020/46 +f 646/1021/10 631/1022/10 628/1023/10 623/1024/10 624/1025/10 +f 612/1026/47 623/1027/47 628/1008/47 614/1014/47 +f 616/1028/44 617/1029/44 637/1030/44 638/1031/44 +f 637/1030/4 617/1029/4 618/1032/4 636/1033/4 +f 624/1025/10 625/1034/10 644/1035/10 645/1036/10 +f 643/1037/5 644/1035/5 625/1034/5 626/1038/5 +f 622/1039/45 632/1040/45 633/1041/45 621/1042/45 +f 640/1016/1 641/1015/1 651/1043/1 642/1044/1 +f 631/1045/28 646/1046/28 647/1047/28 649/1048/28 630/1049/28 +f 619/1050/44 620/1051/44 634/1052/44 635/1053/44 +f 649/1048/4 650/1054/4 629/1055/4 630/1049/4 +f 642/1056/53 648/1057/53 645/1058/53 +f 639/1020/1 615/1019/1 616/1059/1 638/1060/1 +f 636/1061/1 618/1062/1 619/1063/1 635/1064/1 +f 648/1065/54 647/1066/54 646/1021/54 624/1025/54 645/1036/54 +f 634/1052/4 620/1051/4 621/1042/4 633/1041/4 +f 643/1067/4 642/1068/4 645/1069/4 644/1070/4 +f 647/1071/1 648/1072/1 652/1073/1 650/1074/1 649/1075/1 +f 621/1076/6 620/1077/6 619/1078/6 618/1079/6 617/1080/6 616/1081/6 615/1082/6 613/1083/6 612/1084/6 614/1085/6 622/1086/6 +f 640/1016/9 642/1044/9 643/1087/9 626/1088/9 627/1017/9 +f 656/1089/1 654/1090/1 716/1091/1 714/1092/1 712/1093/1 710/1094/1 708/1095/1 706/1096/1 704/1097/1 702/1098/1 876/1099/1 884/1100/1 900/1101/1 856/1102/1 848/1103/1 852/1104/1 796/1105/1 792/1106/1 788/1107/1 908/1108/1 904/1109/1 832/1110/1 888/1111/1 896/1112/1 840/1113/1 827/1114/1 835/1115/1 670/1116/1 668/1117/1 666/1118/1 664/1119/1 662/1120/1 660/1121/1 658/1122/1 +f 717/1123/3 719/1124/3 720/1125/3 721/1126/3 722/1127/3 723/1128/3 724/1129/3 725/1130/3 833/1131/3 825/1132/3 837/1133/3 893/1134/3 885/1135/3 829/1136/3 901/1137/3 905/1138/3 785/1139/3 789/1140/3 793/1141/3 849/1142/3 845/1143/3 853/1144/3 897/1145/3 881/1146/3 873/1147/3 741/1148/3 742/1149/3 743/1150/3 744/1151/3 745/1152/3 746/1153/3 747/1154/3 748/1155/3 718/1156/3 +f 653/1157/3 655/1158/3 657/1159/3 659/1160/3 661/1161/3 663/1162/3 665/1163/3 667/1164/3 669/1165/3 836/1166/3 828/1167/3 839/1168/3 895/1169/3 887/1170/3 831/1171/3 903/1172/3 907/1173/3 786/1174/3 790/1175/3 794/1176/3 850/1177/3 846/1178/3 854/1179/3 899/1180/3 883/1181/3 875/1182/3 701/1183/3 703/1184/3 705/1185/3 707/1186/3 709/1187/3 711/1188/3 713/1189/3 715/1190/3 +f 749/1191/1 780/1192/1 779/1193/1 778/1194/1 777/1195/1 776/1196/1 775/1197/1 774/1198/1 773/1199/1 874/1200/1 882/1201/1 898/1202/1 855/1203/1 847/1204/1 851/1205/1 795/1206/1 791/1207/1 787/1208/1 906/1209/1 902/1210/1 830/1211/1 886/1212/1 894/1213/1 838/1214/1 826/1215/1 834/1216/1 757/1217/1 756/1218/1 755/1219/1 754/1220/1 753/1221/1 752/1222/1 751/1223/1 750/1224/1 +f 757/1217/1 834/1216/1 858/1225/1 870/1226/1 782/1227/1 866/1228/1 862/1229/1 890/1230/1 842/1231/1 818/1232/1 814/1233/1 822/1234/1 878/1235/1 810/1236/1 802/1237/1 798/1238/1 806/1239/1 874/1200/1 773/1199/1 772/1240/1 771/1241/1 770/1242/1 769/1243/1 768/1244/1 767/1245/1 766/1246/1 765/1247/1 764/1248/1 763/1249/1 762/1250/1 761/1251/1 760/1252/1 759/1253/1 758/1254/1 +f 670/1116/1 835/1115/1 859/1255/1 871/1256/1 783/1257/1 867/1258/1 863/1259/1 891/1260/1 843/1261/1 819/1262/1 815/1263/1 823/1264/1 879/1265/1 811/1266/1 803/1267/1 799/1268/1 807/1269/1 876/1099/1 702/1098/1 700/1270/1 698/1271/1 696/1272/1 694/1273/1 692/1274/1 690/1275/1 688/1276/1 686/1277/1 684/1278/1 682/1279/1 680/1280/1 678/1281/1 676/1282/1 674/1283/1 672/1284/1 +f 741/1148/3 873/1147/3 805/1285/3 797/1286/3 801/1287/3 809/1288/3 877/1289/3 821/1290/3 813/1291/3 817/1292/3 841/1293/3 889/1294/3 861/1295/3 865/1296/3 781/1297/3 869/1298/3 857/1299/3 833/1131/3 725/1130/3 726/1300/3 727/1301/3 728/1302/3 729/1303/3 730/1304/3 731/1305/3 732/1306/3 733/1307/3 734/1308/3 735/1309/3 736/1310/3 737/1311/3 738/1312/3 739/1313/3 740/1314/3 +f 701/1183/3 875/1182/3 808/1315/3 800/1316/3 804/1317/3 812/1318/3 880/1319/3 824/1320/3 816/1321/3 820/1322/3 844/1323/3 892/1324/3 864/1325/3 868/1326/3 784/1327/3 872/1328/3 860/1329/3 836/1166/3 669/1165/3 671/1330/3 673/1331/3 675/1332/3 677/1333/3 679/1334/3 681/1335/3 683/1336/3 685/1337/3 687/1338/3 689/1339/3 691/1340/3 693/1341/3 695/1342/3 697/1343/3 699/1344/3 +f 926/1345/55 930/1346/55 929/1347/55 925/1348/55 +f 928/1349/56 927/1350/56 1036/1351/56 1033/1352/56 +f 1055/1353/57 1058/1354/57 1051/1355/57 1054/1356/57 +f 925/1357/58 929/1347/58 927/1350/58 928/1349/58 +f 1055/1358/3 1056/1359/3 926/1360/3 925/1361/3 928/1362/3 1060/1363/3 1057/1364/3 1058/1365/3 +f 1070/1366/59 1063/1367/59 1062/1368/59 1071/1369/59 +f 930/1370/60 926/1371/60 1018/1372/60 1019/1373/60 +f 1026/1374/61 1027/1375/61 1030/1376/61 1031/1377/61 +f 1023/1378/62 1056/1379/62 1053/1380/62 1022/1381/62 +f 1059/1382/63 1040/1383/63 1037/1384/63 1050/1385/63 +f 1048/1386/64 1045/1387/64 1044/1388/64 1041/1389/64 +f 962/1390/1 947/1391/1 948/1392/1 949/1393/1 950/1394/1 951/1395/1 952/1396/1 953/1397/1 954/1398/1 955/1399/1 956/1400/1 957/1401/1 958/1402/1 959/1403/1 960/1404/1 961/1405/1 +f 980/1406/55 979/1407/55 983/1408/55 984/1409/55 +f 982/1410/56 1042/1411/56 1043/1412/56 981/1413/56 +f 1068/1414/57 1065/1415/57 1064/1416/57 1069/1417/57 +f 979/1418/58 982/1410/58 981/1413/58 983/1408/58 +f 984/1419/60 1028/1420/60 1025/1421/60 980/1422/60 +f 1032/1423/62 1029/1424/62 1066/1425/62 1067/1426/62 +f 1072/1427/63 1061/1428/63 1046/1429/63 1047/1430/63 +f 1016/1431/3 1015/1432/3 1014/1433/3 1013/1434/3 1012/1435/3 1011/1436/3 1010/1437/3 1009/1438/3 1008/1439/3 1007/1440/3 1006/1441/3 1005/1442/3 1004/1443/3 1003/1444/3 1002/1445/3 1001/1446/3 +f 1019/1373/65 1018/1372/65 1017/1447/65 1020/1448/65 +f 1023/1378/66 1022/1381/66 1021/1449/66 1024/1450/66 +f 1027/1375/65 1026/1374/65 1025/1451/65 1028/1452/65 +f 1031/1377/66 1030/1376/66 1029/1453/66 1032/1454/66 +f 1017/1455/61 1024/1456/61 1021/1457/61 1020/1458/61 +f 1033/1352/67 1036/1351/67 1035/1459/67 1034/1460/67 +f 1039/1461/68 1038/1462/68 1037/1463/68 1040/1464/68 +f 1041/1389/67 1044/1388/67 1043/1465/67 1042/1466/67 +f 1047/1430/68 1046/1429/68 1045/1467/68 1048/1468/68 +f 1039/1461/64 1034/1469/64 1035/1470/64 1038/1462/64 +f 1055/1353/69 1054/1356/69 1053/1471/69 1056/1472/69 +f 1057/1473/70 1052/1474/70 1051/1355/70 1058/1354/70 +f 1059/1382/71 1050/1385/71 1049/1475/71 1060/1476/71 +f 1067/1426/69 1066/1425/69 1065/1477/69 1068/1478/69 +f 1069/1417/70 1064/1416/70 1063/1367/70 1070/1366/70 +f 1071/1369/71 1062/1368/71 1061/1479/71 1072/1480/71 +f 1057/1473/59 1060/1481/59 1049/1482/59 1052/1474/59 +f 1036/1483/1 927/1484/1 1049/1485/1 +f 930/1486/1 1019/1487/1 1053/1488/1 +f 1021/1489/1 1022/1490/1 1053/1488/1 1019/1487/1 1020/1491/1 +f 1072/1492/1 1047/1493/1 1048/1494/1 1041/1495/1 1042/1496/1 1071/1497/1 +f 982/1498/1 979/1499/1 980/1500/1 1067/1501/1 1068/1502/1 1069/1503/1 1070/1504/1 1071/1497/1 +f 1051/1505/1 1052/1506/1 1049/1485/1 927/1484/1 929/1507/1 930/1486/1 1053/1488/1 1054/1508/1 +f 928/1362/3 1033/1509/3 1060/1363/3 +f 1059/1510/3 1060/1363/3 1033/1509/3 1034/1511/3 1039/1512/3 1040/1513/3 +f 1023/1514/3 1024/1515/3 1017/1516/3 1018/1517/3 1056/1359/3 +f 1018/1517/3 926/1360/3 1056/1359/3 +f 981/1518/3 1043/1519/3 1062/1520/3 +f 1062/1520/3 1043/1519/3 1044/1521/3 1045/1522/3 1046/1523/3 1061/1524/3 +f 1028/1525/3 984/1526/3 1066/1527/3 +f 1066/1527/3 1029/1528/3 1030/1529/3 1027/1530/3 1028/1525/3 +f 1050/1531/1 1037/1532/1 1038/1533/1 1035/1534/1 1036/1483/1 1049/1485/1 +f 980/1500/1 1025/1535/1 1067/1501/1 +f 1031/1536/1 1032/1537/1 1067/1501/1 1025/1535/1 1026/1538/1 +f 1042/1496/1 982/1498/1 1071/1497/1 +f 1063/1539/3 1064/1540/3 1065/1541/3 1066/1527/3 984/1526/3 983/1542/3 981/1518/3 1062/1520/3 +f 1073/1543/1 1075/1544/1 1077/1545/1 1079/1546/1 1081/1547/1 1083/1548/1 1085/1549/1 1087/1550/1 1089/1551/1 1091/1552/1 1093/1553/1 1095/1554/1 1097/1555/1 1099/1556/1 1101/1557/1 1103/1558/1 +f 1076/1559/3 1074/1560/3 1104/1561/3 1102/1562/3 1100/1563/3 1098/1564/3 1096/1565/3 1094/1566/3 1092/1567/3 1090/1568/3 1088/1569/3 1086/1570/3 1084/1571/3 1082/1572/3 1080/1573/3 1078/1574/3 +f 1108/1575/1 1106/1576/1 1116/1577/1 1114/1578/1 1112/1579/1 1110/1580/1 +f 1120/1581/3 1118/1582/3 1128/1583/3 1126/1584/3 1124/1585/3 1122/1586/3 +f 1132/1587/3 1130/1588/3 1140/1589/3 1138/1590/3 1136/1591/3 1134/1592/3 +f 1144/1593/3 1142/1594/3 1152/1595/3 1150/1596/3 1148/1597/3 1146/1598/3 +f 1156/1599/1 1154/1600/1 1164/1601/1 1162/1602/1 1160/1603/1 1158/1604/1 +f 1168/1605/1 1166/1606/1 1176/1607/1 1174/1608/1 1172/1609/1 1170/1610/1 +f 1187/1611/5 1183/1612/5 1181/1613/5 1185/1614/5 +f 1180/1615/1 1188/1616/1 1186/1617/1 1179/1618/1 +f 1177/1619/3 1182/1620/3 1184/1621/3 1178/1622/3 +f 1178/1623/6 1180/1624/6 1179/1618/6 1177/1619/6 +f 1178/1625/4 1184/1626/4 1188/1616/4 1180/1615/4 +f 1181/1613/10 1183/1612/10 1184/1627/10 1182/1628/10 +f 1183/1612/28 1187/1611/28 1188/1616/28 1184/1626/28 +f 1187/1611/9 1185/1614/9 1186/1629/9 1188/1630/9 +f 1185/1614/72 1181/1613/72 1182/1628/72 1186/1629/72 +f 1179/1618/2 1186/1617/2 1182/1620/2 1177/1619/2 +f 1221/1631/6 1222/1632/6 1223/1633/6 1224/1634/6 +f 1225/1635/5 1228/1636/5 1227/1637/5 1226/1638/5 +f 1223/1639/1 1227/1640/1 1228/1641/1 1224/1642/1 +f 1221/1643/3 1225/1644/3 1226/1645/3 1222/1646/3 +f 1224/1647/2 1228/1648/2 1225/1649/2 1221/1650/2 +f 1222/1651/4 1226/1652/4 1227/1653/4 1223/1654/4 +f 1232/1655/2 1234/1656/2 1236/1657/2 1231/1658/2 +f 1240/1659/6 1238/1660/6 1245/1661/6 1247/1662/6 1248/1663/6 1246/1664/6 1273/1665/6 1275/1666/6 1276/1667/6 1274/1668/6 1233/1669/6 1234/1670/6 1285/1671/6 1287/1672/6 1288/1673/6 1286/1674/6 1237/1675/6 1239/1676/6 +f 1229/1677/4 1230/1678/4 1235/1679/4 1233/1680/4 +f 1233/1669/6 1235/1681/6 1236/1682/6 1234/1670/6 +f 1262/1683/6 1253/1684/6 1255/1685/6 1256/1686/6 1254/1687/6 1289/1688/6 1291/1689/6 1292/1690/6 1290/1691/6 1236/1682/6 1235/1681/6 1269/1692/6 1271/1693/6 1272/1694/6 1270/1695/6 1261/1696/6 1263/1697/6 1264/1698/6 +f 1304/1699/1 1303/1700/1 1307/1701/1 1308/1702/1 +f 1307/1703/5 1306/1704/5 1305/1705/5 1308/1706/5 +f 1302/1707/3 1301/1708/3 1305/1709/3 1306/1710/3 +f 1301/1711/2 1304/1712/2 1308/1713/2 1305/1714/2 +f 1303/1715/4 1302/1716/4 1306/1717/4 1307/1718/4 +f 1312/1719/2 1310/1720/2 1316/1721/2 1314/1722/2 1331/1723/2 1332/1724/2 1327/1725/2 1328/1726/2 1323/1727/2 1324/1728/2 1319/1729/2 1320/1730/2 +f 1309/1731/4 1311/1732/4 1317/1733/4 1318/1734/4 1321/1735/4 1322/1736/4 1325/1737/4 1326/1738/4 1329/1739/4 1330/1740/4 1313/1741/4 1315/1742/4 +f 1336/1743/2 1334/1744/2 1340/1745/2 1338/1746/2 1355/1747/2 1356/1748/2 1351/1749/2 1352/1750/2 1347/1751/2 1348/1752/2 1343/1753/2 1344/1754/2 +f 1333/1755/4 1335/1756/4 1341/1757/4 1342/1758/4 1345/1759/4 1346/1760/4 1349/1761/4 1350/1762/4 1353/1763/4 1354/1764/4 1337/1765/4 1339/1766/4 +f 1360/1767/2 1358/1768/2 1364/1769/2 1362/1770/2 1379/1771/2 1380/1772/2 1375/1773/2 1376/1774/2 1371/1775/2 1372/1776/2 1367/1777/2 1368/1778/2 +f 1357/1779/4 1359/1780/4 1365/1781/4 1366/1782/4 1369/1783/4 1370/1784/4 1373/1785/4 1374/1786/4 1377/1787/4 1378/1788/4 1361/1789/4 1363/1790/4 +f 1384/1791/2 1382/1792/2 1388/1793/2 1386/1794/2 1403/1795/2 1404/1796/2 1399/1797/2 1400/1798/2 1395/1799/2 1396/1800/2 1391/1801/2 1392/1802/2 +f 1381/1803/4 1383/1804/4 1389/1805/4 1390/1806/4 1393/1807/4 1394/1808/4 1397/1809/4 1398/1810/4 1401/1811/4 1402/1812/4 1385/1813/4 1387/1814/4 +f 1405/1815/3 1406/1816/3 1408/1817/3 1407/1818/3 +f 1407/1819/6 1408/1820/6 1412/1821/6 1411/1822/6 +f 1411/1822/1 1412/1821/1 1410/1823/1 1409/1824/1 +f 1407/1825/2 1411/1826/2 1409/1824/2 1405/1815/2 +f 1412/1821/4 1408/1820/4 1406/1827/4 1410/1828/4 +f 1445/1829/1 1447/1830/1 1449/1831/1 1451/1832/1 1453/1833/1 1455/1834/1 1457/1835/1 1459/1836/1 1461/1837/1 1463/1838/1 1465/1839/1 1467/1840/1 1469/1841/1 1471/1842/1 1473/1843/1 1475/1844/1 +f 1448/1845/3 1446/1846/3 1476/1847/3 1474/1848/3 1472/1849/3 1470/1850/3 1468/1851/3 1466/1852/3 1464/1853/3 1462/1854/3 1460/1855/3 1458/1856/3 1456/1857/3 1454/1858/3 1452/1859/3 1450/1860/3 +f 1486/1861/2 1480/1862/2 1477/1863/2 1484/1864/2 +f 1483/1865/2 1485/1866/2 1487/1867/2 1488/1868/2 +f 1478/1869/6 1481/1870/6 1485/1871/6 1483/1872/6 +f 1487/1873/6 1486/1874/6 1484/1875/6 1488/1876/6 +f 1478/1877/4 1479/1878/4 1482/1879/4 1481/1880/4 +f 1482/1881/5 1479/1882/5 1477/1883/5 1480/1884/5 +f 1477/1885/3 1479/1886/3 1488/1887/3 1484/1888/3 +f 1478/1889/3 1483/1890/3 1488/1887/3 1479/1886/3 +f 1481/1891/1 1482/1892/1 1487/1893/1 1485/1894/1 +f 1480/1895/1 1486/1896/1 1487/1893/1 1482/1892/1 +f 1511/1897/6 1489/1898/6 1491/1899/6 1515/1900/6 +f 1515/1900/4 1491/1899/4 1494/1901/4 1516/1902/4 +f 1516/1903/5 1494/1904/5 1492/1905/5 1517/1906/5 +f 1517/1906/2 1492/1905/2 1489/1898/2 1511/1897/2 +f 1490/1907/1 1493/1908/1 1519/1909/1 1518/1910/1 +f 1494/1911/3 1491/1912/3 1489/1913/3 1492/1914/3 +f 1519/1915/2 1514/1916/2 1520/1917/2 1518/1918/2 +f 1493/1919/5 1513/1920/5 1514/1916/5 1519/1915/5 +f 1490/1921/4 1512/1922/4 1513/1923/4 1493/1924/4 +f 1518/1918/6 1520/1917/6 1512/1922/6 1490/1921/6 +f 1513/1925/5 1516/1926/5 1517/1927/5 1514/1928/5 +f 1512/1929/4 1515/1930/4 1516/1931/4 1513/1932/4 +f 1520/1933/6 1511/1934/6 1515/1930/6 1512/1929/6 +f 1514/1928/2 1517/1927/2 1511/1935/2 1520/1936/2 +f 1523/1937/1 1524/1938/1 1528/1939/1 1527/1940/1 +f 1525/1941/3 1526/1942/3 1522/1943/3 1521/1944/3 +f 1523/1945/6 1527/1946/6 1525/1941/6 1521/1944/6 +f 1528/1939/5 1524/1938/5 1522/1943/5 1526/1942/5 +f 1531/1947/1 1532/1948/1 1536/1949/1 1535/1950/1 +f 1533/1951/3 1534/1952/3 1530/1953/3 1529/1954/3 +f 1531/1955/6 1535/1956/6 1533/1951/6 1529/1954/6 +f 1536/1949/5 1532/1948/5 1530/1953/5 1534/1952/5 +f 1540/1957/3 1538/1958/3 1568/1959/3 1566/1960/3 1564/1961/3 1562/1962/3 1560/1963/3 1558/1964/3 1556/1965/3 1554/1966/3 1552/1967/3 1550/1968/3 1548/1969/3 1546/1970/3 1544/1971/3 1542/1972/3 +f 1537/1973/1 1539/1974/1 1541/1975/1 1543/1976/1 1545/1977/1 1547/1978/1 1549/1979/1 1551/1980/1 1553/1981/1 1555/1982/1 1557/1983/1 1559/1984/1 1561/1985/1 1563/1986/1 1565/1987/1 1567/1988/1 +f 1633/1989/1 1635/1990/1 1637/1991/1 1639/1992/1 1641/1993/1 1643/1994/1 1645/1995/1 1647/1996/1 1649/1997/1 1651/1998/1 1653/1999/1 1655/2000/1 1657/2001/1 1659/2002/1 1661/2003/1 1663/2004/1 +f 1636/2005/3 1634/2006/3 1664/2007/3 1662/2008/3 1660/2009/3 1658/2010/3 1656/2011/3 1654/2012/3 1652/2013/3 1650/2014/3 1648/2015/3 1646/2016/3 1644/2017/3 1642/2018/3 1640/2019/3 1638/2020/3 +f 1665/2021/1 1667/2022/1 1669/2023/1 1671/2024/1 1673/2025/1 1675/2026/1 1677/2027/1 1679/2028/1 1681/2029/1 1683/2030/1 1685/2031/1 1687/2032/1 1689/2033/1 1691/2034/1 1693/2035/1 1695/2036/1 +f 1668/2037/3 1666/2038/3 1696/2039/3 1694/2040/3 1692/2041/3 1690/2042/3 1688/2043/3 1686/2044/3 1684/2045/3 1682/2046/3 1680/2047/3 1678/2048/3 1676/2049/3 1674/2050/3 1672/2051/3 1670/2052/3 +f 1707/2053/5 1703/2054/5 1701/2055/5 1705/2056/5 +f 1700/2057/1 1708/2058/1 1706/2059/1 1699/2060/1 +f 1697/2061/3 1702/2062/3 1704/2063/3 1698/2064/3 +f 1698/2065/6 1700/2066/6 1699/2060/6 1697/2061/6 +f 1698/2067/4 1704/2068/4 1708/2058/4 1700/2057/4 +f 1701/2055/10 1703/2054/10 1704/2069/10 1702/2070/10 +f 1703/2054/28 1707/2053/28 1708/2058/28 1704/2068/28 +f 1707/2053/9 1705/2056/9 1706/2071/9 1708/2072/9 +f 1705/2056/72 1701/2055/72 1702/2070/72 1706/2071/72 +f 1699/2060/2 1706/2059/2 1702/2062/2 1697/2061/2 +f 1719/2073/5 1715/2074/5 1713/2075/5 1717/2076/5 +f 1712/2077/1 1720/2078/1 1718/2079/1 1711/2080/1 +f 1709/2081/3 1714/2082/3 1716/2083/3 1710/2084/3 +f 1710/2085/6 1712/2086/6 1711/2080/6 1709/2081/6 +f 1710/2087/4 1716/2088/4 1720/2078/4 1712/2077/4 +f 1713/2075/10 1715/2074/10 1716/2089/10 1714/2090/10 +f 1715/2074/28 1719/2073/28 1720/2078/28 1716/2088/28 +f 1719/2073/9 1717/2076/9 1718/2091/9 1720/2092/9 +f 1717/2076/72 1713/2075/72 1714/2090/72 1718/2091/72 +f 1711/2080/2 1718/2079/2 1714/2082/2 1709/2081/2 +f 1731/2093/5 1727/2094/5 1725/2095/5 1729/2096/5 +f 1724/2097/1 1732/2098/1 1730/2099/1 1723/2100/1 +f 1721/2101/3 1726/2102/3 1728/2103/3 1722/2104/3 +f 1722/2105/6 1724/2106/6 1723/2100/6 1721/2101/6 +f 1722/2107/4 1728/2108/4 1732/2098/4 1724/2097/4 +f 1725/2095/10 1727/2094/10 1728/2109/10 1726/2110/10 +f 1727/2094/28 1731/2093/28 1732/2098/28 1728/2108/28 +f 1731/2093/9 1729/2096/9 1730/2111/9 1732/2112/9 +f 1729/2096/72 1725/2095/72 1726/2110/72 1730/2111/72 +f 1723/2100/2 1730/2099/2 1726/2102/2 1721/2101/2 +f 1736/2113/3 1734/2114/3 1744/2115/3 1742/2116/3 1740/2117/3 1738/2118/3 +f 1748/2119/1 1746/2120/1 1756/2121/1 1754/2122/1 1752/2123/1 1750/2124/1 +f 1760/2125/1 1758/2126/1 1768/2127/1 1766/2128/1 1764/2129/1 1762/2130/1 +f 1772/2131/1 1770/2132/1 1780/2133/1 1778/2134/1 1776/2135/1 1774/2136/1 +f 1784/2137/1 1782/2138/1 1792/2139/1 1790/2140/1 1788/2141/1 1786/2142/1 +f 1796/2143/3 1794/2144/3 1804/2145/3 1802/2146/3 1800/2147/3 1798/2148/3 +f 1808/2149/3 1806/2150/3 1816/2151/3 1814/2152/3 1812/2153/3 1810/2154/3 +f 1820/2155/3 1818/2156/3 1828/2157/3 1826/2158/3 1824/2159/3 1822/2160/3 +f 1832/2161/3 1830/2162/3 1840/2163/3 1838/2164/3 1836/2165/3 1834/2166/3 +f 1844/2167/1 1842/2168/1 1852/2169/1 1850/2170/1 1848/2171/1 1846/2172/1 +f 1856/2173/1 1854/2174/1 1864/2175/1 1862/2176/1 1860/2177/1 1858/2178/1 +f 1868/2179/1 1866/2180/1 1876/2181/1 1874/2182/1 1872/2183/1 1870/2184/1 +f 1880/2185/1 1878/2186/1 1888/2187/1 1886/2188/1 1884/2189/1 1882/2190/1 +f 1892/2191/3 1890/2192/3 1900/2193/3 1898/2194/3 1896/2195/3 1894/2196/3 +f 1904/2197/3 1902/2198/3 1912/2199/3 1910/2200/3 1908/2201/3 1906/2202/3 +f 1916/2203/3 1914/2204/3 1924/2205/3 1922/2206/3 1920/2207/3 1918/2208/3 +f 1928/2209/4 1926/2210/4 1936/2211/4 1934/2212/4 1932/2213/4 1930/2214/4 +f 1940/2215/4 1938/2216/4 1948/2217/4 1946/2218/4 1944/2219/4 1942/2220/4 +f 1952/2221/2 1950/2222/2 1960/2223/2 1958/2224/2 1956/2225/2 1954/2226/2 +f 1964/2227/2 1962/2228/2 1972/2229/2 1970/2230/2 1968/2231/2 1966/2232/2 +f 1976/2233/4 1974/2234/4 1983/2235/4 1982/2236/4 1980/2237/4 1978/2238/4 +f 1975/2239/2 1977/2240/2 1979/2241/2 1981/2242/2 1984/2243/2 1973/2244/2 +f 1988/2245/4 1986/2246/4 1995/2247/4 1994/2248/4 1992/2249/4 1990/2250/4 +f 1987/2251/2 1989/2252/2 1991/2253/2 1993/2254/2 1996/2255/2 1985/2256/2 +f 2000/2257/4 1998/2258/4 2007/2259/4 2006/2260/4 2004/2261/4 2002/2262/4 +f 1999/2263/2 2001/2264/2 2003/2265/2 2005/2266/2 2008/2267/2 1997/2268/2 +f 2012/2269/3 2010/2270/3 2019/2271/3 2018/2272/3 2016/2273/3 2014/2274/3 +f 2011/2275/1 2013/2276/1 2015/2277/1 2017/2278/1 2020/2279/1 2009/2280/1 +f 2024/2281/4 2022/2282/4 2032/2283/4 2030/2284/4 2028/2285/4 2026/2286/4 +f 2036/2287/4 2034/2288/4 2044/2289/4 2042/2290/4 2040/2291/4 2038/2292/4 +f 2048/2293/2 2046/2294/2 2056/2295/2 2054/2296/2 2052/2297/2 2050/2298/2 +f 2060/2299/2 2058/2300/2 2068/2301/2 2066/2302/2 2064/2303/2 2062/2304/2 +f 2072/2305/3 2070/2306/3 2079/2307/3 2078/2308/3 2076/2309/3 2074/2310/3 +f 2071/2311/1 2073/2312/1 2075/2313/1 2077/2314/1 2080/2315/1 2069/2316/1 +f 2084/2317/3 2082/2318/3 2091/2319/3 2090/2320/3 2088/2321/3 2086/2322/3 +f 2083/2323/1 2085/2324/1 2087/2325/1 2089/2326/1 2092/2327/1 2081/2328/1 +f 2096/2329/3 2094/2330/3 2103/2331/3 2102/2332/3 2100/2333/3 2098/2334/3 +f 2095/2335/1 2097/2336/1 2099/2337/1 2101/2338/1 2104/2339/1 2093/2340/1 +f 2113/2341/6 2106/2342/6 2108/2343/6 2122/2344/6 +f 2121/2345/1 2123/2346/1 2124/2347/1 2122/2344/1 2108/2343/1 2107/2348/1 2117/2349/1 2119/2350/1 2120/2351/1 2118/2352/1 +f 2117/2349/5 2107/2348/5 2105/2353/5 2110/2354/5 +f 2108/2343/4 2106/2342/4 2105/2355/4 2107/2356/4 +f 2109/2357/3 2111/2358/3 2112/2359/3 2110/2360/3 2105/2353/3 2106/2361/3 2113/2362/3 2115/2363/3 2116/2364/3 2114/2365/3 +f 2113/2341/73 2122/2344/73 2124/2366/73 2115/2367/73 +f 2115/2367/29 2124/2366/29 2123/2368/29 2116/2369/29 +f 2116/2370/74 2123/2371/74 2121/2372/74 2114/2373/74 +f 2117/2349/75 2110/2354/75 2112/2359/75 2119/2350/75 +f 2119/2350/72 2112/2359/72 2111/2358/72 2120/2351/72 +f 2120/2351/76 2111/2358/76 2109/2374/76 2118/2375/76 +f 2121/2372/2 2118/2375/2 2109/2374/2 2114/2373/2 +f 2128/2376/4 2126/2377/4 2135/2378/4 2134/2379/4 2132/2380/4 2130/2381/4 +f 2127/2382/2 2129/2383/2 2131/2384/2 2133/2385/2 2136/2386/2 2125/2387/2 +f 2137/2388/4 2139/2389/4 2141/2390/4 2143/2391/4 2145/2392/4 2147/2393/4 2149/2394/4 2151/2395/4 2153/2396/4 2155/2397/4 2157/2398/4 2159/2399/4 2161/2400/4 2163/2401/4 2165/2402/4 2167/2403/4 +f 2140/2404/2 2138/2405/2 2168/2406/2 2166/2407/2 2164/2408/2 2162/2409/2 2160/2410/2 2158/2411/2 2156/2412/2 2154/2413/2 2152/2414/2 2150/2415/2 2148/2416/2 2146/2417/2 2144/2418/2 2142/2419/2 +f 2169/2420/4 2171/2421/4 2173/2422/4 2175/2423/4 2177/2424/4 2179/2425/4 2181/2426/4 2183/2427/4 2185/2428/4 2187/2429/4 2189/2430/4 2191/2431/4 2193/2432/4 2195/2433/4 2197/2434/4 2199/2435/4 +f 2172/2436/2 2170/2437/2 2200/2438/2 2198/2439/2 2196/2440/2 2194/2441/2 2192/2442/2 2190/2443/2 2188/2444/2 2186/2445/2 2184/2446/2 2182/2447/2 2180/2448/2 2178/2449/2 2176/2450/2 2174/2451/2 +f 2223/2452/3 2201/2453/3 2203/2454/3 2227/2455/3 +f 2227/2455/4 2203/2454/4 2206/2456/4 2228/2457/4 +f 2228/2458/1 2206/2459/1 2204/2460/1 2229/2461/1 +f 2229/2461/2 2204/2460/2 2201/2453/2 2223/2452/2 +f 2202/2462/6 2205/2463/6 2231/2464/6 2230/2465/6 +f 2206/2466/5 2203/2467/5 2201/2468/5 2204/2469/5 +f 2231/2470/2 2226/2471/2 2232/2472/2 2230/2473/2 +f 2205/2474/1 2225/2475/1 2226/2471/1 2231/2470/1 +f 2202/2476/4 2224/2477/4 2225/2478/4 2205/2479/4 +f 2230/2473/3 2232/2472/3 2224/2477/3 2202/2476/3 +f 2225/2480/1 2228/2481/1 2229/2482/1 2226/2483/1 +f 2224/2484/4 2227/2485/4 2228/2486/4 2225/2487/4 +f 2232/2488/3 2223/2489/3 2227/2485/3 2224/2484/3 +f 2226/2483/2 2229/2482/2 2223/2490/2 2232/2491/2 +f 2261/2492/5 2263/2493/5 2233/2494/5 2235/2495/5 2237/2496/5 2239/2497/5 2241/2498/5 2243/2499/5 2245/2500/5 2247/2501/5 2249/2502/5 2251/2503/5 2253/2504/5 2255/2505/5 2257/2506/5 2259/2507/5 +f 2268/2508/5 2266/2509/5 2296/2510/5 2294/2511/5 2292/2512/5 2290/2513/5 2288/2514/5 2286/2515/5 2284/2516/5 2282/2517/5 2280/2518/5 2278/2519/5 2276/2520/5 2274/2521/5 2272/2522/5 2270/2523/5 +f 2265/2524/6 2267/2525/6 2269/2526/6 2271/2527/6 2273/2528/6 2275/2529/6 2277/2530/6 2279/2531/6 2281/2532/6 2283/2533/6 2285/2534/6 2287/2535/6 2289/2536/6 2291/2537/6 2293/2538/6 2295/2539/6 +f 2319/2540/3 2297/2541/3 2299/2542/3 2323/2543/3 +f 2323/2543/6 2299/2542/6 2302/2544/6 2324/2545/6 +f 2324/2546/1 2302/2547/1 2300/2548/1 2325/2549/1 +f 2325/2549/5 2300/2548/5 2297/2541/5 2319/2540/5 +f 2298/2550/2 2301/2551/2 2327/2552/2 2326/2553/2 +f 2302/2554/4 2299/2555/4 2297/2556/4 2300/2557/4 +f 2327/2558/5 2322/2559/5 2328/2560/5 2326/2561/5 +f 2301/2562/1 2321/2563/1 2322/2559/1 2327/2558/1 +f 2298/2564/6 2320/2565/6 2321/2566/6 2301/2567/6 +f 2326/2561/3 2328/2560/3 2320/2565/3 2298/2564/3 +f 2321/2568/1 2324/2569/1 2325/2570/1 2322/2571/1 +f 2320/2572/6 2323/2573/6 2324/2574/6 2321/2575/6 +f 2328/2576/3 2319/2577/3 2323/2573/3 2320/2572/3 +f 2322/2571/5 2325/2570/5 2319/2578/5 2328/2579/5 +f 2332/2580/4 2330/2581/4 2360/2582/4 2358/2583/4 2356/2584/4 2354/2585/4 2352/2586/4 2350/2587/4 2348/2588/4 2346/2589/4 2344/2590/4 2342/2591/4 2340/2592/4 2338/2593/4 2336/2594/4 2334/2595/4 +f 2329/2596/2 2331/2597/2 2333/2598/2 2335/2599/2 2337/2600/2 2339/2601/2 2341/2602/2 2343/2603/2 2345/2604/2 2347/2605/2 2349/2606/2 2351/2607/2 2353/2608/2 2355/2609/2 2357/2610/2 2359/2611/2 +f 2447/2612/3 2425/2613/3 2427/2614/3 2451/2615/3 +f 2451/2615/4 2427/2614/4 2430/2616/4 2452/2617/4 +f 2452/2618/1 2430/2619/1 2428/2620/1 2453/2621/1 +f 2453/2621/2 2428/2620/2 2425/2613/2 2447/2612/2 +f 2426/2622/6 2429/2623/6 2455/2624/6 2454/2625/6 +f 2430/2626/5 2427/2627/5 2425/2628/5 2428/2629/5 +f 2455/2630/2 2450/2631/2 2456/2632/2 2454/2633/2 +f 2429/2634/1 2449/2635/1 2450/2631/1 2455/2630/1 +f 2426/2636/4 2448/2637/4 2449/2638/4 2429/2639/4 +f 2454/2633/3 2456/2632/3 2448/2637/3 2426/2636/3 +f 2449/2640/1 2452/2641/1 2453/2642/1 2450/2643/1 +f 2448/2644/4 2451/2645/4 2452/2646/4 2449/2647/4 +f 2456/2648/3 2447/2649/3 2451/2645/3 2448/2644/3 +f 2450/2643/2 2453/2642/2 2447/2650/2 2456/2651/2 +f 2485/2652/5 2487/2653/5 2457/2654/5 2459/2655/5 2461/2656/5 2463/2657/5 2465/2658/5 2467/2659/5 2469/2660/5 2471/2661/5 2473/2662/5 2475/2663/5 2477/2664/5 2479/2665/5 2481/2666/5 2483/2667/5 +f 2492/2668/5 2490/2669/5 2520/2670/5 2518/2671/5 2516/2672/5 2514/2673/5 2512/2674/5 2510/2675/5 2508/2676/5 2506/2677/5 2504/2678/5 2502/2679/5 2500/2680/5 2498/2681/5 2496/2682/5 2494/2683/5 +f 2489/2684/6 2491/2685/6 2493/2686/6 2495/2687/6 2497/2688/6 2499/2689/6 2501/2690/6 2503/2691/6 2505/2692/6 2507/2693/6 2509/2694/6 2511/2695/6 2513/2696/6 2515/2697/6 2517/2698/6 2519/2699/6 +s 1 +f 1/2700/4 2/2701/4 4/2702/77 3/2703/77 +f 3/2703/77 4/2702/77 6/2704/44 5/2705/44 +f 5/2705/44 6/2704/44 8/2706/78 7/2707/78 +f 7/2707/78 8/2706/78 10/2708/1 9/2709/1 +f 9/2709/1 10/2708/1 12/2710/79 11/2711/79 +f 11/2711/79 12/2710/79 14/2712/46 13/2713/46 +f 13/2713/46 14/2712/46 16/2714/80 15/2715/80 +f 15/2715/80 16/2714/80 18/2716/2 17/2717/2 +f 17/2717/2 18/2716/2 20/2718/81 19/2719/81 +f 19/2719/81 20/2718/81 22/2720/47 21/2721/47 +f 21/2721/47 22/2720/47 24/2722/82 23/2723/82 +f 23/2723/82 24/2722/82 26/2724/3 25/2725/3 +f 25/2725/3 26/2724/3 28/2726/83 27/2727/83 +f 27/2727/83 28/2726/83 30/2728/45 29/2729/45 +f 29/2729/45 30/2728/45 32/2730/84 31/2731/84 +f 31/2732/84 32/2733/84 2/2701/4 1/2700/4 +f 33/2734/85 34/2735/86 36/2736/87 35/2737/88 +f 35/2737/88 36/2736/87 38/2738/89 37/2739/90 +f 37/2739/90 38/2738/89 40/2740/91 39/2741/92 +f 39/2741/92 40/2740/91 42/2742/93 41/2743/94 +f 41/2743/94 42/2742/93 44/2744/95 43/2745/96 +f 43/2745/96 44/2744/95 46/2746/97 45/2747/98 +f 45/2747/98 46/2746/97 48/2748/99 47/2749/100 +f 47/2750/100 48/2751/99 50/2752/101 49/2753/102 +f 49/2753/102 50/2752/101 52/2754/103 51/2755/104 +f 51/2755/104 52/2754/103 54/2756/105 53/2757/106 +f 53/2757/106 54/2756/105 56/2758/107 55/2759/108 +f 55/2759/108 56/2758/107 58/2760/109 57/2761/110 +f 57/2761/110 58/2760/109 60/2762/111 59/2763/112 +f 59/2763/112 60/2762/111 62/2764/113 61/2765/114 +f 61/2765/114 62/2764/113 64/2766/115 63/2767/116 +f 63/2768/116 64/2769/115 34/2735/86 33/2734/85 +f 33/2770/85 35/2771/88 37/2772/90 39/2773/92 41/2774/94 43/2775/96 45/2776/98 47/2777/100 49/2778/102 51/2779/104 53/2780/106 55/2781/108 57/2782/110 59/2783/112 61/2784/114 63/2785/116 +f 97/2786/4 114/2787/4 120/2788/32 98/2789/32 +f 98/2789/32 120/2788/32 128/2790/28 99/2791/28 +f 99/2791/28 128/2790/28 119/2792/41 100/2793/41 +f 100/2793/41 119/2792/41 127/2794/5 101/2795/5 +f 101/2795/5 127/2794/5 118/2796/117 102/2797/117 +f 102/2797/117 118/2796/117 126/2798/72 103/2799/72 +f 103/2799/72 126/2798/72 121/2800/118 104/2801/118 +f 104/2801/118 121/2800/118 125/2802/2 105/2803/2 +f 105/2803/2 125/2802/2 116/2804/119 106/2805/119 +f 106/2805/119 116/2804/119 124/2806/29 107/2807/29 +f 107/2807/29 124/2806/29 115/2808/120 108/2809/120 +f 108/2809/120 115/2808/120 123/2810/6 109/2811/6 +f 109/2812/6 123/2813/6 117/2814/37 110/2815/37 +f 110/2815/37 117/2814/37 122/2816/39 111/2817/39 +f 111/2817/39 122/2816/39 113/2818/34 112/2819/34 +f 112/2819/34 113/2818/34 114/2787/4 97/2786/4 +f 169/2820/4 186/2821/4 192/2822/34 170/2823/34 +f 170/2823/34 192/2822/34 200/2824/39 171/2825/39 +f 171/2825/39 200/2824/39 191/2826/37 172/2827/37 +f 172/2827/37 191/2826/37 199/2828/6 173/2829/6 +f 173/2829/6 199/2828/6 190/2830/120 174/2831/120 +f 174/2831/120 190/2830/120 198/2832/29 175/2833/29 +f 175/2833/29 198/2832/29 193/2834/119 176/2835/119 +f 176/2835/119 193/2834/119 197/2836/2 177/2837/2 +f 177/2837/2 197/2836/2 188/2838/118 178/2839/118 +f 178/2839/118 188/2838/118 196/2840/72 179/2841/72 +f 179/2841/72 196/2840/72 187/2842/117 180/2843/117 +f 180/2843/117 187/2842/117 195/2844/5 181/2845/5 +f 181/2846/5 195/2847/5 189/2848/41 182/2849/41 +f 182/2849/41 189/2848/41 194/2850/28 183/2851/28 +f 183/2851/28 194/2850/28 185/2852/32 184/2853/32 +f 184/2853/32 185/2852/32 186/2821/4 169/2820/4 +f 441/2854/121 443/2855/122 444/2856/79 442/2857/1 +f 443/2855/122 445/2858/123 446/2859/46 444/2856/79 +f 445/2858/123 447/2860/124 448/2861/80 446/2859/46 +f 447/2860/124 449/2862/125 450/2863/2 448/2861/80 +f 449/2862/125 451/2864/126 452/2865/81 450/2863/2 +f 451/2864/126 453/2866/127 454/2867/47 452/2865/81 +f 453/2866/127 455/2868/128 456/2869/82 454/2867/47 +f 455/2868/128 457/2870/129 458/2871/3 456/2869/82 +f 457/2870/129 459/2872/130 460/2873/83 458/2871/3 +f 459/2872/130 461/2874/131 462/2875/45 460/2873/83 +f 461/2874/131 463/2876/132 464/2877/84 462/2875/45 +f 463/2876/132 465/2878/133 466/2879/4 464/2877/84 +f 465/2880/133 467/2881/134 468/2882/77 466/2883/4 +f 467/2881/134 469/2884/135 470/2885/44 468/2882/77 +f 469/2884/135 471/2886/136 472/2887/78 470/2885/44 +f 471/2886/136 441/2854/121 442/2857/1 472/2887/78 +f 441/2888/121 471/2889/136 469/2890/135 467/2891/134 465/2892/133 463/2893/132 461/2894/131 459/2895/130 457/2896/129 455/2897/128 453/2898/127 451/2899/126 449/2900/125 447/2901/124 445/2902/123 443/2903/122 +f 547/2904/121 549/2905/122 550/2906/79 548/2907/1 +f 549/2905/122 551/2908/123 552/2909/46 550/2906/79 +f 551/2908/123 553/2910/124 554/2911/80 552/2909/46 +f 553/2910/124 555/2912/125 556/2913/2 554/2911/80 +f 555/2912/125 557/2914/126 558/2915/81 556/2913/2 +f 557/2914/126 559/2916/127 560/2917/47 558/2915/81 +f 559/2916/127 561/2918/128 562/2919/82 560/2917/47 +f 561/2918/128 563/2920/129 564/2921/3 562/2919/82 +f 563/2920/129 565/2922/130 566/2923/83 564/2921/3 +f 565/2922/130 567/2924/131 568/2925/45 566/2923/83 +f 567/2924/131 569/2926/132 570/2927/84 568/2925/45 +f 569/2926/132 571/2928/133 572/2929/4 570/2927/84 +f 571/2930/133 573/2931/134 574/2932/77 572/2933/4 +f 573/2931/134 575/2934/135 576/2935/44 574/2932/77 +f 575/2934/135 577/2936/136 578/2937/78 576/2935/44 +f 577/2936/136 547/2904/121 548/2907/1 578/2937/78 +f 547/2938/121 577/2939/136 575/2940/135 573/2941/134 571/2942/133 569/2943/132 567/2944/131 565/2945/130 563/2946/129 561/2947/128 559/2948/127 557/2949/126 555/2950/125 553/2951/124 551/2952/123 549/2953/122 +f 684/2954/137 732/2955/138 731/2956/139 682/2957/140 +f 666/2958/141 723/2959/142 722/2960/143 664/2961/144 +f 710/2962/145 745/2963/146 744/2964/147 708/2965/148 +f 692/2966/149 736/2967/150 735/2968/151 690/2969/152 +f 674/2970/153 727/2971/154 726/2972/155 672/2973/156 +f 654/2974/157 718/2975/158 748/2976/159 716/2977/160 +f 656/2978/161 717/2979/162 718/2975/158 654/2974/157 +f 700/2980/163 740/2981/164 739/2982/165 698/2983/166 +f 682/2957/140 731/2956/139 730/2984/167 680/2985/168 +f 664/2961/144 722/2960/143 721/2986/169 662/2987/170 +f 708/2965/148 744/2964/147 743/2988/171 706/2989/172 +f 690/2969/152 735/2968/151 734/2990/173 688/2991/174 +f 672/2973/156 726/2972/155 725/2992/175 670/2993/176 +f 716/2977/160 748/2976/159 747/2994/177 714/2995/178 +f 698/2983/166 739/2982/165 738/2996/179 696/2997/180 +f 680/2985/168 730/2984/167 729/2998/181 678/2999/182 +f 662/2987/170 721/2986/169 720/3000/183 660/3001/184 +f 706/2989/172 743/2988/171 742/3002/185 704/3003/186 +f 688/2991/174 734/2990/173 733/3004/187 686/3005/188 +f 670/2993/176 725/2992/175 724/3006/189 668/3007/190 +f 714/2995/178 747/2994/177 746/3008/191 712/3009/192 +f 696/2997/180 738/2996/179 737/3010/193 694/3011/194 +f 678/2999/182 729/2998/181 728/3012/195 676/3013/196 +f 660/3001/184 720/3000/183 719/3014/197 658/3015/198 +f 704/3003/186 742/3002/185 741/3016/199 702/3017/200 +f 686/3005/188 733/3004/187 732/2955/138 684/2954/137 +f 668/3007/190 724/3006/189 723/2959/142 666/2958/141 +f 712/3009/192 746/3008/191 745/2963/146 710/2962/145 +f 694/3011/194 737/3010/193 736/2967/150 692/2966/149 +f 676/3013/196 728/3012/195 727/2971/154 674/2970/153 +f 658/3015/198 719/3014/197 717/2979/162 656/2978/161 +f 702/3017/200 741/3016/199 740/2981/164 700/2980/163 +f 665/3018/142 755/3019/141 756/3020/190 667/3021/189 +f 683/3022/138 764/3023/137 765/3024/188 685/3025/187 +f 701/3026/199 773/3027/200 774/3028/186 703/3029/185 +f 657/3030/197 751/3031/198 752/3032/184 659/3033/183 +f 675/3034/195 760/3035/196 761/3036/182 677/3037/181 +f 693/3038/193 769/3039/194 770/3040/180 695/3041/179 +f 711/3042/191 778/3043/192 779/3044/178 713/3045/177 +f 667/3021/189 756/3020/190 757/3046/176 669/3047/175 +f 685/3025/187 765/3024/188 766/3048/174 687/3049/173 +f 703/3029/185 774/3028/186 775/3050/172 705/3051/171 +f 659/3033/183 752/3032/184 753/3052/170 661/3053/169 +f 677/3037/181 761/3036/182 762/3054/168 679/3055/167 +f 695/3041/179 770/3040/180 771/3056/166 697/3057/165 +f 713/3045/177 779/3044/178 780/3058/160 715/3059/159 +f 669/3047/175 757/3046/176 758/3060/156 671/3061/155 +f 687/3049/173 766/3048/174 767/3062/152 689/3063/151 +f 705/3051/171 775/3050/172 776/3064/148 707/3065/147 +f 661/3053/169 753/3052/170 754/3066/144 663/3067/143 +f 679/3055/167 762/3054/168 763/3068/140 681/3069/139 +f 697/3057/165 771/3056/166 772/3070/163 699/3071/164 +f 653/3072/158 749/3073/157 750/3074/161 655/3075/162 +f 715/3059/159 780/3058/160 749/3073/157 653/3072/158 +f 671/3061/155 758/3060/156 759/3076/153 673/3077/154 +f 689/3063/151 767/3062/152 768/3078/149 691/3079/150 +f 707/3065/147 776/3064/148 777/3080/145 709/3081/146 +f 663/3067/143 754/3066/144 755/3019/141 665/3018/142 +f 681/3069/139 763/3068/140 764/3023/137 683/3022/138 +f 699/3071/164 772/3070/163 773/3027/200 701/3026/199 +f 655/3075/162 750/3074/161 751/3031/198 657/3030/197 +f 673/3077/154 759/3076/153 760/3035/196 675/3034/195 +f 691/3079/150 768/3078/149 769/3039/194 693/3038/193 +f 709/3081/146 777/3080/145 778/3043/192 711/3042/191 +f 783/3082/148 784/3083/147 868/3084/146 867/3085/145 +f 867/3085/145 868/3084/146 864/3086/191 863/3087/192 +f 863/3087/192 864/3086/191 892/3088/177 891/3089/178 +f 891/3089/178 892/3088/177 844/3090/159 843/3091/160 +f 843/3091/160 844/3090/159 820/3092/158 819/3093/157 +f 819/3093/157 820/3092/158 816/3094/162 815/3095/161 +f 815/3095/161 816/3094/162 824/3096/197 823/3097/198 +f 823/3097/198 824/3096/197 880/3098/183 879/3099/184 +f 879/3099/184 880/3098/183 812/3100/169 811/3101/170 +f 811/3101/170 812/3100/169 804/3102/143 803/3103/144 +f 803/3103/144 804/3102/143 800/3104/142 799/3105/141 +f 799/3105/141 800/3104/142 808/3106/189 807/3107/190 +f 807/3108/190 808/3109/189 875/3110/201 876/3111/202 +f 876/3111/202 875/3110/201 883/3112/155 884/3113/156 +f 884/3113/156 883/3112/155 899/3114/154 900/3115/153 +f 900/3115/153 899/3114/154 854/3116/195 856/3117/196 +f 856/3117/196 854/3116/195 846/3118/181 848/3119/182 +f 848/3119/182 846/3118/181 850/3120/167 852/3121/168 +f 852/3121/168 850/3120/167 794/3122/139 796/3123/140 +f 796/3123/140 794/3122/139 790/3124/138 792/3125/137 +f 792/3125/137 790/3124/138 786/3126/187 788/3127/188 +f 788/3127/188 786/3126/187 907/3128/173 908/3129/174 +f 908/3129/174 907/3128/173 903/3130/151 904/3131/152 +f 904/3131/152 903/3130/151 831/3132/150 832/3133/149 +f 832/3133/149 831/3132/150 887/3134/193 888/3135/194 +f 888/3135/194 887/3134/193 895/3136/179 896/3137/180 +f 896/3137/180 895/3136/179 839/3138/165 840/3139/166 +f 840/3139/166 839/3138/165 828/3140/164 827/3141/163 +f 827/3142/163 828/3143/164 836/3144/203 835/3145/204 +f 835/3145/204 836/3144/203 860/3146/185 859/3147/186 +f 859/3147/186 860/3146/185 872/3148/171 871/3149/172 +f 871/3149/172 872/3148/171 784/3083/147 783/3082/148 +f 919/3150/205 920/3151/206 942/3152/207 941/3153/208 +f 910/3154/209 911/3155/210 933/3156/211 932/3157/212 +f 920/3151/206 921/3158/213 943/3159/214 942/3152/207 +f 915/3160/215 916/3161/216 938/3162/217 937/3163/218 +f 916/3161/216 917/3164/219 939/3165/220 938/3162/217 +f 911/3155/210 912/3166/221 934/3167/222 933/3156/211 +f 921/3158/213 922/3168/223 944/3169/224 943/3159/214 +f 912/3166/221 913/3170/225 935/3171/226 934/3167/222 +f 922/3168/223 923/3172/227 945/3173/228 944/3169/224 +f 917/3164/219 918/3174/229 940/3175/230 939/3165/220 +f 924/3176/231 909/3177/232 931/3178/233 946/3179/234 +f 918/3174/229 919/3150/205 941/3153/208 940/3175/230 +f 913/3170/225 914/3180/235 936/3181/236 935/3171/226 +f 923/3172/227 924/3182/231 946/3183/234 945/3173/228 +f 914/3180/235 915/3160/215 937/3163/218 936/3181/236 +f 909/3177/232 910/3154/209 932/3157/212 931/3178/233 +f 937/3163/218 938/3162/217 954/3184/237 953/3185/238 +f 946/3179/234 931/3178/233 947/3186/239 962/3187/240 +f 945/3173/228 946/3183/234 962/3188/240 961/3189/241 +f 938/3162/217 939/3165/220 955/3190/242 954/3184/237 +f 931/3178/233 932/3157/212 948/3191/243 947/3186/239 +f 939/3165/220 940/3175/230 956/3192/244 955/3190/242 +f 932/3157/212 933/3156/211 949/3193/245 948/3191/243 +f 940/3175/230 941/3153/208 957/3194/246 956/3192/244 +f 933/3156/211 934/3167/222 950/3195/247 949/3193/245 +f 941/3153/208 942/3152/207 958/3196/248 957/3194/246 +f 934/3167/222 935/3171/226 951/3197/249 950/3195/247 +f 942/3152/207 943/3159/214 959/3198/250 958/3196/248 +f 935/3171/226 936/3181/236 952/3199/251 951/3197/249 +f 943/3159/214 944/3169/224 960/3200/252 959/3198/250 +f 936/3181/236 937/3163/218 953/3185/238 952/3199/251 +f 944/3169/224 945/3173/228 961/3189/241 960/3200/252 +f 973/3201/253 995/3202/254 996/3203/255 974/3204/256 +f 964/3205/257 986/3206/258 987/3207/259 965/3208/260 +f 974/3204/256 996/3203/255 997/3209/261 975/3210/262 +f 969/3211/263 991/3212/264 992/3213/265 970/3214/266 +f 970/3214/266 992/3213/265 993/3215/267 971/3216/268 +f 965/3208/260 987/3207/259 988/3217/269 966/3218/270 +f 975/3210/262 997/3209/261 998/3219/271 976/3220/272 +f 966/3218/270 988/3217/269 989/3221/273 967/3222/274 +f 976/3220/272 998/3219/271 999/3223/275 977/3224/276 +f 971/3216/268 993/3215/267 994/3225/277 972/3226/278 +f 978/3227/279 1000/3228/280 985/3229/281 963/3230/282 +f 972/3226/278 994/3225/277 995/3202/254 973/3201/253 +f 967/3222/274 989/3221/273 990/3231/283 968/3232/284 +f 977/3224/276 999/3223/275 1000/3233/280 978/3234/279 +f 968/3232/284 990/3231/283 991/3212/264 969/3211/263 +f 963/3230/282 985/3229/281 986/3206/258 964/3205/257 +f 991/3212/264 1007/3235/285 1008/3236/286 992/3213/265 +f 1000/3228/280 1016/3237/287 1001/3238/288 985/3229/281 +f 999/3223/275 1015/3239/289 1016/3240/287 1000/3233/280 +f 992/3213/265 1008/3236/286 1009/3241/290 993/3215/267 +f 985/3229/281 1001/3238/288 1002/3242/291 986/3206/258 +f 993/3215/267 1009/3241/290 1010/3243/292 994/3225/277 +f 986/3206/258 1002/3242/291 1003/3244/293 987/3207/259 +f 994/3225/277 1010/3243/292 1011/3245/294 995/3202/254 +f 987/3207/259 1003/3244/293 1004/3246/295 988/3217/269 +f 995/3202/254 1011/3245/294 1012/3247/296 996/3203/255 +f 988/3217/269 1004/3246/295 1005/3248/297 989/3221/273 +f 996/3203/255 1012/3247/296 1013/3249/298 997/3209/261 +f 989/3221/273 1005/3248/297 1006/3250/299 990/3231/283 +f 997/3209/261 1013/3249/298 1014/3251/300 998/3219/271 +f 990/3231/283 1006/3250/299 1007/3235/285 991/3212/264 +f 998/3219/271 1014/3251/300 1015/3239/289 999/3223/275 +f 909/3177/232 963/3230/282 964/3205/257 910/3154/209 +f 910/3154/209 964/3205/257 965/3208/260 911/3155/210 +f 911/3155/210 965/3208/260 966/3218/270 912/3166/221 +f 912/3166/221 966/3218/270 967/3222/274 913/3170/225 +f 913/3170/225 967/3222/274 968/3232/284 914/3180/235 +f 914/3180/235 968/3232/284 969/3211/263 915/3160/215 +f 915/3160/215 969/3211/263 970/3214/266 916/3161/216 +f 916/3161/216 970/3214/266 971/3216/268 917/3164/219 +f 917/3164/219 971/3216/268 972/3226/278 918/3174/229 +f 918/3174/229 972/3226/278 973/3201/253 919/3150/205 +f 919/3150/205 973/3201/253 974/3204/256 920/3151/206 +f 920/3151/206 974/3204/256 975/3210/262 921/3158/213 +f 921/3158/213 975/3210/262 976/3220/272 922/3168/223 +f 922/3168/223 976/3220/272 977/3224/276 923/3172/227 +f 923/3172/227 977/3224/276 978/3234/279 924/3182/231 +f 924/3176/231 978/3227/279 963/3230/282 909/3177/232 +f 1073/3252/240 1074/3253/287 1076/3254/301 1075/3255/239 +f 1075/3255/239 1076/3254/301 1078/3256/291 1077/3257/243 +f 1077/3257/243 1078/3256/291 1080/3258/302 1079/3259/303 +f 1079/3259/303 1080/3258/302 1082/3260/295 1081/3261/247 +f 1081/3261/247 1082/3260/295 1084/3262/297 1083/3263/304 +f 1083/3263/304 1084/3262/297 1086/3264/299 1085/3265/251 +f 1085/3265/251 1086/3264/299 1088/3266/285 1087/3267/305 +f 1087/3267/305 1088/3266/285 1090/3268/286 1089/3269/237 +f 1089/3270/237 1090/3271/286 1092/3272/290 1091/3273/242 +f 1091/3273/242 1092/3272/290 1094/3274/292 1093/3275/244 +f 1093/3275/244 1094/3274/292 1096/3276/294 1095/3277/246 +f 1095/3277/246 1096/3276/294 1098/3278/296 1097/3279/248 +f 1097/3279/248 1098/3278/296 1100/3280/298 1099/3281/250 +f 1099/3281/250 1100/3280/298 1102/3282/300 1101/3283/252 +f 1101/3283/252 1102/3282/300 1104/3284/289 1103/3285/241 +f 1103/3285/241 1104/3284/289 1074/3286/287 1073/3287/240 +f 1105/3288/5 1106/3289/306 1108/3290/307 1107/3291/308 +f 1107/3292/308 1108/3293/307 1110/3294/309 1109/3295/310 +f 1109/3295/310 1110/3294/309 1112/3296/311 1111/3297/6 +f 1111/3297/6 1112/3296/311 1114/3298/312 1113/3299/313 +f 1113/3299/313 1114/3298/312 1116/3300/314 1115/3301/315 +f 1115/3301/315 1116/3300/314 1106/3289/306 1105/3288/5 +f 1117/3302/5 1118/3303/316 1120/3304/317 1119/3305/315 +f 1119/3306/315 1120/3307/317 1122/3308/318 1121/3309/313 +f 1121/3309/313 1122/3308/318 1124/3310/319 1123/3311/6 +f 1123/3311/6 1124/3310/319 1126/3312/320 1125/3313/310 +f 1125/3313/310 1126/3312/320 1128/3314/321 1127/3315/308 +f 1127/3315/308 1128/3314/321 1118/3303/316 1117/3302/5 +f 1129/3316/5 1130/3317/316 1132/3318/317 1131/3319/315 +f 1131/3320/315 1132/3321/317 1134/3322/318 1133/3323/313 +f 1133/3323/313 1134/3322/318 1136/3324/319 1135/3325/6 +f 1135/3325/6 1136/3324/319 1138/3326/320 1137/3327/310 +f 1137/3327/310 1138/3326/320 1140/3328/321 1139/3329/308 +f 1139/3329/308 1140/3328/321 1130/3317/316 1129/3316/5 +f 1141/3330/5 1142/3331/316 1144/3332/317 1143/3333/315 +f 1143/3334/315 1144/3335/317 1146/3336/318 1145/3337/313 +f 1145/3337/313 1146/3336/318 1148/3338/319 1147/3339/6 +f 1147/3339/6 1148/3338/319 1150/3340/320 1149/3341/310 +f 1149/3341/310 1150/3340/320 1152/3342/321 1151/3343/308 +f 1151/3343/308 1152/3342/321 1142/3331/316 1141/3330/5 +f 1153/3344/5 1154/3345/306 1156/3346/307 1155/3347/308 +f 1155/3348/308 1156/3349/307 1158/3350/309 1157/3351/310 +f 1157/3351/310 1158/3350/309 1160/3352/311 1159/3353/6 +f 1159/3353/6 1160/3352/311 1162/3354/312 1161/3355/313 +f 1161/3355/313 1162/3354/312 1164/3356/314 1163/3357/315 +f 1163/3357/315 1164/3356/314 1154/3345/306 1153/3344/5 +f 1165/3358/5 1166/3359/306 1168/3360/307 1167/3361/308 +f 1167/3362/308 1168/3363/307 1170/3364/309 1169/3365/310 +f 1169/3365/310 1170/3364/309 1172/3366/311 1171/3367/6 +f 1171/3367/6 1172/3366/311 1174/3368/312 1173/3369/313 +f 1173/3369/313 1174/3368/312 1176/3370/314 1175/3371/315 +f 1175/3371/315 1176/3370/314 1166/3359/306 1165/3358/5 +f 1189/3372/322 1190/3373/323 1192/3374/324 1191/3375/325 +f 1191/3375/325 1192/3374/324 1194/3376/326 1193/3377/327 +f 1193/3377/327 1194/3376/326 1196/3378/328 1195/3379/329 +f 1195/3379/329 1196/3378/328 1198/3380/330 1197/3381/331 +f 1197/3381/331 1198/3380/330 1200/3382/332 1199/3383/333 +f 1199/3383/333 1200/3382/332 1202/3384/334 1201/3385/335 +f 1201/3385/335 1202/3384/334 1204/3386/336 1203/3387/337 +f 1203/3387/337 1204/3386/336 1206/3388/338 1205/3389/339 +f 1205/3389/339 1206/3388/338 1208/3390/340 1207/3391/341 +f 1207/3391/341 1208/3390/340 1210/3392/342 1209/3393/343 +f 1209/3393/343 1210/3392/342 1212/3394/344 1211/3395/345 +f 1211/3395/345 1212/3394/344 1214/3396/346 1213/3397/347 +f 1213/3398/347 1214/3399/346 1216/3400/348 1215/3401/349 +f 1215/3401/349 1216/3400/348 1218/3402/350 1217/3403/351 +f 1192/3404/324 1190/3405/323 1220/3406/352 1218/3407/350 1216/3408/348 1214/3409/346 1212/3410/344 1210/3411/342 1208/3412/340 1206/3413/338 1204/3414/336 1202/3415/334 1200/3416/332 1198/3417/330 1196/3418/328 1194/3419/326 +f 1217/3403/351 1218/3402/350 1220/3420/352 1219/3421/353 +f 1219/3421/353 1220/3420/352 1190/3373/323 1189/3372/322 +f 1189/3422/322 1191/3423/325 1193/3424/327 1195/3425/329 1197/3426/331 1199/3427/333 1201/3428/335 1203/3429/337 1205/3430/339 1207/3431/341 1209/3432/343 1211/3433/345 1213/3434/347 1215/3435/349 1217/3436/351 1219/3437/353 +f 1285/3438/354 1234/3439/355 1232/3440/46 1298/3441/356 +f 1231/3442/47 1236/3443/357 1290/3444/358 1293/3445/359 +f 1275/3446/360 1273/3447/361 1278/3448/362 1280/3449/363 +f 1271/3450/364 1269/3451/365 1282/3452/366 1284/3453/367 +f 1286/3454/368 1297/3455/369 1242/3456/370 1237/3457/371 +f 1249/3458/372 1278/3448/362 1273/3447/361 1246/3459/373 +f 1247/3460/364 1245/3461/365 1250/3462/366 1252/3463/367 +f 1263/3464/360 1261/3465/361 1266/3466/362 1268/3467/363 +f 1260/3468/374 1255/3469/375 1253/3470/354 1258/3471/356 +f 1240/3472/376 1243/3473/377 1241/3474/359 1238/3475/358 +f 1297/3455/369 1286/3454/368 1288/3476/378 1299/3477/379 +f 1250/3462/366 1245/3461/365 1238/3475/358 1241/3474/359 +f 1258/3471/356 1253/3470/354 1262/3478/380 1265/3479/381 +f 1296/3480/382 1291/3481/383 1289/3482/371 1294/3483/370 +f 1246/3459/373 1248/3484/384 1251/3485/385 1249/3458/372 +f 1287/3486/375 1285/3438/354 1298/3441/356 1300/3487/374 +f 1272/3488/384 1271/3489/364 1284/3490/367 1283/3491/385 +f 1262/3478/380 1264/3492/386 1267/3493/387 1265/3479/381 +f 1281/3494/372 1266/3466/362 1261/3465/361 1270/3495/373 +f 1299/3477/379 1288/3476/378 1287/3496/375 1300/3497/374 +f 1293/3445/359 1290/3444/358 1292/3498/376 1295/3499/377 +f 1237/3457/371 1242/3456/370 1244/3500/382 1239/3501/383 +f 1270/3495/373 1272/3488/384 1283/3491/385 1281/3494/372 +f 1257/3502/369 1254/3503/368 1256/3504/378 1259/3505/379 +f 1230/3506/45 1282/3452/366 1269/3451/365 1235/3507/388 +f 1276/3508/386 1275/3509/360 1280/3510/363 1279/3511/387 +f 1233/3512/389 1274/3513/380 1277/3514/381 1229/3515/44 +f 1254/3503/368 1257/3502/369 1294/3483/370 1289/3482/371 +f 1264/3492/386 1263/3516/360 1268/3517/363 1267/3493/387 +f 1248/3484/384 1247/3518/364 1252/3519/367 1251/3485/385 +f 1239/3501/383 1244/3500/382 1243/3520/377 1240/3521/376 +f 1259/3505/379 1256/3504/378 1255/3522/375 1260/3523/374 +f 1274/3513/380 1276/3508/386 1279/3511/387 1277/3514/381 +f 1295/3499/377 1292/3498/376 1291/3524/383 1296/3525/382 +f 1326/3526/390 1327/3527/391 1332/3528/392 1329/3529/393 +f 1318/3530/394 1319/3531/395 1324/3532/396 1321/3533/397 +f 1330/3534/398 1331/3535/399 1314/3536/47 1313/3537/45 +f 1322/3538/400 1323/3539/401 1328/3540/402 1325/3541/403 +f 1311/3542/44 1312/3543/46 1320/3544/404 1317/3545/405 +f 1319/3531/395 1318/3530/394 1317/3545/405 1320/3544/404 +f 1323/3539/401 1322/3538/400 1321/3533/397 1324/3532/396 +f 1327/3527/391 1326/3526/390 1325/3541/403 1328/3540/402 +f 1331/3535/399 1330/3534/398 1329/3529/393 1332/3528/392 +f 1350/3546/390 1351/3547/391 1356/3548/392 1353/3549/393 +f 1342/3550/394 1343/3551/395 1348/3552/396 1345/3553/397 +f 1354/3554/398 1355/3555/399 1338/3556/47 1337/3557/45 +f 1346/3558/400 1347/3559/401 1352/3560/406 1349/3561/403 +f 1335/3562/44 1336/3563/46 1344/3564/404 1341/3565/405 +f 1343/3551/395 1342/3550/394 1341/3565/405 1344/3564/404 +f 1347/3559/401 1346/3558/400 1345/3553/397 1348/3552/396 +f 1351/3547/391 1350/3546/390 1349/3561/403 1352/3560/406 +f 1355/3555/399 1354/3554/398 1353/3549/393 1356/3548/392 +f 1374/3566/390 1375/3567/391 1380/3568/392 1377/3569/393 +f 1366/3570/394 1367/3571/395 1372/3572/396 1369/3573/397 +f 1378/3574/398 1379/3575/399 1362/3576/47 1361/3577/45 +f 1370/3578/400 1371/3579/401 1376/3580/402 1373/3581/403 +f 1359/3582/44 1360/3583/46 1368/3584/404 1365/3585/405 +f 1367/3571/395 1366/3570/394 1365/3585/405 1368/3584/404 +f 1371/3579/401 1370/3578/400 1369/3573/397 1372/3572/396 +f 1375/3567/391 1374/3566/390 1373/3581/403 1376/3580/402 +f 1379/3575/399 1378/3574/398 1377/3569/393 1380/3568/392 +f 1398/3586/390 1399/3587/391 1404/3588/392 1401/3589/393 +f 1390/3590/394 1391/3591/395 1396/3592/396 1393/3593/397 +f 1402/3594/398 1403/3595/399 1386/3596/47 1385/3597/45 +f 1394/3598/400 1395/3599/401 1400/3600/402 1397/3601/403 +f 1383/3602/44 1384/3603/46 1392/3604/404 1389/3605/405 +f 1391/3591/395 1390/3590/394 1389/3605/405 1392/3604/404 +f 1395/3599/401 1394/3598/400 1393/3593/397 1396/3592/396 +f 1399/3587/391 1398/3586/390 1397/3601/403 1400/3600/402 +f 1403/3595/399 1402/3594/398 1401/3589/393 1404/3588/392 +f 1413/3606/322 1414/3607/323 1416/3608/324 1415/3609/325 +f 1415/3609/325 1416/3608/324 1418/3610/326 1417/3611/327 +f 1417/3611/327 1418/3610/326 1420/3612/328 1419/3613/329 +f 1419/3613/329 1420/3612/328 1422/3614/330 1421/3615/331 +f 1421/3615/331 1422/3614/330 1424/3616/332 1423/3617/333 +f 1423/3617/333 1424/3616/332 1426/3618/334 1425/3619/335 +f 1425/3619/335 1426/3618/334 1428/3620/407 1427/3621/337 +f 1427/3621/337 1428/3620/407 1430/3622/338 1429/3623/339 +f 1429/3623/339 1430/3622/338 1432/3624/340 1431/3625/341 +f 1431/3625/341 1432/3624/340 1434/3626/342 1433/3627/343 +f 1433/3627/343 1434/3626/342 1436/3628/344 1435/3629/345 +f 1435/3629/345 1436/3628/344 1438/3630/346 1437/3631/347 +f 1437/3632/347 1438/3633/346 1440/3634/348 1439/3635/349 +f 1439/3635/349 1440/3634/348 1442/3636/350 1441/3637/351 +f 1416/3638/324 1414/3639/323 1444/3640/352 1442/3641/350 1440/3642/348 1438/3643/346 1436/3644/344 1434/3645/342 1432/3646/340 1430/3647/338 1428/3648/407 1426/3649/334 1424/3650/332 1422/3651/330 1420/3652/328 1418/3653/326 +f 1441/3637/351 1442/3636/350 1444/3654/352 1443/3655/353 +f 1443/3655/353 1444/3654/352 1414/3607/323 1413/3606/322 +f 1413/3656/322 1415/3657/325 1417/3658/327 1419/3659/329 1421/3660/331 1423/3661/333 1425/3662/335 1427/3663/337 1429/3664/339 1431/3665/341 1433/3666/343 1435/3667/345 1437/3668/347 1439/3669/349 1441/3670/351 1443/3671/353 +f 1445/3672/240 1446/3673/287 1448/3674/301 1447/3675/408 +f 1447/3675/408 1448/3674/301 1450/3676/291 1449/3677/243 +f 1449/3678/243 1450/3679/291 1452/3680/302 1451/3681/303 +f 1451/3681/303 1452/3680/302 1454/3682/295 1453/3683/247 +f 1453/3683/247 1454/3682/295 1456/3684/409 1455/3685/304 +f 1455/3685/304 1456/3684/409 1458/3686/299 1457/3687/251 +f 1457/3687/251 1458/3686/299 1460/3688/285 1459/3689/305 +f 1459/3689/305 1460/3688/285 1462/3690/286 1461/3691/237 +f 1461/3691/237 1462/3690/286 1464/3692/410 1463/3693/411 +f 1463/3693/411 1464/3692/410 1466/3694/292 1465/3695/244 +f 1465/3696/244 1466/3697/292 1468/3698/294 1467/3699/246 +f 1467/3699/246 1468/3698/294 1470/3700/296 1469/3701/248 +f 1469/3701/248 1470/3700/296 1472/3702/412 1471/3703/413 +f 1471/3703/413 1472/3702/412 1474/3704/300 1473/3705/252 +f 1473/3705/252 1474/3704/300 1476/3706/414 1475/3707/241 +f 1475/3707/241 1476/3706/414 1446/3673/287 1445/3672/240 +f 1495/3708/4 1496/3709/4 1498/3710/28 1497/3711/28 +f 1497/3711/28 1498/3710/28 1500/3712/5 1499/3713/5 +f 1499/3713/5 1500/3712/5 1502/3714/72 1501/3715/72 +f 1501/3715/72 1502/3714/72 1504/3716/2 1503/3717/2 +f 1503/3717/2 1504/3716/2 1506/3718/29 1505/3719/29 +f 1505/3719/29 1506/3718/29 1508/3720/6 1507/3721/6 +f 1507/3721/6 1508/3720/6 1510/3722/39 1509/3723/39 +f 1509/3724/39 1510/3725/39 1496/3709/4 1495/3708/4 +f 1572/3726/415 1538/3727/287 1540/3728/288 1573/3729/416 +f 1573/3729/416 1540/3728/288 1542/3730/291 1577/3731/417 +f 1577/3731/417 1542/3730/291 1544/3732/293 1581/3733/418 +f 1581/3733/418 1544/3732/293 1546/3734/295 1585/3735/419 +f 1585/3735/419 1546/3734/295 1548/3736/409 1589/3737/420 +f 1589/3737/420 1548/3736/409 1550/3738/299 1593/3739/421 +f 1593/3739/421 1550/3738/299 1552/3740/285 1597/3741/422 +f 1597/3741/422 1552/3740/285 1554/3742/286 1601/3743/423 +f 1601/3743/423 1554/3742/286 1556/3744/290 1605/3745/424 +f 1605/3745/424 1556/3744/290 1558/3746/292 1609/3747/425 +f 1609/3747/425 1558/3746/292 1560/3748/294 1613/3749/426 +f 1613/3749/426 1560/3748/294 1562/3750/296 1617/3751/427 +f 1617/3751/427 1562/3750/296 1564/3752/298 1621/3753/428 +f 1621/3753/428 1564/3752/298 1566/3754/300 1625/3755/429 +f 1625/3755/429 1566/3754/300 1568/3756/289 1629/3757/430 +f 1567/3758/241 1632/3759/431 1569/3760/432 1537/3761/240 +f 1632/3759/431 1631/3762/433 1570/3763/434 1569/3760/432 +f 1626/3764/435 1630/3765/436 1631/3766/433 1627/3767/437 +f 1630/3768/436 1629/3769/430 1572/3726/415 1571/3770/438 +f 1565/3771/252 1628/3772/439 1632/3773/431 1567/3774/241 +f 1628/3772/439 1627/3767/437 1631/3766/433 1632/3773/431 +f 1622/3775/440 1626/3764/435 1627/3767/437 1623/3776/441 +f 1626/3764/435 1625/3755/429 1629/3757/430 1630/3765/436 +f 1563/3777/413 1624/3778/442 1628/3772/439 1565/3771/252 +f 1624/3778/442 1623/3776/441 1627/3767/437 1628/3772/439 +f 1618/3779/443 1622/3775/440 1623/3776/441 1619/3780/444 +f 1622/3775/440 1621/3753/428 1625/3755/429 1626/3764/435 +f 1561/3781/248 1620/3782/445 1624/3778/442 1563/3777/413 +f 1620/3782/445 1619/3780/444 1623/3776/441 1624/3778/442 +f 1614/3783/446 1618/3779/443 1619/3780/444 1615/3784/447 +f 1618/3779/443 1617/3751/427 1621/3753/428 1622/3775/440 +f 1559/3785/246 1616/3786/448 1620/3782/445 1561/3781/248 +f 1616/3786/448 1615/3784/447 1619/3780/444 1620/3782/445 +f 1610/3787/449 1614/3783/446 1615/3784/447 1611/3788/450 +f 1614/3783/446 1613/3749/426 1617/3751/427 1618/3779/443 +f 1557/3789/244 1612/3790/451 1616/3786/448 1559/3785/246 +f 1612/3790/451 1611/3788/450 1615/3784/447 1616/3786/448 +f 1606/3791/452 1610/3787/449 1611/3788/450 1607/3792/453 +f 1610/3787/449 1609/3747/425 1613/3749/426 1614/3783/446 +f 1555/3793/242 1608/3794/454 1612/3790/451 1557/3789/244 +f 1608/3794/454 1607/3792/453 1611/3788/450 1612/3790/451 +f 1602/3795/455 1606/3791/452 1607/3792/453 1603/3796/456 +f 1606/3791/452 1605/3745/424 1609/3747/425 1610/3787/449 +f 1553/3797/237 1604/3798/457 1608/3794/454 1555/3793/242 +f 1604/3798/457 1603/3796/456 1607/3792/453 1608/3794/454 +f 1598/3799/458 1602/3795/455 1603/3796/456 1599/3800/459 +f 1602/3795/455 1601/3743/423 1605/3745/424 1606/3791/452 +f 1551/3801/238 1600/3802/460 1604/3798/457 1553/3797/237 +f 1600/3802/460 1599/3800/459 1603/3796/456 1604/3798/457 +f 1594/3803/461 1598/3799/458 1599/3800/459 1595/3804/462 +f 1598/3799/458 1597/3741/422 1601/3743/423 1602/3795/455 +f 1549/3805/251 1596/3806/463 1600/3802/460 1551/3801/238 +f 1596/3806/463 1595/3804/462 1599/3800/459 1600/3802/460 +f 1590/3807/464 1594/3803/461 1595/3804/462 1591/3808/465 +f 1594/3803/461 1593/3739/421 1597/3741/422 1598/3799/458 +f 1547/3809/249 1592/3810/466 1596/3806/463 1549/3805/251 +f 1592/3810/466 1591/3808/465 1595/3804/462 1596/3806/463 +f 1586/3811/467 1590/3807/464 1591/3808/465 1587/3812/468 +f 1590/3807/464 1589/3737/420 1593/3739/421 1594/3803/461 +f 1545/3813/247 1588/3814/469 1592/3810/466 1547/3809/249 +f 1588/3814/469 1587/3812/468 1591/3808/465 1592/3810/466 +f 1582/3815/470 1586/3811/467 1587/3812/468 1583/3816/471 +f 1586/3811/467 1585/3735/419 1589/3737/420 1590/3807/464 +f 1543/3817/245 1584/3818/472 1588/3814/469 1545/3813/247 +f 1584/3818/472 1583/3816/471 1587/3812/468 1588/3814/469 +f 1578/3819/473 1582/3815/470 1583/3816/471 1579/3820/474 +f 1582/3815/470 1581/3733/418 1585/3735/419 1586/3811/467 +f 1541/3821/243 1580/3822/475 1584/3818/472 1543/3817/245 +f 1580/3822/475 1579/3820/474 1583/3816/471 1584/3818/472 +f 1574/3823/476 1578/3819/473 1579/3820/474 1575/3824/477 +f 1578/3819/473 1577/3731/417 1581/3733/418 1582/3815/470 +f 1539/3825/408 1576/3826/478 1580/3822/475 1541/3821/243 +f 1576/3826/478 1575/3824/477 1579/3820/474 1580/3822/475 +f 1570/3763/434 1571/3770/438 1574/3823/476 1575/3824/477 +f 1574/3823/476 1573/3729/416 1577/3731/417 1578/3819/473 +f 1537/3761/240 1569/3760/432 1576/3826/478 1539/3825/408 +f 1569/3760/432 1570/3763/434 1575/3824/477 1576/3826/478 +f 1629/3769/430 1568/3827/289 1538/3727/287 1572/3726/415 +f 1571/3770/438 1572/3726/415 1573/3729/416 1574/3823/476 +f 1630/3768/436 1571/3770/438 1570/3763/434 1631/3762/433 +f 1633/3828/240 1634/3829/287 1636/3830/288 1635/3831/408 +f 1635/3831/408 1636/3830/288 1638/3832/291 1637/3833/243 +f 1637/3833/243 1638/3832/291 1640/3834/302 1639/3835/303 +f 1639/3835/303 1640/3834/302 1642/3836/295 1641/3837/247 +f 1641/3837/247 1642/3836/295 1644/3838/409 1643/3839/304 +f 1643/3839/304 1644/3838/409 1646/3840/299 1645/3841/251 +f 1645/3841/251 1646/3840/299 1648/3842/479 1647/3843/305 +f 1647/3843/305 1648/3842/479 1650/3844/286 1649/3845/237 +f 1649/3846/237 1650/3847/286 1652/3848/410 1651/3849/242 +f 1651/3849/242 1652/3848/410 1654/3850/292 1653/3851/244 +f 1653/3851/244 1654/3850/292 1656/3852/294 1655/3853/246 +f 1655/3853/246 1656/3852/294 1658/3854/296 1657/3855/248 +f 1657/3855/248 1658/3854/296 1660/3856/412 1659/3857/250 +f 1659/3857/250 1660/3856/412 1662/3858/300 1661/3859/252 +f 1661/3859/252 1662/3858/300 1664/3860/414 1663/3861/480 +f 1663/3861/480 1664/3860/414 1634/3862/287 1633/3863/240 +f 1665/3864/240 1666/3865/287 1668/3866/301 1667/3867/239 +f 1667/3867/239 1668/3866/301 1670/3868/291 1669/3869/243 +f 1669/3869/243 1670/3868/291 1672/3870/302 1671/3871/303 +f 1671/3871/303 1672/3870/302 1674/3872/295 1673/3873/247 +f 1673/3873/247 1674/3872/295 1676/3874/409 1675/3875/304 +f 1675/3875/304 1676/3874/409 1678/3876/299 1677/3877/251 +f 1677/3877/251 1678/3876/299 1680/3878/479 1679/3879/305 +f 1679/3879/305 1680/3878/479 1682/3880/286 1681/3881/237 +f 1681/3882/237 1682/3883/286 1684/3884/410 1683/3885/411 +f 1683/3885/411 1684/3884/410 1686/3886/292 1685/3887/244 +f 1685/3887/244 1686/3886/292 1688/3888/294 1687/3889/246 +f 1687/3889/246 1688/3888/294 1690/3890/296 1689/3891/248 +f 1689/3891/248 1690/3890/296 1692/3892/412 1691/3893/413 +f 1691/3893/413 1692/3892/412 1694/3894/300 1693/3895/252 +f 1693/3895/252 1694/3894/300 1696/3896/289 1695/3897/241 +f 1695/3897/241 1696/3896/289 1666/3898/287 1665/3899/240 +f 1733/3900/5 1734/3901/316 1736/3902/317 1735/3903/315 +f 1735/3904/315 1736/3905/317 1738/3906/318 1737/3907/313 +f 1737/3907/313 1738/3906/318 1740/3908/319 1739/3909/6 +f 1739/3909/6 1740/3908/319 1742/3910/320 1741/3911/310 +f 1741/3911/310 1742/3910/320 1744/3912/321 1743/3913/308 +f 1743/3913/308 1744/3912/321 1734/3901/316 1733/3900/5 +f 1745/3914/5 1746/3915/306 1748/3916/307 1747/3917/308 +f 1747/3918/308 1748/3919/307 1750/3920/309 1749/3921/310 +f 1749/3921/310 1750/3920/309 1752/3922/311 1751/3923/6 +f 1751/3923/6 1752/3922/311 1754/3924/312 1753/3925/313 +f 1753/3925/313 1754/3924/312 1756/3926/314 1755/3927/315 +f 1755/3927/315 1756/3926/314 1746/3915/306 1745/3914/5 +f 1757/3928/5 1758/3929/306 1760/3930/307 1759/3931/308 +f 1759/3932/308 1760/3933/307 1762/3934/309 1761/3935/310 +f 1761/3935/310 1762/3934/309 1764/3936/311 1763/3937/6 +f 1763/3937/6 1764/3936/311 1766/3938/312 1765/3939/313 +f 1765/3939/313 1766/3938/312 1768/3940/314 1767/3941/315 +f 1767/3941/315 1768/3940/314 1758/3929/306 1757/3928/5 +f 1769/3942/5 1770/3943/306 1772/3944/307 1771/3945/308 +f 1771/3946/308 1772/3947/307 1774/3948/309 1773/3949/310 +f 1773/3949/310 1774/3948/309 1776/3950/311 1775/3951/6 +f 1775/3951/6 1776/3950/311 1778/3952/312 1777/3953/313 +f 1777/3953/313 1778/3952/312 1780/3954/314 1779/3955/315 +f 1779/3955/315 1780/3954/314 1770/3943/306 1769/3942/5 +f 1781/3956/5 1782/3957/306 1784/3958/307 1783/3959/308 +f 1783/3960/308 1784/3961/307 1786/3962/309 1785/3963/310 +f 1785/3963/310 1786/3962/309 1788/3964/311 1787/3965/6 +f 1787/3965/6 1788/3964/311 1790/3966/312 1789/3967/313 +f 1789/3967/313 1790/3966/312 1792/3968/314 1791/3969/315 +f 1791/3969/315 1792/3968/314 1782/3957/306 1781/3956/5 +f 1793/3970/5 1794/3971/316 1796/3972/317 1795/3973/315 +f 1795/3974/315 1796/3975/317 1798/3976/318 1797/3977/313 +f 1797/3977/313 1798/3976/318 1800/3978/319 1799/3979/6 +f 1799/3979/6 1800/3978/319 1802/3980/320 1801/3981/310 +f 1801/3981/310 1802/3980/320 1804/3982/321 1803/3983/308 +f 1803/3983/308 1804/3982/321 1794/3971/316 1793/3970/5 +f 1805/3984/5 1806/3985/316 1808/3986/317 1807/3987/315 +f 1807/3988/315 1808/3989/317 1810/3990/318 1809/3991/313 +f 1809/3991/313 1810/3990/318 1812/3992/319 1811/3993/6 +f 1811/3993/6 1812/3992/319 1814/3994/320 1813/3995/310 +f 1813/3995/310 1814/3994/320 1816/3996/321 1815/3997/308 +f 1815/3997/308 1816/3996/321 1806/3985/316 1805/3984/5 +f 1817/3998/5 1818/3999/316 1820/4000/317 1819/4001/315 +f 1819/4002/315 1820/4003/317 1822/4004/318 1821/4005/313 +f 1821/4005/313 1822/4004/318 1824/4006/319 1823/4007/6 +f 1823/4007/6 1824/4006/319 1826/4008/320 1825/4009/310 +f 1825/4009/310 1826/4008/320 1828/4010/321 1827/4011/308 +f 1827/4011/308 1828/4010/321 1818/3999/316 1817/3998/5 +f 1829/4012/5 1830/4013/316 1832/4014/317 1831/4015/315 +f 1831/4016/315 1832/4017/317 1834/4018/318 1833/4019/313 +f 1833/4019/313 1834/4018/318 1836/4020/319 1835/4021/6 +f 1835/4021/6 1836/4020/319 1838/4022/320 1837/4023/310 +f 1837/4023/310 1838/4022/320 1840/4024/321 1839/4025/308 +f 1839/4025/308 1840/4024/321 1830/4013/316 1829/4012/5 +f 1841/4026/5 1842/4027/306 1844/4028/307 1843/4029/308 +f 1843/4030/308 1844/4031/307 1846/4032/309 1845/4033/310 +f 1845/4033/310 1846/4032/309 1848/4034/311 1847/4035/6 +f 1847/4035/6 1848/4034/311 1850/4036/312 1849/4037/313 +f 1849/4037/313 1850/4036/312 1852/4038/314 1851/4039/315 +f 1851/4039/315 1852/4038/314 1842/4027/306 1841/4026/5 +f 1853/4040/5 1854/4041/306 1856/4042/307 1855/4043/308 +f 1855/4044/308 1856/4045/307 1858/4046/309 1857/4047/310 +f 1857/4047/310 1858/4046/309 1860/4048/311 1859/4049/6 +f 1859/4049/6 1860/4048/311 1862/4050/312 1861/4051/313 +f 1861/4051/313 1862/4050/312 1864/4052/314 1863/4053/315 +f 1863/4053/315 1864/4052/314 1854/4041/306 1853/4040/5 +f 1865/4054/5 1866/4055/306 1868/4056/307 1867/4057/308 +f 1867/4058/308 1868/4059/307 1870/4060/309 1869/4061/310 +f 1869/4061/310 1870/4060/309 1872/4062/311 1871/4063/6 +f 1871/4063/6 1872/4062/311 1874/4064/312 1873/4065/313 +f 1873/4065/313 1874/4064/312 1876/4066/314 1875/4067/315 +f 1875/4067/315 1876/4066/314 1866/4055/306 1865/4054/5 +f 1877/4068/5 1878/4069/306 1880/4070/307 1879/4071/308 +f 1879/4072/308 1880/4073/307 1882/4074/309 1881/4075/310 +f 1881/4075/310 1882/4074/309 1884/4076/311 1883/4077/6 +f 1883/4077/6 1884/4076/311 1886/4078/312 1885/4079/313 +f 1885/4079/313 1886/4078/312 1888/4080/314 1887/4081/315 +f 1887/4081/315 1888/4080/314 1878/4069/306 1877/4068/5 +f 1889/4082/5 1890/4083/316 1892/4084/317 1891/4085/315 +f 1891/4086/315 1892/4087/317 1894/4088/318 1893/4089/313 +f 1893/4089/313 1894/4088/318 1896/4090/319 1895/4091/6 +f 1895/4091/6 1896/4090/319 1898/4092/320 1897/4093/310 +f 1897/4093/310 1898/4092/320 1900/4094/321 1899/4095/308 +f 1899/4095/308 1900/4094/321 1890/4083/316 1889/4082/5 +f 1901/4096/5 1902/4097/316 1904/4098/317 1903/4099/315 +f 1903/4100/315 1904/4101/317 1906/4102/318 1905/4103/313 +f 1905/4103/313 1906/4102/318 1908/4104/319 1907/4105/6 +f 1907/4105/6 1908/4104/319 1910/4106/320 1909/4107/310 +f 1909/4107/310 1910/4106/320 1912/4108/321 1911/4109/308 +f 1911/4109/308 1912/4108/321 1902/4097/316 1901/4096/5 +f 1913/4110/5 1914/4111/316 1916/4112/317 1915/4113/315 +f 1915/4114/315 1916/4115/317 1918/4116/318 1917/4117/313 +f 1917/4117/313 1918/4116/318 1920/4118/319 1919/4119/6 +f 1919/4119/6 1920/4118/319 1922/4120/320 1921/4121/310 +f 1921/4121/310 1922/4120/320 1924/4122/321 1923/4123/308 +f 1923/4123/308 1924/4122/321 1914/4111/316 1913/4110/5 +f 1925/4124/5 1926/4125/481 1928/4126/482 1927/4127/483 +f 1927/4128/483 1928/4129/482 1930/4130/484 1929/4131/485 +f 1929/4131/485 1930/4130/484 1932/4132/486 1931/4133/6 +f 1931/4133/6 1932/4132/486 1934/4134/487 1933/4135/488 +f 1933/4135/488 1934/4134/487 1936/4136/489 1935/4137/490 +f 1935/4137/490 1936/4136/489 1926/4125/481 1925/4124/5 +f 1937/4138/5 1938/4139/481 1940/4140/482 1939/4141/483 +f 1939/4142/483 1940/4143/482 1942/4144/484 1941/4145/485 +f 1941/4145/485 1942/4144/484 1944/4146/486 1943/4147/6 +f 1943/4147/6 1944/4146/486 1946/4148/487 1945/4149/488 +f 1945/4149/488 1946/4148/487 1948/4150/489 1947/4151/490 +f 1947/4151/490 1948/4150/489 1938/4139/481 1937/4138/5 +f 1949/4152/5 1950/4153/491 1952/4154/492 1951/4155/490 +f 1951/4156/490 1952/4157/492 1954/4158/493 1953/4159/488 +f 1953/4159/488 1954/4158/493 1956/4160/494 1955/4161/6 +f 1955/4161/6 1956/4160/494 1958/4162/495 1957/4163/485 +f 1957/4163/485 1958/4162/495 1960/4164/496 1959/4165/483 +f 1959/4165/483 1960/4164/496 1950/4153/491 1949/4152/5 +f 1961/4166/5 1962/4167/491 1964/4168/492 1963/4169/490 +f 1963/4170/490 1964/4171/492 1966/4172/493 1965/4173/488 +f 1965/4173/488 1966/4172/493 1968/4174/494 1967/4175/6 +f 1967/4175/6 1968/4174/494 1970/4176/495 1969/4177/485 +f 1969/4177/485 1970/4176/495 1972/4178/496 1971/4179/483 +f 1971/4179/483 1972/4178/496 1962/4167/491 1961/4166/5 +f 1973/4180/491 1974/4181/481 1976/4182/482 1975/4183/496 +f 1975/4184/496 1976/4185/482 1978/4186/484 1977/4187/495 +f 1977/4187/495 1978/4186/484 1980/4188/486 1979/4189/494 +f 1979/4189/494 1980/4188/486 1982/4190/487 1981/4191/493 +f 1981/4191/493 1982/4190/487 1983/4192/489 1984/4193/492 +f 1984/4193/492 1983/4192/489 1974/4181/481 1973/4180/491 +f 1985/4194/491 1986/4195/481 1988/4196/482 1987/4197/496 +f 1987/4198/496 1988/4199/482 1990/4200/484 1989/4201/495 +f 1989/4201/495 1990/4200/484 1992/4202/486 1991/4203/494 +f 1991/4203/494 1992/4202/486 1994/4204/487 1993/4205/493 +f 1993/4205/493 1994/4204/487 1995/4206/489 1996/4207/492 +f 1996/4207/492 1995/4206/489 1986/4195/481 1985/4194/491 +f 1997/4208/491 1998/4209/481 2000/4210/482 1999/4211/496 +f 1999/4212/496 2000/4213/482 2002/4214/484 2001/4215/495 +f 2001/4215/495 2002/4214/484 2004/4216/486 2003/4217/494 +f 2003/4217/494 2004/4216/486 2006/4218/487 2005/4219/493 +f 2005/4219/493 2006/4218/487 2007/4220/489 2008/4221/492 +f 2008/4221/492 2007/4220/489 1998/4209/481 1997/4208/491 +f 2009/4222/306 2010/4223/316 2012/4224/317 2011/4225/314 +f 2011/4226/314 2012/4227/317 2014/4228/318 2013/4229/312 +f 2013/4229/312 2014/4228/318 2016/4230/319 2015/4231/311 +f 2015/4231/311 2016/4230/319 2018/4232/320 2017/4233/309 +f 2017/4233/309 2018/4232/320 2019/4234/321 2020/4235/307 +f 2020/4235/307 2019/4234/321 2010/4223/316 2009/4222/306 +f 2021/4236/5 2022/4237/481 2024/4238/482 2023/4239/483 +f 2023/4240/483 2024/4241/482 2026/4242/484 2025/4243/485 +f 2025/4243/485 2026/4242/484 2028/4244/486 2027/4245/6 +f 2027/4245/6 2028/4244/486 2030/4246/487 2029/4247/488 +f 2029/4247/488 2030/4246/487 2032/4248/489 2031/4249/490 +f 2031/4249/490 2032/4248/489 2022/4237/481 2021/4236/5 +f 2033/4250/5 2034/4251/481 2036/4252/482 2035/4253/483 +f 2035/4254/483 2036/4255/482 2038/4256/484 2037/4257/485 +f 2037/4257/485 2038/4256/484 2040/4258/486 2039/4259/6 +f 2039/4259/6 2040/4258/486 2042/4260/487 2041/4261/488 +f 2041/4261/488 2042/4260/487 2044/4262/489 2043/4263/490 +f 2043/4263/490 2044/4262/489 2034/4251/481 2033/4250/5 +f 2045/4264/5 2046/4265/491 2048/4266/492 2047/4267/490 +f 2047/4268/490 2048/4269/492 2050/4270/493 2049/4271/488 +f 2049/4271/488 2050/4270/493 2052/4272/494 2051/4273/6 +f 2051/4273/6 2052/4272/494 2054/4274/495 2053/4275/485 +f 2053/4275/485 2054/4274/495 2056/4276/496 2055/4277/483 +f 2055/4277/483 2056/4276/496 2046/4265/491 2045/4264/5 +f 2057/4278/5 2058/4279/491 2060/4280/492 2059/4281/490 +f 2059/4282/490 2060/4283/492 2062/4284/493 2061/4285/488 +f 2061/4285/488 2062/4284/493 2064/4286/494 2063/4287/6 +f 2063/4287/6 2064/4286/494 2066/4288/495 2065/4289/485 +f 2065/4289/485 2066/4288/495 2068/4290/496 2067/4291/483 +f 2067/4291/483 2068/4290/496 2058/4279/491 2057/4278/5 +f 2069/4292/306 2070/4293/316 2072/4294/317 2071/4295/314 +f 2071/4296/314 2072/4297/317 2074/4298/318 2073/4299/312 +f 2073/4299/312 2074/4298/318 2076/4300/319 2075/4301/311 +f 2075/4301/311 2076/4300/319 2078/4302/320 2077/4303/309 +f 2077/4303/309 2078/4302/320 2079/4304/321 2080/4305/307 +f 2080/4305/307 2079/4304/321 2070/4293/316 2069/4292/306 +f 2081/4306/306 2082/4307/316 2084/4308/317 2083/4309/314 +f 2083/4310/314 2084/4311/317 2086/4312/318 2085/4313/312 +f 2085/4313/312 2086/4312/318 2088/4314/319 2087/4315/311 +f 2087/4315/311 2088/4314/319 2090/4316/320 2089/4317/309 +f 2089/4317/309 2090/4316/320 2091/4318/321 2092/4319/307 +f 2092/4319/307 2091/4318/321 2082/4307/316 2081/4306/306 +f 2093/4320/306 2094/4321/316 2096/4322/317 2095/4323/314 +f 2095/4324/314 2096/4325/317 2098/4326/318 2097/4327/312 +f 2097/4327/312 2098/4326/318 2100/4328/319 2099/4329/311 +f 2099/4329/311 2100/4328/319 2102/4330/320 2101/4331/309 +f 2101/4331/309 2102/4330/320 2103/4332/321 2104/4333/307 +f 2104/4333/307 2103/4332/321 2094/4321/316 2093/4320/306 +f 2125/4334/491 2126/4335/481 2128/4336/482 2127/4337/496 +f 2127/4338/496 2128/4339/482 2130/4340/484 2129/4341/495 +f 2129/4341/495 2130/4340/484 2132/4342/486 2131/4343/494 +f 2131/4343/494 2132/4342/486 2134/4344/487 2133/4345/493 +f 2133/4345/493 2134/4344/487 2135/4346/489 2136/4347/492 +f 2136/4347/492 2135/4346/489 2126/4335/481 2125/4334/491 +f 2137/4348/338 2138/4349/339 2140/4350/337 2139/4351/336 +f 2139/4351/336 2140/4350/337 2142/4352/335 2141/4353/334 +f 2141/4353/334 2142/4352/335 2144/4354/333 2143/4355/332 +f 2143/4355/332 2144/4354/333 2146/4356/331 2145/4357/330 +f 2145/4357/330 2146/4356/331 2148/4358/497 2147/4359/328 +f 2147/4359/328 2148/4358/497 2150/4360/327 2149/4361/326 +f 2149/4361/326 2150/4360/327 2152/4362/325 2151/4363/498 +f 2151/4363/498 2152/4362/325 2154/4364/322 2153/4365/323 +f 2153/4366/323 2154/4367/322 2156/4368/499 2155/4369/500 +f 2155/4369/500 2156/4368/499 2158/4370/351 2157/4371/350 +f 2157/4371/350 2158/4370/351 2160/4372/501 2159/4373/502 +f 2159/4373/502 2160/4372/501 2162/4374/347 2161/4375/346 +f 2161/4375/346 2162/4374/347 2164/4376/503 2163/4377/344 +f 2163/4377/344 2164/4376/503 2166/4378/343 2165/4379/342 +f 2165/4379/342 2166/4378/343 2168/4380/341 2167/4381/504 +f 2167/4381/504 2168/4380/341 2138/4382/339 2137/4383/338 +f 2169/4384/338 2170/4385/339 2172/4386/337 2171/4387/407 +f 2171/4387/407 2172/4386/337 2174/4388/335 2173/4389/334 +f 2173/4389/334 2174/4388/335 2176/4390/505 2175/4391/506 +f 2175/4391/506 2176/4390/505 2178/4392/331 2177/4393/330 +f 2177/4393/330 2178/4392/331 2180/4394/329 2179/4395/507 +f 2179/4395/507 2180/4394/329 2182/4396/327 2181/4397/326 +f 2181/4397/326 2182/4396/327 2184/4398/508 2183/4399/324 +f 2183/4399/324 2184/4398/508 2186/4400/322 2185/4401/323 +f 2185/4402/323 2186/4403/322 2188/4404/353 2187/4405/352 +f 2187/4405/352 2188/4404/353 2190/4406/351 2189/4407/350 +f 2189/4407/350 2190/4406/351 2192/4408/501 2191/4409/502 +f 2191/4409/502 2192/4408/501 2194/4410/347 2193/4411/346 +f 2193/4411/346 2194/4410/347 2196/4412/345 2195/4413/344 +f 2195/4413/344 2196/4412/345 2198/4414/343 2197/4415/342 +f 2197/4415/342 2198/4414/343 2200/4416/341 2199/4417/504 +f 2199/4417/504 2200/4416/341 2170/4418/339 2169/4419/338 +f 2207/4420/4 2208/4421/4 2210/4422/44 2209/4423/44 +f 2209/4423/44 2210/4422/44 2212/4424/1 2211/4425/1 +f 2211/4425/1 2212/4424/1 2214/4426/46 2213/4427/46 +f 2213/4427/46 2214/4426/46 2216/4428/2 2215/4429/2 +f 2215/4429/2 2216/4428/2 2218/4430/47 2217/4431/47 +f 2217/4431/47 2218/4430/47 2220/4432/3 2219/4433/3 +f 2219/4433/3 2220/4432/3 2222/4434/45 2221/4435/45 +f 2221/4436/45 2222/4437/45 2208/4421/4 2207/4420/4 +f 2238/4438/77 2237/4439/134 2235/4440/135 2236/4441/44 +f 2240/4442/4 2239/4443/133 2237/4439/134 2238/4438/77 +f 2242/4444/84 2241/4445/132 2239/4443/133 2240/4442/4 +f 2244/4446/45 2243/4447/131 2241/4448/132 2242/4449/84 +f 2246/4450/83 2245/4451/509 2243/4447/131 2244/4446/45 +f 2248/4452/3 2247/4453/129 2245/4451/509 2246/4450/83 +f 2250/4454/82 2249/4455/128 2247/4453/129 2248/4452/3 +f 2252/4456/47 2251/4457/127 2249/4455/128 2250/4454/82 +f 2254/4458/81 2253/4459/510 2251/4457/127 2252/4456/47 +f 2256/4460/2 2255/4461/125 2253/4459/510 2254/4458/81 +f 2258/4462/80 2257/4463/124 2255/4461/125 2256/4460/2 +f 2260/4464/46 2259/4465/123 2257/4466/124 2258/4467/80 +f 2262/4468/79 2261/4469/122 2259/4465/123 2260/4464/46 +f 2264/4470/1 2263/4471/121 2261/4469/122 2262/4468/79 +f 2234/4472/78 2233/4473/136 2263/4471/121 2264/4470/1 +f 2236/4441/44 2235/4440/135 2233/4473/136 2234/4472/78 +f 2265/4474/511 2266/4475/133 2268/4476/512 2267/4477/513 +f 2267/4477/513 2268/4476/512 2270/4478/135 2269/4479/514 +f 2269/4479/514 2270/4478/135 2272/4480/136 2271/4481/515 +f 2271/4481/515 2272/4480/136 2274/4482/121 2273/4483/516 +f 2273/4483/516 2274/4482/121 2276/4484/122 2275/4485/517 +f 2275/4485/517 2276/4484/122 2278/4486/123 2277/4487/518 +f 2277/4487/518 2278/4486/123 2280/4488/124 2279/4489/519 +f 2279/4489/519 2280/4488/124 2282/4490/125 2281/4491/520 +f 2281/4491/520 2282/4490/125 2284/4492/126 2283/4493/521 +f 2283/4493/521 2284/4492/126 2286/4494/127 2285/4495/522 +f 2285/4495/522 2286/4494/127 2288/4496/523 2287/4497/524 +f 2287/4497/524 2288/4496/523 2290/4498/129 2289/4499/525 +f 2289/4499/525 2290/4498/129 2292/4500/130 2291/4501/526 +f 2291/4501/526 2292/4500/130 2294/4502/131 2293/4503/527 +f 2293/4503/527 2294/4502/131 2296/4504/528 2295/4505/529 +f 2295/4506/529 2296/4507/528 2266/4475/133 2265/4474/511 +f 2303/4508/6 2304/4509/6 2306/4510/8 2305/4511/8 +f 2305/4511/8 2306/4510/8 2308/4512/1 2307/4513/1 +f 2307/4513/1 2308/4512/1 2310/4514/9 2309/4515/9 +f 2309/4515/9 2310/4514/9 2312/4516/5 2311/4517/5 +f 2311/4517/5 2312/4516/5 2314/4518/10 2313/4519/10 +f 2313/4519/10 2314/4518/10 2316/4520/3 2315/4521/3 +f 2315/4521/3 2316/4520/3 2318/4522/7 2317/4523/7 +f 2317/4524/7 2318/4525/7 2304/4509/6 2303/4508/6 +f 2364/4526/530 2330/4527/323 2332/4528/324 2365/4529/531 +f 2365/4529/531 2332/4528/324 2334/4530/326 2369/4531/532 +f 2369/4531/532 2334/4530/326 2336/4532/507 2373/4533/533 +f 2373/4533/533 2336/4532/507 2338/4534/330 2377/4535/534 +f 2377/4535/534 2338/4534/330 2340/4536/506 2381/4537/535 +f 2381/4537/535 2340/4536/506 2342/4538/334 2385/4539/536 +f 2385/4539/536 2342/4538/334 2344/4540/407 2389/4541/537 +f 2389/4541/537 2344/4540/407 2346/4542/338 2393/4543/538 +f 2393/4543/538 2346/4542/338 2348/4544/504 2397/4545/539 +f 2397/4545/539 2348/4544/504 2350/4546/342 2401/4547/540 +f 2401/4547/540 2350/4546/342 2352/4548/344 2405/4549/541 +f 2405/4549/541 2352/4548/344 2354/4550/346 2409/4551/542 +f 2409/4551/542 2354/4550/346 2356/4552/502 2413/4553/543 +f 2413/4553/543 2356/4552/502 2358/4554/350 2417/4555/544 +f 2417/4555/544 2358/4554/350 2360/4556/352 2421/4557/545 +f 2359/4558/353 2424/4559/546 2361/4560/547 2329/4561/322 +f 2424/4559/546 2423/4562/548 2362/4563/549 2361/4560/547 +f 2418/4564/550 2422/4565/551 2423/4566/548 2419/4567/552 +f 2422/4568/551 2421/4569/545 2364/4526/530 2363/4570/553 +f 2357/4571/351 2420/4572/554 2424/4573/546 2359/4574/353 +f 2420/4572/554 2419/4567/552 2423/4566/548 2424/4573/546 +f 2414/4575/555 2418/4564/550 2419/4567/552 2415/4576/556 +f 2418/4564/550 2417/4555/544 2421/4557/545 2422/4565/551 +f 2355/4577/501 2416/4578/557 2420/4572/554 2357/4571/351 +f 2416/4578/557 2415/4576/556 2419/4567/552 2420/4572/554 +f 2410/4579/558 2414/4575/555 2415/4576/556 2411/4580/559 +f 2414/4575/555 2413/4553/543 2417/4555/544 2418/4564/550 +f 2353/4581/347 2412/4582/560 2416/4578/557 2355/4577/501 +f 2412/4582/560 2411/4580/559 2415/4576/556 2416/4578/557 +f 2406/4583/561 2410/4579/558 2411/4580/559 2407/4584/562 +f 2410/4579/558 2409/4551/542 2413/4553/543 2414/4575/555 +f 2351/4585/345 2408/4586/563 2412/4582/560 2353/4581/347 +f 2408/4586/563 2407/4584/562 2411/4580/559 2412/4582/560 +f 2402/4587/564 2406/4583/561 2407/4584/562 2403/4588/565 +f 2406/4583/561 2405/4549/541 2409/4551/542 2410/4579/558 +f 2349/4589/343 2404/4590/566 2408/4586/563 2351/4585/345 +f 2404/4590/566 2403/4588/565 2407/4584/562 2408/4586/563 +f 2398/4591/567 2402/4587/564 2403/4588/565 2399/4592/568 +f 2402/4587/564 2401/4547/540 2405/4549/541 2406/4583/561 +f 2347/4593/341 2400/4594/569 2404/4590/566 2349/4589/343 +f 2400/4594/569 2399/4592/568 2403/4588/565 2404/4590/566 +f 2394/4595/570 2398/4591/567 2399/4592/568 2395/4596/571 +f 2398/4591/567 2397/4545/539 2401/4547/540 2402/4587/564 +f 2345/4597/339 2396/4598/572 2400/4594/569 2347/4593/341 +f 2396/4598/572 2395/4596/571 2399/4592/568 2400/4594/569 +f 2390/4599/573 2394/4595/570 2395/4596/571 2391/4600/574 +f 2394/4595/570 2393/4543/538 2397/4545/539 2398/4591/567 +f 2343/4601/337 2392/4602/575 2396/4598/572 2345/4597/339 +f 2392/4602/575 2391/4600/574 2395/4596/571 2396/4598/572 +f 2386/4603/576 2390/4599/573 2391/4600/574 2387/4604/577 +f 2390/4599/573 2389/4541/537 2393/4543/538 2394/4595/570 +f 2341/4605/335 2388/4606/578 2392/4602/575 2343/4601/337 +f 2388/4606/578 2387/4604/577 2391/4600/574 2392/4602/575 +f 2382/4607/579 2386/4603/576 2387/4604/577 2383/4608/580 +f 2386/4603/576 2385/4539/536 2389/4541/537 2390/4599/573 +f 2339/4609/505 2384/4610/581 2388/4606/578 2341/4605/335 +f 2384/4610/581 2383/4608/580 2387/4604/577 2388/4606/578 +f 2378/4611/582 2382/4607/579 2383/4608/580 2379/4612/583 +f 2382/4607/579 2381/4537/535 2385/4539/536 2386/4603/576 +f 2337/4613/331 2380/4614/584 2384/4610/581 2339/4609/505 +f 2380/4614/584 2379/4612/583 2383/4608/580 2384/4610/581 +f 2374/4615/585 2378/4611/582 2379/4612/583 2375/4616/586 +f 2378/4611/582 2377/4535/534 2381/4537/535 2382/4607/579 +f 2335/4617/329 2376/4618/587 2380/4614/584 2337/4613/331 +f 2376/4618/587 2375/4616/586 2379/4612/583 2380/4614/584 +f 2370/4619/588 2374/4615/585 2375/4616/586 2371/4620/589 +f 2374/4615/585 2373/4533/533 2377/4535/534 2378/4611/582 +f 2333/4621/327 2372/4622/590 2376/4618/587 2335/4617/329 +f 2372/4622/590 2371/4620/589 2375/4616/586 2376/4618/587 +f 2366/4623/591 2370/4619/588 2371/4620/589 2367/4624/592 +f 2370/4619/588 2369/4531/532 2373/4533/533 2374/4615/585 +f 2331/4625/325 2368/4626/593 2372/4622/590 2333/4621/327 +f 2368/4626/593 2367/4624/592 2371/4620/589 2372/4622/590 +f 2362/4563/549 2363/4570/553 2366/4623/591 2367/4624/592 +f 2366/4623/591 2365/4529/531 2369/4531/532 2370/4619/588 +f 2329/4561/322 2361/4560/547 2368/4626/593 2331/4625/325 +f 2361/4560/547 2362/4563/549 2367/4624/592 2368/4626/593 +f 2421/4569/545 2360/4627/352 2330/4527/323 2364/4526/530 +f 2363/4570/553 2364/4526/530 2365/4529/531 2366/4623/591 +f 2422/4568/551 2363/4570/553 2362/4563/549 2423/4562/548 +f 2431/4628/4 2432/4629/4 2434/4630/44 2433/4631/44 +f 2433/4631/44 2434/4630/44 2436/4632/1 2435/4633/1 +f 2435/4633/1 2436/4632/1 2438/4634/46 2437/4635/46 +f 2437/4635/46 2438/4634/46 2440/4636/2 2439/4637/2 +f 2439/4637/2 2440/4636/2 2442/4638/47 2441/4639/47 +f 2441/4639/47 2442/4638/47 2444/4640/3 2443/4641/3 +f 2443/4641/3 2444/4640/3 2446/4642/45 2445/4643/45 +f 2445/4644/45 2446/4645/45 2432/4629/4 2431/4628/4 +f 2462/4646/77 2461/4647/134 2459/4648/135 2460/4649/44 +f 2464/4650/4 2463/4651/133 2461/4647/134 2462/4646/77 +f 2466/4652/84 2465/4653/132 2463/4651/133 2464/4650/4 +f 2468/4654/45 2467/4655/131 2465/4656/132 2466/4657/84 +f 2470/4658/83 2469/4659/509 2467/4655/131 2468/4654/45 +f 2472/4660/3 2471/4661/129 2469/4659/509 2470/4658/83 +f 2474/4662/82 2473/4663/128 2471/4661/129 2472/4660/3 +f 2476/4664/47 2475/4665/127 2473/4663/128 2474/4662/82 +f 2478/4666/81 2477/4667/510 2475/4665/127 2476/4664/47 +f 2480/4668/2 2479/4669/125 2477/4667/510 2478/4666/81 +f 2482/4670/80 2481/4671/124 2479/4669/125 2480/4668/2 +f 2484/4672/46 2483/4673/123 2481/4674/124 2482/4675/80 +f 2486/4676/79 2485/4677/122 2483/4673/123 2484/4672/46 +f 2488/4678/1 2487/4679/121 2485/4677/122 2486/4676/79 +f 2458/4680/78 2457/4681/136 2487/4679/121 2488/4678/1 +f 2460/4649/44 2459/4648/135 2457/4681/136 2458/4680/78 +f 2489/4682/511 2490/4683/133 2492/4684/512 2491/4685/513 +f 2491/4685/513 2492/4684/512 2494/4686/135 2493/4687/514 +f 2493/4687/514 2494/4686/135 2496/4688/136 2495/4689/515 +f 2495/4689/515 2496/4688/136 2498/4690/121 2497/4691/516 +f 2497/4691/516 2498/4690/121 2500/4692/122 2499/4693/517 +f 2499/4693/517 2500/4692/122 2502/4694/123 2501/4695/518 +f 2501/4695/518 2502/4694/123 2504/4696/124 2503/4697/519 +f 2503/4697/519 2504/4696/124 2506/4698/125 2505/4699/520 +f 2505/4699/520 2506/4698/125 2508/4700/126 2507/4701/521 +f 2507/4701/521 2508/4700/126 2510/4702/127 2509/4703/522 +f 2509/4703/522 2510/4702/127 2512/4704/523 2511/4705/524 +f 2511/4705/524 2512/4704/523 2514/4706/129 2513/4707/525 +f 2513/4707/525 2514/4706/129 2516/4708/130 2515/4709/526 +f 2515/4709/526 2516/4708/130 2518/4710/131 2517/4711/527 +f 2517/4711/527 2518/4710/131 2520/4712/528 2519/4713/529 +f 2519/4714/529 2520/4715/528 2490/4683/133 2489/4682/511 +o Cylinder.001 +v -0.332625 -0.043982 0.106628 +v -0.332625 0.038775 0.106627 +v -0.330588 -0.043982 0.085948 +v -0.330588 0.038775 0.085948 +v -0.324556 -0.043982 0.066063 +v -0.324556 0.038775 0.066063 +v -0.314761 -0.043982 0.047737 +v -0.314761 0.038775 0.047737 +v -0.301579 -0.043982 0.031674 +v -0.301579 0.038775 0.031674 +v -0.285516 -0.043982 0.018492 +v -0.285516 0.038775 0.018492 +v -0.267190 -0.043982 0.008696 +v -0.267190 0.038775 0.008696 +v -0.247305 -0.043982 0.002664 +v -0.247305 0.038775 0.002664 +v -0.226625 -0.043982 0.000628 +v -0.226625 0.038775 0.000627 +v -0.205946 -0.043982 0.002664 +v -0.205946 0.038775 0.002664 +v -0.186061 -0.043982 0.008696 +v -0.186061 0.038775 0.008696 +v -0.167735 -0.043982 0.018492 +v -0.167735 0.038775 0.018492 +v -0.151672 -0.043982 0.031674 +v -0.151672 0.038775 0.031674 +v -0.138489 -0.043982 0.047737 +v -0.138489 0.038775 0.047737 +v -0.128694 -0.043982 0.066063 +v -0.128694 0.038775 0.066063 +v -0.122662 -0.043982 0.085948 +v -0.122662 0.038775 0.085948 +v -0.120625 -0.043982 0.106628 +v -0.120625 0.038775 0.106627 +v -0.122662 -0.043982 0.127307 +v -0.122662 0.038775 0.127307 +v -0.128694 -0.043982 0.147192 +v -0.128694 0.038775 0.147192 +v -0.138489 -0.043981 0.165518 +v -0.138489 0.038775 0.165518 +v -0.151672 -0.043981 0.181581 +v -0.151672 0.038775 0.181581 +v -0.167735 -0.043981 0.194764 +v -0.167735 0.038776 0.194763 +v -0.186061 -0.043981 0.204559 +v -0.186061 0.038776 0.204559 +v -0.205946 -0.043981 0.210591 +v -0.205946 0.038776 0.210591 +v -0.226625 -0.043981 0.212628 +v -0.226625 0.038776 0.212628 +v -0.247305 -0.043981 0.210591 +v -0.247305 0.038776 0.210591 +v -0.267190 -0.043981 0.204559 +v -0.267190 0.038776 0.204559 +v -0.285516 -0.043981 0.194763 +v -0.285516 0.038776 0.194763 +v -0.301579 -0.043981 0.181581 +v -0.301579 0.038775 0.181581 +v -0.314761 -0.043981 0.165518 +v -0.314761 0.038775 0.165518 +v -0.324557 -0.043982 0.147192 +v -0.324557 0.038775 0.147192 +v -0.330588 -0.043982 0.127307 +v -0.330589 0.038775 0.127307 +v -0.024972 0.002289 -0.120355 +v -0.026381 0.000936 -0.121070 +v -0.040442 0.000936 -0.079054 +v -0.133555 0.000937 0.147355 +v -0.038926 0.002289 -0.078548 +v -0.132148 0.002290 0.147284 +v -0.036782 0.002289 -0.077832 +v -0.130159 0.002290 0.147183 +v -0.035265 0.000936 -0.077325 +v -0.128752 0.000937 0.147111 +v -0.035265 -0.000977 -0.077325 +v -0.128752 -0.000976 0.147111 +v -0.036782 -0.002330 -0.077832 +v -0.130159 -0.002329 0.147183 +v -0.038926 -0.002330 -0.078548 +v -0.132148 -0.002329 0.147284 +v -0.040442 -0.000977 -0.079054 +v -0.133555 -0.000976 0.147355 +v -0.022978 0.002289 -0.119345 +v -0.021569 0.000936 -0.118631 +v -0.021569 -0.000977 -0.118631 +v -0.022978 -0.002330 -0.119345 +v -0.024972 -0.002330 -0.120355 +v -0.026381 -0.000977 -0.121070 +v -0.012480 -0.000977 -0.171509 +v -0.012480 0.000936 -0.171509 +v -0.011038 -0.002330 -0.170950 +v -0.008998 -0.002330 -0.170160 +v -0.007556 -0.000977 -0.169601 +v -0.007556 0.000936 -0.169601 +v -0.008998 0.002289 -0.170160 +v -0.011038 0.002289 -0.170950 +v -0.003756 -0.000978 -0.218789 +v -0.003756 0.000936 -0.218788 +v -0.002280 -0.002331 -0.218451 +v -0.000192 -0.002331 -0.217973 +v 0.001284 -0.000978 -0.217635 +v 0.001284 0.000936 -0.217635 +v -0.000192 0.002289 -0.217973 +v -0.002280 0.002289 -0.218451 +v -0.001686 -0.001256 -0.263449 +v -0.001686 0.001214 -0.263449 +v -0.000032 -0.003003 -0.263449 +v 0.002309 -0.003003 -0.263449 +v 0.003963 -0.001256 -0.263449 +v 0.003963 0.001214 -0.263449 +v 0.002309 0.002961 -0.263449 +v -0.000032 0.002961 -0.263449 +vt 0.000000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.562500 +vt 0.000000 0.562500 +vt 1.000000 0.625000 +vt 0.000000 0.625000 +vt 1.000000 0.687500 +vt 0.000000 0.687500 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 1.000000 0.812500 +vt 0.000000 0.812500 +vt 1.000000 0.875000 +vt 0.000000 0.875000 +vt 1.000000 0.937500 +vt 0.000000 0.937500 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.062500 +vt 0.000000 0.062500 +vt 1.000000 0.125000 +vt 0.000000 0.125000 +vt 1.000000 0.187500 +vt 0.000000 0.187500 +vt 1.000000 0.250000 +vt 0.000000 0.250000 +vt 1.000000 0.312500 +vt 0.000000 0.312500 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +vt 1.000000 0.437500 +vt 0.000000 0.437500 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 1.000000 0.562500 +vt 0.000000 0.562500 +vt 1.000000 0.625000 +vt 0.000000 0.625000 +vt 1.000000 0.687500 +vt 0.000000 0.687500 +vt 1.000000 0.750000 +vt 0.000000 0.750000 +vt 1.000000 0.812500 +vt 0.000000 0.812500 +vt 1.000000 0.875000 +vt 0.000000 0.875000 +vt 1.000000 0.937500 +vt 0.000000 0.937500 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.062500 +vt 0.000000 0.062500 +vt 1.000000 0.125000 +vt 0.000000 0.125000 +vt 1.000000 0.187500 +vt 0.000000 0.187500 +vt 1.000000 0.250000 +vt 0.000000 0.250000 +vt 1.000000 0.312500 +vt 0.000000 0.312500 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +vt 1.000000 0.437500 +vt 0.000000 0.437500 +vt 0.500000 0.187500 +vt 0.562500 0.125000 +vt 0.562500 0.187500 +vt 0.500000 0.250000 +vt 0.562500 0.187500 +vt 0.562500 0.250000 +vt 0.562500 0.250000 +vt 0.500000 0.687500 +vt 0.500000 0.250000 +vt 0.500000 0.187500 +vt 0.562500 0.125000 +vt 0.500000 0.250000 +vt 0.562500 0.187500 +vt 0.562500 0.250000 +vt 0.500000 0.250000 +vt 0.562500 0.250000 +vt 0.562500 0.250000 +vt 0.500000 0.687500 +vt 0.500000 0.250000 +vt 0.500000 0.187500 +vt 0.562500 0.125000 +vt 0.562500 0.187500 +vt 0.500000 0.187500 +vt 0.562500 0.187500 +vt 0.562500 0.687500 +vt 0.500000 0.125000 +vt 0.562500 0.125000 +vt 0.562500 0.250000 +vt 0.562500 0.687500 +vt 0.500000 0.125000 +vt 0.562500 0.062500 +vt 0.562500 0.125000 +vt 0.562500 0.125000 +vt 0.500000 0.187500 +vt 0.500000 0.125000 +vt 0.500000 0.187500 +vt 0.562500 0.687500 +vt 0.500000 0.187500 +vt 0.562500 0.187500 +vt 0.562500 0.687500 +vt 0.500000 0.250000 +vt 0.500000 0.125000 +vt 0.562500 0.125000 +vt 0.562500 0.187500 +vt 0.500000 0.125000 +vt 0.562500 0.125000 +vt 0.500000 0.062500 +vt 0.562500 0.062500 +vt 0.500000 0.062500 +vt 0.562500 0.062500 +vt 0.500000 0.062500 +vt 0.562500 0.062500 +vt 0.500000 0.125000 +vt 0.562500 0.062500 +vt 0.500000 0.125000 +vt 0.562500 0.062500 +vt 0.500000 0.062500 +vt 0.562500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.000000 +vt 0.500000 0.062500 +vt 0.562500 0.000000 +vt 0.500000 0.062500 +vt 0.562500 0.000000 +vt 0.562500 0.687500 +vt 0.562500 0.687500 +vt 0.500000 0.125000 +vt 0.500000 0.687500 +vt 0.500000 0.687500 +vt 0.500000 0.062500 +vt 0.500000 0.000000 +vt 0.562500 0.000000 +vt 0.562500 0.187500 +vt 0.562500 0.250000 +vt 0.500000 0.250000 +vt 0.562500 0.687500 +vt 0.500000 0.687500 +vt 0.562500 0.062500 +vt 0.500000 0.687500 +vt 0.500000 0.687500 +vt 0.500000 0.062500 +vt 0.500000 0.000000 +vt 0.562500 0.062500 +vt 0.562500 0.000000 +vt 0.500000 0.250000 +vt 0.500000 0.187500 +vt 0.562500 0.250000 +vt 0.562500 0.687500 +vt 0.500000 0.687500 +vt 0.500000 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.000000 +vn -1.0000 0.0000 0.0000 +vn -0.9808 0.0000 -0.1951 +vn -0.9239 0.0000 -0.3827 +vn -0.8314 0.0000 -0.5556 +vn -0.7071 0.0000 -0.7071 +vn -0.5556 0.0000 -0.8314 +vn -0.3827 0.0000 -0.9239 +vn -0.1951 0.0000 -0.9808 +vn 0.0000 0.0000 -1.0000 +vn 0.1951 0.0000 -0.9808 +vn 0.3827 0.0000 -0.9239 +vn 0.5556 0.0000 -0.8314 +vn 0.7071 0.0000 -0.7071 +vn 0.8314 0.0000 -0.5556 +vn 0.9239 0.0000 -0.3827 +vn 0.9808 0.0000 -0.1951 +vn 1.0000 0.0000 0.0000 +vn 0.9808 0.0000 0.1951 +vn 0.9239 0.0000 0.3827 +vn 0.8314 0.0000 0.5556 +vn 0.7071 0.0000 0.7071 +vn 0.5556 0.0000 0.8314 +vn 0.3827 0.0000 0.9239 +vn 0.1951 0.0000 0.9808 +vn 0.0000 0.0000 1.0000 +vn -0.1951 0.0000 0.9808 +vn -0.3827 0.0000 0.9239 +vn -0.5556 0.0000 0.8314 +vn -0.7071 0.0000 0.7071 +vn -0.8314 0.0000 0.5556 +vn -0.9239 0.0000 0.3827 +vn -0.9808 0.0000 0.1951 +vn -0.8695 -0.4173 -0.2642 +vn -0.3364 -0.9384 -0.0782 +vn -0.3296 -0.9387 -0.1012 +vn 0.3290 -0.9362 0.1231 +vn 0.8716 -0.4122 0.2651 +vn 0.8516 -0.4168 0.3178 +vn -0.8487 0.4238 -0.3164 +vn -0.4559 0.8701 -0.1875 +vn -0.3162 0.9413 -0.1177 +vn 0.3403 -0.9347 0.1025 +vn 0.8902 -0.4068 0.2050 +vn 0.8716 0.4122 0.2651 +vn 0.8516 0.4168 0.3178 +vn -0.8487 -0.4238 -0.3164 +vn -0.3162 -0.9413 -0.1176 +vn 0.3290 0.9362 0.1231 +vn 0.8454 0.4020 0.3515 +vn -0.8695 0.4173 -0.2642 +vn -0.8869 -0.4151 -0.2025 +vn 0.3403 0.9347 0.1025 +vn 0.8902 0.4068 0.2050 +vn 0.3537 0.9319 0.0799 +vn 0.8454 -0.4020 0.3515 +vn 0.9092 0.4009 0.1120 +vn 0.3537 -0.9319 0.0799 +vn -0.4559 -0.8701 -0.1875 +vn -0.3296 0.9387 -0.1012 +vn -0.8738 -0.3276 -0.3594 +vn -0.3364 0.9384 -0.0782 +vn -0.8869 0.4151 -0.2025 +vn -0.9055 0.4123 -0.1000 +vn -0.9055 -0.4123 -0.1000 +vn -0.3440 0.9383 -0.0340 +vn 0.3681 0.9285 0.0481 +vn 0.9092 -0.4009 0.1120 +vn -0.3440 -0.9383 -0.0340 +vn 0.9283 0.3670 0.0583 +vn -0.9262 0.3749 -0.0406 +vn -0.9262 -0.3749 -0.0406 +vn -0.3822 0.9241 -0.0070 +vn 0.4050 0.9136 0.0359 +vn 0.3681 -0.9285 0.0481 +vn 0.9283 -0.3670 0.0583 +vn -0.3822 -0.9240 -0.0070 +vn -0.8738 0.3276 -0.3594 +vn 0.2801 0.9529 0.1162 +vn 0.2801 -0.9529 0.1162 +vn 0.4050 -0.9136 0.0359 +g Cylinder.001_Cylinder.001_filament +s 1 +f 2521/4716/594 2522/4717/594 2524/4718/595 2523/4719/595 +f 2523/4719/595 2524/4718/595 2526/4720/596 2525/4721/596 +f 2525/4721/596 2526/4720/596 2528/4722/597 2527/4723/597 +f 2527/4723/597 2528/4722/597 2530/4724/598 2529/4725/598 +f 2529/4725/598 2530/4724/598 2532/4726/599 2531/4727/599 +f 2531/4727/599 2532/4726/599 2534/4728/600 2533/4729/600 +f 2533/4729/600 2534/4728/600 2536/4730/601 2535/4731/601 +f 2535/4731/601 2536/4730/601 2538/4732/602 2537/4733/602 +f 2537/4734/602 2538/4735/602 2540/4736/603 2539/4737/603 +f 2539/4737/603 2540/4736/603 2542/4738/604 2541/4739/604 +f 2541/4739/604 2542/4738/604 2544/4740/605 2543/4741/605 +f 2543/4741/605 2544/4740/605 2546/4742/606 2545/4743/606 +f 2545/4743/606 2546/4742/606 2548/4744/607 2547/4745/607 +f 2547/4745/607 2548/4744/607 2550/4746/608 2549/4747/608 +f 2549/4747/608 2550/4746/608 2552/4748/609 2551/4749/609 +f 2551/4749/609 2552/4748/609 2554/4750/610 2553/4751/610 +f 2553/4751/610 2554/4750/610 2556/4752/611 2555/4753/611 +f 2555/4753/611 2556/4752/611 2558/4754/612 2557/4755/612 +f 2557/4755/612 2558/4754/612 2560/4756/613 2559/4757/613 +f 2559/4757/613 2560/4756/613 2562/4758/614 2561/4759/614 +f 2561/4759/614 2562/4758/614 2564/4760/615 2563/4761/615 +f 2563/4761/615 2564/4760/615 2566/4762/616 2565/4763/616 +f 2565/4763/616 2566/4762/616 2568/4764/617 2567/4765/617 +f 2567/4765/617 2568/4764/617 2570/4766/618 2569/4767/618 +f 2569/4768/618 2570/4769/618 2572/4770/619 2571/4771/619 +f 2571/4771/619 2572/4770/619 2574/4772/620 2573/4773/620 +f 2573/4773/620 2574/4772/620 2576/4774/621 2575/4775/621 +f 2575/4775/621 2576/4774/621 2578/4776/622 2577/4777/622 +f 2577/4777/622 2578/4776/622 2580/4778/623 2579/4779/623 +f 2579/4779/623 2580/4778/623 2582/4780/624 2581/4781/624 +f 2581/4781/624 2582/4780/624 2584/4782/625 2583/4783/625 +f 2583/4783/625 2584/4782/625 2522/4717/594 2521/4716/594 +f 2608/4784/626 2611/4785/627 2607/4786/628 +f 2597/4787/629 2605/4788/630 2595/4789/631 +f 2587/4790/632 2590/4791/633 2589/4792/634 +f 2606/4793/635 2613/4794/636 2605/4788/630 +f 2595/4795/631 2604/4796/637 2593/4797/638 +f 2601/4798/639 2607/4786/628 2599/4799/640 +f 2591/4800/641 2594/4801/642 2593/4802/638 +f 2586/4803/643 2609/4804/644 2608/4805/626 +f 2591/4800/641 2604/4806/637 2603/4807/645 +f 2594/4808/642 2595/4795/631 2593/4797/638 +f 2603/4807/645 2614/4809/646 2615/4810/647 +f 2601/4811/639 2586/4803/643 2608/4805/626 +f 2596/4812/648 2597/4787/629 2595/4789/631 +f 2613/4813/636 2622/4814/649 2614/4815/646 +f 2612/4816/650 2607/4817/628 2611/4818/627 +f 2605/4819/630 2614/4815/646 2604/4796/637 +f 2600/4820/651 2601/4798/639 2599/4799/640 +f 2587/4790/632 2585/4821/652 2586/4822/643 +f 2602/4823/653 2587/4824/632 2601/4811/639 +f 2615/4825/647 2616/4826/654 2585/4827/652 +f 2586/4822/643 2616/4828/654 2610/4829/655 +f 2609/4804/644 2618/4830/656 2617/4831/657 +f 2610/4829/655 2624/4832/658 2618/4833/656 +f 2615/4810/647 2622/4834/649 2623/4835/659 +f 2612/4836/650 2621/4837/660 2613/4794/636 +f 2609/4838/644 2619/4839/661 2611/4785/627 +f 2621/4840/660 2630/4841/662 2622/4814/649 +f 2617/4831/657 2626/4842/663 2625/4843/664 +f 2618/4833/656 2632/4844/665 2626/4845/663 +f 2623/4835/659 2630/4846/662 2631/4847/666 +f 2620/4848/667 2629/4849/668 2621/4837/660 +f 2617/4850/657 2627/4851/669 2619/4839/661 +f 2608/4784/626 2609/4838/644 2611/4785/627 +f 2597/4787/629 2606/4793/635 2605/4788/630 +f 2587/4790/632 2588/4852/670 2590/4791/633 +f 2606/4793/635 2612/4836/650 2613/4794/636 +f 2595/4795/631 2605/4819/630 2604/4796/637 +f 2601/4798/639 2608/4784/626 2607/4786/628 +f 2591/4800/641 2592/4853/671 2594/4801/642 +f 2586/4803/643 2610/4854/655 2609/4804/644 +f 2591/4800/641 2593/4802/638 2604/4806/637 +f 2594/4808/642 2596/4855/648 2595/4795/631 +f 2603/4807/645 2604/4806/637 2614/4809/646 +f 2601/4811/639 2587/4824/632 2586/4803/643 +f 2596/4812/648 2598/4856/672 2597/4787/629 +f 2613/4813/636 2621/4840/660 2622/4814/649 +f 2619/4857/661 2627/4858/669 2628/4859/673 +f 2612/4816/650 2606/4860/635 2607/4817/628 +f 2606/4860/635 2597/4861/629 2599/4862/640 +f 2607/4817/628 2606/4860/635 2599/4862/640 +f 2597/4861/629 2598/4863/672 2599/4862/640 +f 2598/4863/672 2600/4864/651 2599/4862/640 +f 2619/4857/661 2628/4859/673 2620/4865/667 +f 2611/4818/627 2619/4857/661 2620/4865/667 +f 2611/4818/627 2620/4865/667 2612/4816/650 +f 2605/4819/630 2613/4813/636 2614/4815/646 +f 2600/4820/651 2602/4866/653 2601/4798/639 +f 2587/4790/632 2589/4792/634 2585/4821/652 +f 2602/4823/653 2588/4867/670 2587/4824/632 +f 2623/4868/659 2631/4869/666 2624/4870/658 +f 2631/4869/666 2632/4871/665 2624/4870/658 +f 2591/4872/641 2603/4873/645 2589/4874/634 +f 2603/4873/645 2615/4825/647 2585/4827/652 +f 2590/4875/633 2592/4876/671 2589/4874/634 +f 2592/4876/671 2591/4872/641 2589/4874/634 +f 2615/4825/647 2623/4868/659 2616/4826/654 +f 2623/4868/659 2624/4870/658 2616/4826/654 +f 2585/4827/652 2589/4874/634 2603/4873/645 +f 2586/4822/643 2585/4821/652 2616/4828/654 +f 2609/4804/644 2610/4854/655 2618/4830/656 +f 2610/4829/655 2616/4828/654 2624/4832/658 +f 2615/4810/647 2614/4809/646 2622/4834/649 +f 2612/4836/650 2620/4848/667 2621/4837/660 +f 2609/4838/644 2617/4850/657 2619/4839/661 +f 2621/4840/660 2629/4877/668 2630/4841/662 +f 2617/4831/657 2618/4830/656 2626/4842/663 +f 2618/4833/656 2624/4832/658 2632/4844/665 +f 2623/4835/659 2622/4834/649 2630/4846/662 +f 2620/4848/667 2628/4878/673 2629/4849/668 +f 2617/4850/657 2625/4879/664 2627/4851/669 diff --git a/computer/printers.lua b/computer/printers.lua new file mode 100644 index 00000000..b3723615 --- /dev/null +++ b/computer/printers.lua @@ -0,0 +1,61 @@ +-- Printers of some kind or another + +local S = homedecor.gettext + +minetest.register_node("computer:printer", { + description = S("Printer-Scanner Combo"), + inventory_image = "computer_printer_inv.png", + tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png", + "computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"}, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + groups = {snappy=3}, + sound = default.node_sound_wood_defaults(), + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.3125, -0.125, 0.4375, -0.0625, 0.375}, + {-0.4375, -0.5, -0.125, 0.4375, -0.4375, 0.375}, + {-0.4375, -0.5, -0.125, -0.25, -0.0625, 0.375}, + {0.25, -0.5, -0.125, 0.4375, -0.0625, 0.375}, + {-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375}, + {-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375}, + {-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5}, + {-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0} + }, + }, +}) + +-- "bedflinger" style 3D Printer (Prusa i3 or equivalent) + +local cbox = { + type = "fixed", + fixed = {-0.25, -0.25, -0.5, 0.3, 0.3, 0.25 } +} + +minetest.register_node("computer:3dprinter_bedflinger", { + description = S('3D Printer ("bedflinger")'), + inventory_image = "computer_3dprinter_bedflinger_inv.png", + tiles = { + { name = "computer_3dprinter_bedflinger.png", color = 0xffffffff }, + "computer_3dprinter_filament.png" + }, + paramtype = "light", + walkable = true, + groups = {snappy=3, ud_param2_colorable = 1}, + sound = default.node_sound_wood_defaults(), + drawtype = "mesh", + mesh = "computer_3dprinter_bedflinger.obj", + paramtype2 = "colorwallmounted", + palette = "unifieddyes_palette_colorwallmounted.png", + selection_box = cbox, + collision_box = cbox, + after_place_node = function(pos, placer, itemstack, pointed_thing) + unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) + end, + on_dig = unifieddyes.on_dig, + on_rotate = unifieddyes.fix_after_screwdriver_nsew, +}) + diff --git a/computer/textures/computer_3dprinter_bedflinger.png b/computer/textures/computer_3dprinter_bedflinger.png new file mode 100644 index 00000000..b623a3f2 Binary files /dev/null and b/computer/textures/computer_3dprinter_bedflinger.png differ diff --git a/computer/textures/computer_3dprinter_bedflinger_inv.png b/computer/textures/computer_3dprinter_bedflinger_inv.png new file mode 100644 index 00000000..7032ea7a Binary files /dev/null and b/computer/textures/computer_3dprinter_bedflinger_inv.png differ diff --git a/computer/textures/computer_3dprinter_filament.png b/computer/textures/computer_3dprinter_filament.png new file mode 100644 index 00000000..621716c0 Binary files /dev/null and b/computer/textures/computer_3dprinter_filament.png differ diff --git a/concrete/locale/fr.txt b/concrete/locale/fr.txt new file mode 100644 index 00000000..4af45302 --- /dev/null +++ b/concrete/locale/fr.txt @@ -0,0 +1,7 @@ +# technic_concrete translation template + +Rebar = Armature +Concrete Block = Bloc de béton +Blast-resistant Concrete Block = Bloc de béton anti explosions +Concrete Post Platform = Plateforme en béton +Concrete Post = Pilier en béton diff --git a/concrete/locale/pt_BR.txt b/concrete/locale/pt_BR.txt new file mode 100644 index 00000000..057ace55 --- /dev/null +++ b/concrete/locale/pt_BR.txt @@ -0,0 +1,10 @@ +# Braziliam portuguese translation for technic_concrete +# Tradução portuguesa brasileira para technic_concrete +# By Sires + +Rebar = Vergalhão +Concrete Block = Bloco de Concreto +Blast-resistant Concrete Block = Bloco de Concreto resistente-a-explosões +Concrete Post Platform = Plataforma para Poste de Concreto +Concrete Post = Poste de Concreto + diff --git a/concrete/textures/technic_blast_resistant_concrete_block.png b/concrete/textures/technic_blast_resistant_concrete_block.png index b7d8588f..4136c7f2 100644 Binary files a/concrete/textures/technic_blast_resistant_concrete_block.png and b/concrete/textures/technic_blast_resistant_concrete_block.png differ diff --git a/concrete/textures/x32/technic_concrete_block.png b/concrete/textures/x32/technic_concrete_block.png index 91364f33..71914c9f 100644 Binary files a/concrete/textures/x32/technic_concrete_block.png and b/concrete/textures/x32/technic_concrete_block.png differ diff --git a/concrete/textures/x32/technic_rebar.png b/concrete/textures/x32/technic_rebar.png index 16d1fc54..fc0b9636 100644 Binary files a/concrete/textures/x32/technic_rebar.png and b/concrete/textures/x32/technic_rebar.png differ diff --git a/currency/income.lua b/currency/income.lua index 2c9fb477..a1052e2b 100644 --- a/currency/income.lua +++ b/currency/income.lua @@ -1,44 +1,42 @@ -players_income = {} +local players_income = {} -- internationalization boilerplate local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local timer = 0 -minetest.register_globalstep(function(dtime) - timer = timer + dtime; - if timer >= 720 then --720 for one day - timer = 0 - for _,player in ipairs(minetest.get_connected_players()) do +local income_enabled = minetest.settings:get_bool("currency.income_enabled", true) +local income_item = minetest.settings:get("currency.income_item") or "currency:minegeld_10" +local income_count = tonumber(minetest.settings:get("currency.income_count")) or 1 +local income_period = tonumber(minetest.settings:get("currency.income_period")) or 720 + +if income_enabled then + local timer = 0 + minetest.register_globalstep(function(dtime) + timer = timer + dtime; + if timer >= income_period then + timer = 0 + for _, player in ipairs(minetest.get_connected_players()) do local name = player:get_player_name() - if players_income[name] == nil then - players_income[name] = 0 - end - players_income[name] = 1 + players_income[name] = income_count minetest.log("info", "[Currency] "..S("basic income for @1", name)) + end + end + end) + + local function earn_income(player) + if not player or player.is_fake_player then return end + local name = player:get_player_name() + + local income_count = players_income[name] + if income_count and income_count > 0 then + local inv = player:get_inventory() + inv:add_item("main", {name=income_item, count=income_count}) + players_income[name] = nil + minetest.log("info", "[Currency] "..S("added basic income for @1 to inventory", name)) end end -end) -earn_income = function(player) - if not player or player.is_fake_player then return end - local name = player:get_player_name() - if players_income[name] == nil then - players_income[name] = 0 - end - if players_income[name] > 0 then - count = players_income[name] - local inv = player:get_inventory() - inv:add_item("main", {name="currency:minegeld_10", count=count}) - players_income[name] = 0 - minetest.log("info", "[Currency] "..S("added basic income for @1 to inventory", name)) - end + minetest.register_on_dignode(function(pos, oldnode, digger) earn_income(digger) end) + minetest.register_on_placenode(function(pos, node, placer) earn_income(placer) end) + minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) earn_income(player) end) end - -minetest.register_on_dignode(function(pos, oldnode, digger) - earn_income(digger) -end) - -minetest.register_on_placenode(function(pos, node, placer) - earn_income(placer) -end) diff --git a/currency/mod.conf b/currency/mod.conf index 6679a26e..d2ba601f 100644 --- a/currency/mod.conf +++ b/currency/mod.conf @@ -1 +1,3 @@ name = currency +depends = default +optional_depends = intllib,loot,pipeworks diff --git a/currency/settingtypes.txt b/currency/settingtypes.txt new file mode 100644 index 00000000..12e89aa7 --- /dev/null +++ b/currency/settingtypes.txt @@ -0,0 +1,11 @@ +# Is income enabled? +currency.income_enabled (Is currency income enabled?) bool true + +# Item that is given as income by the currency mod +currency.income_item (Currency income item) string currency:minegeld_10 + +# Number of items given as income +currency.income_count (Currency income item) int 1 1 65535 + +# Length of time (in seconds) between checking if a user should get income +currency.income_period (Currency income period) int 720 diff --git a/digilines/lcd.lua b/digilines/lcd.lua index 37ce3e05..6f4a2572 100644 --- a/digilines/lcd.lua +++ b/digilines/lcd.lua @@ -108,10 +108,10 @@ local lcds = { -- on ground --* [1] = {delta = {x = 0, y =-0.4, z = 0}, pitch = math.pi / 2}, -- sides - [2] = {delta = {x = 0.437, y = 0, z = 0}, yaw = math.pi / -2}, - [3] = {delta = {x = -0.437, y = 0, z = 0}, yaw = math.pi / 2}, - [4] = {delta = {x = 0, y = 0, z = 0.437}, yaw = 0}, - [5] = {delta = {x = 0, y = 0, z = -0.437}, yaw = math.pi}, + [2] = {delta = {x = 0.42, y = 0, z = 0}, yaw = math.pi / -2}, + [3] = {delta = {x = -0.42, y = 0, z = 0}, yaw = math.pi / 2}, + [4] = {delta = {x = 0, y = 0, z = 0.42}, yaw = 0}, + [5] = {delta = {x = 0, y = 0, z = -0.42}, yaw = math.pi}, } local reset_meta = function(pos) @@ -173,7 +173,7 @@ local prepare_writing = function(pos) if entity then set_texture(entity) rotate_text(pos) - end + end end local spawn_entity = function(pos) diff --git a/digistuff/noteblock.lua b/digistuff/noteblock.lua index f2e9c89c..665c201e 100644 --- a/digistuff/noteblock.lua +++ b/digistuff/noteblock.lua @@ -30,7 +30,7 @@ minetest.register_node("digistuff:noteblock", { local meta = minetest.get_meta(pos) if fields.channel then meta:set_string("channel",fields.channel) end end, - digiline = + digiline = { receptor = {}, effector = { @@ -62,3 +62,12 @@ minetest.register_node("digistuff:noteblock", { }, }, }) + +minetest.register_craft({ + output = "digistuff:noteblock", + recipe = { + {"mesecons_noteblock:noteblock"}, + {"mesecons_luacontroller:luacontroller0000"}, + {"digilines:wire_std_00000000"}, + }, +}) diff --git a/digistuff/piezo.lua b/digistuff/piezo.lua index f96e4a1d..39fce0d6 100644 --- a/digistuff/piezo.lua +++ b/digistuff/piezo.lua @@ -31,7 +31,7 @@ minetest.register_node("digistuff:piezo", { local meta = minetest.get_meta(pos) if fields.channel then meta:set_string("channel",fields.channel) end end, - digiline = + digiline = { receptor = {}, effector = { @@ -78,3 +78,11 @@ minetest.register_node("digistuff:piezo", { }, }, }) + +minetest.register_craft({ + output = "digistuff:piezo", + recipe = { + {"quartz:quartz_crystal_piece","basic_materials:steel_strip"}, + {"digilines:wire_std_00000000","mesecons_luacontroller:luacontroller0000"}, + }, +}) diff --git a/digistuff/piston.lua b/digistuff/piston.lua index b4ed6555..070da431 100644 --- a/digistuff/piston.lua +++ b/digistuff/piston.lua @@ -220,3 +220,12 @@ minetest.register_node("digistuff:piston_pusher", { mesecon.register_mvps_stopper("digistuff:piston_ext") mesecon.register_mvps_stopper("digistuff:piston_pusher") + +minetest.register_craft({ + output = "digistuff:piston", + recipe = { + {"mesecons_pistons:piston_normal_off"}, + {"mesecons_luacontroller:luacontroller0000"}, + {"digilines:wire_std_00000000"}, + }, +}) diff --git a/digistuff/switches.lua b/digistuff/switches.lua index 118951c0..87d7a876 100644 --- a/digistuff/switches.lua +++ b/digistuff/switches.lua @@ -88,7 +88,7 @@ minetest.register_node("digistuff:button", { { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself } }, - digiline = + digiline = { receptor = {}, wire = { @@ -150,7 +150,7 @@ minetest.register_node("digistuff:button_off", { { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself } }, - digiline = + digiline = { receptor = {}, wire = { @@ -194,7 +194,7 @@ minetest.register_node("digistuff:button_off_pushed", { { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 } } }, - digiline = + digiline = { receptor = {}, wire = { @@ -240,7 +240,7 @@ minetest.register_node("digistuff:button_on", { { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself } }, - digiline = + digiline = { receptor = {}, wire = { @@ -286,7 +286,7 @@ minetest.register_node("digistuff:button_on_pushed", { { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 } } }, - digiline = + digiline = { receptor = {}, wire = { @@ -319,7 +319,7 @@ minetest.register_node("digistuff:wall_knob", { paramtype2 = "facedir", walkable = false, sunlight_propagates = true, - digiline = + digiline = { receptor = {}, wire = { @@ -378,7 +378,7 @@ minetest.register_node("digistuff:wall_knob_configured", { paramtype2 = "facedir", walkable = false, sunlight_propagates = true, - digiline = + digiline = { receptor = {}, wire = { @@ -426,3 +426,12 @@ minetest.register_node("digistuff:wall_knob_configured", { end, sounds = default and default.node_sound_stone_defaults(), }) + +minetest.register_craft({ + output = "digistuff:wall_knob", + recipe = { + {"", "mesecons_button:button_off", ""}, + {"digilines:wire_std_00000000","mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"}, + {"", "digilines:wire_std_00000000", ""}, + }, +}) diff --git a/extranodes/init.lua b/extranodes/init.lua index b8c30932..e554b631 100644 --- a/extranodes/init.lua +++ b/extranodes/init.lua @@ -177,17 +177,20 @@ if minetest.get_modpath("unifieddyes") then unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end iclip_def.groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1} + iclip_def.on_dig = unifieddyes.on_dig iclipfence_def.paramtype2 = "color" iclipfence_def.palette = "unifieddyes_palette_extended.png" iclipfence_def.on_construct = unifieddyes.on_construct iclipfence_def.groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1} + iclipfence_def.on_dig = unifieddyes.on_dig sclip_def.paramtype2 = "colorwallmounted" sclip_def.palette = "unifieddyes_palette_colorwallmounted.png" sclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end + sclip_def.on_dig = unifieddyes.on_dig sclip_def.groups = {choppy=1, cracky=1, ud_param2_colorable = 1} end diff --git a/extranodes/locale/fr.txt b/extranodes/locale/fr.txt new file mode 100644 index 00000000..0eb8a63a --- /dev/null +++ b/extranodes/locale/fr.txt @@ -0,0 +1,7 @@ +# technic_extranodes translation template + +Marble = Marbre +Marble Bricks = Briques en marbre +Granite = Granite +Concrete = Béton + diff --git a/extranodes/locale/pt_BR.txt b/extranodes/locale/pt_BR.txt new file mode 100644 index 00000000..e19d9f26 --- /dev/null +++ b/extranodes/locale/pt_BR.txt @@ -0,0 +1,9 @@ +# Braziliam portuguese translation for technic_extranodes +# Tradução portuguesa brasileira para technic_extranodes +# By Sires + +Marble = Mármore +Marble Bricks = Tijolos de Mármore +Granite = Granito +Concrete = Concreto + diff --git a/extranodes/textures/technic_insulator_clip.png b/extranodes/textures/technic_insulator_clip.png index 44cdc6ae..a8974088 100644 Binary files a/extranodes/textures/technic_insulator_clip.png and b/extranodes/textures/technic_insulator_clip.png differ diff --git a/extranodes/textures/technic_steel_strut_overlay.png b/extranodes/textures/technic_steel_strut_overlay.png index fd5bcb28..b1dcb622 100644 Binary files a/extranodes/textures/technic_steel_strut_overlay.png and b/extranodes/textures/technic_steel_strut_overlay.png differ diff --git a/facade/README.md b/facade/README.md index ea7138d3..ce79288b 100644 --- a/facade/README.md +++ b/facade/README.md @@ -1,6 +1,40 @@ -# facade +# Facade Adds decorative clay and stone-type nodes to Minetest Game. + +## Dependencies +- default (included in minetest_game) +- [mychisel](https://github.com/minetest-mods/mychisel) (**optional dependency!**) + +## Requierments +This requieres MT/MTG 0.4.16+ to run (may work on older versions). + +## License +Click [here](https://github.com/TumeniNodes/facade/blob/master/license.txt) to see the license. + +## Installation +- Unzip the archive, rename the folder to facade and +place it in ..minetest/mods/ + +- GNU/Linux: If you use a system-wide installation place + it in ~/.minetest/mods/. + +- If you only want this to be used in a single world, place + the folder in ..worldmods/ in your world directory. + +For further information or help, see: +https://wiki.minetest.net/Installing_Mods + +## Bugs, suggestions, features & bugfixes. +Report bugs or suggest ideas by [creating an issue](https://github.com/TumeniNodes/facade/issues/new). +If you know how to fix an issue, or want something to be added, consider opening a [pull request](https://github.com/TumeniNodes/facade/compare). + +## Screenshots + ![Preview](https://github.com/TumeniNodes/facade/blob/master/screenshot.png) ![Preview](https://github.com/TumeniNodes/facade/blob/master/screenshot2.png) ![Preview](https://github.com/TumeniNodes/facade/blob/master/screenshot3.png) ![Preview](https://github.com/TumeniNodes/facade/blob/master/screenshot4.png) + + +If you want to get additional info about this mod, go the [Minetest Forums](https://forum.minetest.net/viewtopic.php?f=9&t=18208). +Have fun with Facade! diff --git a/facade/depends.txt b/facade/depends.txt index da8e2931..61e8ffe1 100644 --- a/facade/depends.txt +++ b/facade/depends.txt @@ -1,2 +1,3 @@ default mychisel? +columnia? diff --git a/facade/facade_shaper.xcf b/facade/facade_shaper.xcf new file mode 100644 index 00000000..43c0d8a7 Binary files /dev/null and b/facade/facade_shaper.xcf differ diff --git a/facade/init.lua b/facade/init.lua index 0fe0da18..f0925cc4 100644 --- a/facade/init.lua +++ b/facade/init.lua @@ -1,648 +1,10 @@ facade = {} -local wehavechisels = minetest.get_modpath("mychisel") +-- Define the shapes and registration functions +dofile (minetest.get_modpath("facade") .. "/shapes.lua") --------------- ---Bannerstones --------------- +-- Register the nodes made from compatible materials +dofile (minetest.get_modpath("facade") .. "/materials.lua") ---Node will be called facade:_bannerstone -function facade.register_bannerstone(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_bannerstone" , { - description = desc .. " Bannerstone", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - {-0.5, 0.25, -0.5625, 0.5, 0.375, -0.5}, - {-0.5, -0.375, -0.5625, 0.5, -0.25, -0.5}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - } - }, - }) -end - ---Node will be called facade:_bannerstone_corner -function facade.register_bannerstone_corner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_bannerstone_corner", { - description = desc .. " Bannerstone Corner", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png", - "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png", - "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png", - "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - {-0.5625, 0.25, -0.5625, 0.5625, 0.375, 0.5625}, - {-0.5625, -0.375, -0.5625, 0.5625, -0.25, 0.5625}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - } - }, - }) -end - --------------- ---Centerstones --------------- - ---Node will be called facade:_centerstone -function facade.register_centerstone(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_centerstone", { - description = desc .. " Centerstone", - drawtype = "nodebox", - tiles = {"" .. modname.. "_" .. subname .. ".png^facade_centerstone.png"}, - paramtype = "light", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, - {-0.5, -0.25, 0.0625, 0.5, 0.25, 0.25}, - {-0.5, -0.25, -0.25, 0.5, 0.25, -0.0625}, - {-0.25, -0.25, -0.5, -0.0625, 0.25, 0.5}, - {0.0625, -0.25, -0.5, 0.25, 0.25, 0.5}, - {-0.5, 0.0625, -0.25, 0.5, 0.25, 0.25}, - {-0.5, -0.25, -0.25, 0.5, -0.0625, 0.25}, - {-0.25, -0.25, -0.5, 0.25, -0.0625, 0.5}, - {-0.25, 0.0625, -0.5, 0.25, 0.25, 0.5}, - {-0.25, -0.5, -0.25, 0.25, 0.5, -0.0625}, - {-0.25, -0.5, 0.0625, 0.25, 0.5, 0.25}, - {0.0625, -0.5, -0.1875, 0.25, 0.5, 0.1875}, - {-0.25, -0.5, -0.1875, -0.0625, 0.5, 0.1875}, - {-0.5, 0.3125, 0.3125, 0.5, 0.5, 0.5}, - {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.3125}, - {0.3125, 0.3125, -0.5, 0.5, 0.5, 0.5}, - {-0.5, 0.3125, -0.5, -0.3125, 0.5, 0.5}, - {-0.5, -0.5, -0.5, -0.3125, -0.3125, 0.5}, - {0.3125, -0.5, -0.5, 0.5, -0.3125, 0.5}, - {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.3125}, - {-0.5, -0.5, 0.3125, 0.5, -0.3125, 0.5}, - {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, - {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, - {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, - {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - } - }, - }) -end - ---------- ---Columns ---------- - ---Node will be called facade:_column -function facade.register_column(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_column" , { - description = desc .. " Column", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_column.png", - "" .. modname.. "_" .. subname .. ".png^facade_column.png" - }, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.4375}, - {-0.5, -0.5, -0.5, -0.3125, 0.5, 0.5}, - {0.3125, -0.5, -0.5, 0.5, 0.5, 0.5}, - {0.0625, -0.5, -0.5, 0.1875, 0.5, 0.5}, - {-0.1875, -0.5, -0.5, -0.0625, 0.5, 0.5}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - } - }, - }) - -end - - ---Node will be called facade:_column_corner -function facade.register_column_corner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_column_corner", { - description = desc .. " Column Corner", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_column.png", - "" .. modname.. "_" .. subname .. ".png^facade_column.png", - "" .. modname.. "_" .. subname .. ".png^facade_column.png", - "" .. modname.. "_" .. subname .. ".png^facade_column.png" - }, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.4375, 0.4375, 0.5, 0.4375}, - {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, - {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, - {0.0625, -0.5, -0.5, 0.1875, 0.5, 0.5}, - {-0.1875, -0.5, -0.5, -0.0625, 0.5, 0.5}, - {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, - {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, - {-0.5, -0.5, 0.0625, 0.5, 0.5, 0.1875}, - {-0.5, -0.5, -0.1875, 0.5, 0.5, -0.0625}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - } - }, - }) -end - ---------- ---Corbels ---------- - ---Node will be called facade:_corbel -function facade.register_corbel(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_corbel", { - description = desc .. " Corbel", - drawtype = "nodebox", - tiles = {"" .. modname.. "_" .. subname .. ".png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, - {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, - {-0.1875, -0.3125, -0.3125, 0.1875, 0.5, 0}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- } --- }, - }) -end - ---Node will be called facade:_corbel_corner -function facade.register_corbel_corner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_corbel_corner", { - description = desc .. " Corbel Corner", - drawtype = "nodebox", - tiles = {"" .. modname.. "_" .. subname .. ".png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, - {-0.5, -0.5, 0, 0, 0.5, 0.5}, - {0, -0.3125, -0.3125, 0.3125, 0.5, 0}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- } --- }, - }) -end - ---Node will be called facade:_corbel_corner_inner -function facade.register_corbel_corner_inner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_corbel_corner_inner", { - description = desc .. " Corbel Inner Corner", - drawtype = "nodebox", - tiles = {"" .. modname.. "_" .. subname .. ".png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, - {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, - {0, -0.3125, -0.3125, 0.3125, 0.5, 0}, - {-0.5, -0.5, -0.5, 0, 0.5, 0.5}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- } --- }, - }) -end - - --------------------------- ---- Carved Stones --------------------------- - ---Node will be called facade:_carved_stone_a -function facade.register_carved_stone_a(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_carved_stone_a", { - description = desc .. " Carved Stone A", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_carved_stone_a.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, - {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.4375}, - {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, - {-0.4375, -0.375, -0.5, -0.3125, 0.375, -0.4375}, - {-0.5, -0.375, -0.5, -0.3125, -0.25, 0.5}, - {-0.4375, 0.25, -0.5, 0.4375, 0.375, 0.5}, - {0.3125, -0.125, -0.5, 0.4375, 0.25, 0.5}, - {-0.1875, -0.375, -0.5, 0.5, -0.25, 0.5}, - {-0.1875, -0.25, -0.5, -0.0625, 0.125, 0.5}, - {0.0625, -0.125, -0.5, 0.3125, 0, 0.5}, - {-0.0625, 0, -0.5, 0.1875, 0.125, 0.5}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - }, - }) -end - ---Node will be called facade:_carved_stone_a_corner -function facade.register_carved_stone_a_corner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_carved_stone_a_corner", { - description = desc .. " Carved Stone A Corner", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_carved_stone_a.png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_carved_stone_a.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.4375, -0.5, -0.4375, 0.5, 0.5, 0.5}, - {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.4375}, - {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, - {-0.4375, -0.375, -0.5, -0.3125, 0.375, -0.4375}, - {-0.5, -0.375, -0.5, -0.3125, -0.25, 0.1875}, - {-0.4375, 0.25, -0.5, 0.4375, 0.375, 0.5}, - {0.3125, -0.125, -0.5, 0.4375, 0.25, 0.5}, - {-0.1875, -0.375, -0.5, 0.5, -0.25, 0.5}, - {-0.1875, -0.25, -0.5, -0.0625, 0.125, 0.5}, - {0.0625, -0.125, -0.5, 0.3125, 0, 0.5}, - {-0.0625, 0, -0.5, 0.1875, 0.125, 0.5}, - {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, - {-0.5, -0.125, -0.4375, 0.5, 0.375, -0.3125}, - {-0.5, 0.25, -0.3125, 0.5, 0.375, 0.4375}, - {-0.5, -0.375, 0.3125, 0.4375, 0.375, 0.4375}, - {-0.5, -0.375, 0.3125, 0.4375, -0.25, 0.5}, - {-0.5, -0.125, -0.3125, 0.4375, 0, -0.0625}, - {-0.5, 0, -0.1875, 0.4375, 0.125, 0.1875}, - {-0.5, -0.25, 0.0625, 0.4375, 0.125, 0.1875}, - }, - }, - selection_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - }, - }) -end - - --------------------------- ---- RGSpro Facia --------------------------- - ---Node will be called facade:_rgspro -function facade.register_rgspro(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_rgspro", { - description = desc .. " RGSpro", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, 0.375, 0.5, -0.3125, 0.5}, - {-0.5, -0.3125, 0.25, 0.5, -0.125, 0.5}, - {-0.5, -0.125, 0.125, 0.5, 0.5, 0.5}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- }, --- }, - }) -end - ---Node will be called facade:_rgspro_inner_corner -function facade.register_rgspro_inner_corner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_rgspro_inner_corner", { - description = desc .. " RGSpro Inner Corner", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, 0.375, 0.5, -0.3125, 0.5}, - {-0.5, -0.3125, 0.25, 0.5, -0.125, 0.5}, - {-0.5, -0.125, 0.125, 0.5, 0.5, 0.5}, - {0.375, -0.5, -0.5, 0.5, -0.3125, 0.375}, - {0.25, -0.3125, -0.5, 0.5, -0.0625, 0.25}, - {0.125, -0.125, -0.5, 0.5, 0.5, 0.125}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- }, --- }, - }) -end - - ---Node will be called facade:_rgspro_outer_corner -function facade.register_rgspro_outer_corner(modname, subname, recipeitem, desc) - minetest.register_node("facade:" .. subname .. "_rgspro_outer_corner", { - description = desc .. " RGSpro Outer Corner", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", - "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, 0.375, 0.5, -0.3125, 0.5}, - {-0.5, -0.3125, 0.25, 0.5, -0.0625, 0.5}, - {-0.5, -0.125, 0.125, 0.5, 0.5, 0.5}, - {-0.625, -0.5, 0.375, -0.5, -0.3125, 1.5}, - {-0.75, -0.3125, 0.25, -0.5, -0.125, 1.5}, - {-0.875, -0.125, 0.125, -0.5, 0.5, 1.5}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- }, --- }, - }) -end - - --------------------------- ---- Corner Bricks --------------------------- - ---Node will be called facade:_corner_bricks -function facade.register_corner_bricks(modname, subname, recipeitem, desc) - if not string.match(recipeitem,"clay") - then -- do not do for clay things that is ugly - minetest.register_node("facade:" .. subname .. "_corner_bricks", { - description = desc .. " Corner Bricks", - drawtype = "nodebox", - tiles = { - "" .. modname.. "_" .. subname .. "_brick.png"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, - sounds = default.node_sound_stone_defaults(), - node_box = { - type = "fixed", - fixed = { - {-0.5625, -0.5, 0.4375, -0.5, 0, 1}, - {-0.5, -0.5, 0.4375, 0, 0, 0.5}, - {-0.5625, 0, 0.5, -0.5, 0.5, 1.5}, - {-0.5625, 0, 0.4375, 0.5, 0.5, 0.5}, - }, - }, --- selection_box = { --- type = "fixed", --- fixed = { --- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, --- }, --- }, - }) - end -end - - --------------------------- ---Register Nodes/Materials --------------------------- -function facade.register_facade_nodes(modname, subname, recipeitem, desc) - facade.register_bannerstone(modname, subname, recipeitem, desc) - facade.register_bannerstone_corner(modname, subname, recipeitem, desc) - facade.register_centerstone(modname, subname, recipeitem, desc) - facade.register_column(modname, subname, recipeitem, desc) - facade.register_column_corner(modname, subname, recipeitem, desc) - facade.register_corbel(modname, subname, recipeitem, desc) - facade.register_corbel_corner(modname, subname, recipeitem, desc) - facade.register_corbel_corner_inner(modname, subname, recipeitem, desc) - facade.register_carved_stone_a(modname, subname, recipeitem, desc) - facade.register_carved_stone_a_corner(modname, subname, recipeitem, desc) - facade.register_rgspro(modname, subname, recipeitem, desc) - facade.register_rgspro_inner_corner(modname, subname, recipeitem, desc) - facade.register_rgspro_outer_corner(modname, subname, recipeitem, desc) - facade.register_corner_bricks(modname, subname, recipeitem, desc) - if wehavechisels then -- register all nodes with mychisel mod to use them without creative priv - chisel.register_node("facade",subname, recipeitem, "bannerstone") - chisel.register_node("facade",subname, recipeitem, "bannerstone_corner") - chisel.register_node("facade",subname, recipeitem, "centerstone") - chisel.register_node("facade",subname, recipeitem, "column") - chisel.register_node("facade",subname, recipeitem, "column_corner") - chisel.register_node("facade",subname, recipeitem, "corbel") - chisel.register_node("facade",subname, recipeitem, "corbel_corner") - chisel.register_node("facade",subname, recipeitem, "corbel_corner_inner") - chisel.register_node("facade",subname, recipeitem, "carved_stone_a") - chisel.register_node("facade",subname, recipeitem, "carved_stone_a_corner") - chisel.register_node("facade",subname, recipeitem, "rgspro") - chisel.register_node("facade",subname, recipeitem, "rgspro_inner_corner") - chisel.register_node("facade",subname, recipeitem, "rgspro_outer_corner") - chisel.register_node("facade",subname, recipeitem, "corner_bricks") - - - end -end - -if wehavechisels then chisel.add_mod("facade",14) end -- register the total number of different designs in this mod with mychisel - -facade.register_facade_nodes("default", "clay", "default:clay", "Clay") -facade.register_facade_nodes("default", "desert_sandstone", "default:desert_sandstone", "Desert Sandstone") -facade.register_facade_nodes("default", "desert_stone", "default:desert_stone", "Desert Stone") -facade.register_facade_nodes("default", "sandstone", "default:sandstone", "Sandstone") -facade.register_facade_nodes("default", "silver_sandstone", "default:silver_sandstone", "Silver Sandstone") -facade.register_facade_nodes("default", "stone", "default:stone", "Stone") ---facade.register_facade_nodes("default", "obsidian", "default:obsidian", "Obsidian") - - -if minetest.get_modpath( "bakedclay") then - local clay = { - {"white", "White"}, - {"grey", "Grey"}, - {"black", "Black"}, - {"red", "Red"}, - {"yellow", "Yellow"}, - {"green", "Green"}, - {"cyan", "Cyan"}, - {"blue", "Blue"}, - {"magenta", "Magenta"}, - {"orange", "Orange"}, - {"violet", "Violet"}, - {"brown", "Brown"}, - {"pink", "Pink"}, - {"dark_grey", "Dark Grey"}, - {"dark_green", "Dark Green"}, - } - - for _, clay in pairs(clay) do - facade.register_facade_nodes("baked_clay", clay[1] , "bakedclay:" .. clay[1], clay[2] .. " Baked Clay") - end -end - - -if minetest.get_modpath( "darkage") then - facade.register_facade_nodes("darkage", "basalt", "darkage:basalt", "Basalt") - facade.register_facade_nodes("darkage", "chalk", "darkage:chalk", "Chalk") - facade.register_facade_nodes("darkage", "gneiss", "darkage:gneiss", "Gneiss") - facade.register_facade_nodes("darkage", "marble", "darkage:marble", "Marble") - facade.register_facade_nodes("darkage", "ors", "darkage:ors", "Ors") - facade.register_facade_nodes("darkage", "schist", "darkage:schist", "Schist") - facade.register_facade_nodes("darkage", "serpentine", "darkage:serpentine", "Serpentine") - facade.register_facade_nodes("darkage", "shale", "darkage:shale", "Shale") - facade.register_facade_nodes("darkage", "slate", "darkage:slate", "Slate") -end - - -if minetest.get_modpath( "nether") then - facade.register_facade_nodes("nether", "rack", "nether:rack", "Netherrack") -end - - ---[[if minetest.get_modpath( "lapis") then - facade.register_facade_nodes("lapis", "lapis_block", "lapis:lapis_block", "Lapis") - facade.register_facade_nodes("lapis", "lapis_lazurite", "lapis:lazurite", "Lazurite") -end]]-- +-- Add a dedicated machine to produce the facade shapes +dofile (minetest.get_modpath("facade") .. "/shaper.lua") diff --git a/facade/materials.lua b/facade/materials.lua new file mode 100644 index 00000000..47444e93 --- /dev/null +++ b/facade/materials.lua @@ -0,0 +1,58 @@ +-- Registration of materials + +facade.register_facade_nodes("default", "clay", "default:clay", "Clay") +facade.register_facade_nodes("default", "stone", "default:stone", "Stone") +facade.register_facade_nodes("default", "desert_stone", "default:desert_stone", "Desert Stone") +facade.register_facade_nodes("default", "sandstone", "default:sandstone", "Sandstone") +facade.register_facade_nodes("default", "desert_sandstone", "default:desert_sandstone", "Desert Sandstone") +facade.register_facade_nodes("default", "silver_sandstone", "default:silver_sandstone", "Silver Sandstone") +--facade.register_facade_nodes("default", "obsidian", "default:obsidian", "Obsidian") + + +if minetest.get_modpath( "bakedclay") then + local clay = { + {"white", "White"}, + {"grey", "Grey"}, + {"black", "Black"}, + {"red", "Red"}, + {"yellow", "Yellow"}, + {"green", "Green"}, + {"cyan", "Cyan"}, + {"blue", "Blue"}, + {"magenta", "Magenta"}, + {"orange", "Orange"}, + {"violet", "Violet"}, + {"brown", "Brown"}, + {"pink", "Pink"}, + {"dark_grey", "Dark Grey"}, + {"dark_green", "Dark Green"}, + } + + for _, clay in pairs(clay) do + facade.register_facade_nodes("baked_clay", clay[1] , "bakedclay:" .. clay[1], clay[2] .. " Baked Clay") + end +end + + +if minetest.get_modpath( "darkage") then + facade.register_facade_nodes("darkage", "basalt", "darkage:basalt", "Basalt") + facade.register_facade_nodes("darkage", "chalk", "darkage:chalk", "Chalk") + facade.register_facade_nodes("darkage", "gneiss", "darkage:gneiss", "Gneiss") + facade.register_facade_nodes("darkage", "marble", "darkage:marble", "Marble") + facade.register_facade_nodes("darkage", "ors", "darkage:ors", "Ors") + facade.register_facade_nodes("darkage", "schist", "darkage:schist", "Schist") + facade.register_facade_nodes("darkage", "serpentine", "darkage:serpentine", "Serpentine") + facade.register_facade_nodes("darkage", "shale", "darkage:shale", "Shale") + facade.register_facade_nodes("darkage", "slate", "darkage:slate", "Slate") +end + + +if minetest.get_modpath( "nether") then + facade.register_facade_nodes("nether", "rack", "nether:rack", "Netherrack") +end + + +--[[if minetest.get_modpath( "lapis") then + facade.register_facade_nodes("lapis", "lapis_block", "lapis:lapis_block", "Lapis") + facade.register_facade_nodes("lapis", "lapis_lazurite", "lapis:lazurite", "Lazurite") +end]]-- diff --git a/facade/mod.conf b/facade/mod.conf index eb9d86d4..ff1e92d9 100644 --- a/facade/mod.conf +++ b/facade/mod.conf @@ -1 +1,4 @@ name = facade +depends = default +optional_depends = mychisel +description = Adds decorative clay and stone-type nodes to Minetest Game. diff --git a/facade/shaper.lua b/facade/shaper.lua new file mode 100644 index 00000000..cceaf0a8 --- /dev/null +++ b/facade/shaper.lua @@ -0,0 +1,377 @@ +-- Facade Shaper +-- This machine serves the same purpose as the circular saw from moreblocks or the milling +-- maching from mymillwork. Namely, it provides a tool for creating shaped blocks that does +-- not rely on using recipes. + + +-- Balancing output per 1 input block with respect to apparent volume of output shape. +-- All current shapes are added, but shapes not present in this table will still be produced +-- one at a time — if that is the desired quantity, adding them is not required. +local output_ratios = { + bannerstone = 1, + bannerstone_corner = 1, + centerstone = 1, + column = 1, + column_corner = 1, + corbel = 1, + corbel_corner = 1, + corbel_corner_inner = 1, + carved_stone_a = 1, + carved_stone_a_corner = 1, + rgspro = 2, + rgspro_inner_corner = 1, + rgspro_outer_corner = 1, + corner_bricks = 2, + columnia_mid = 4, + columnia_bottom = 1, + columnia_top = 1, + columnia_crosslink = 1, + columnia_link = 4, + columnia_linkdown = 4, +} + +-- The material to be used for buttons when no material is actually loaded. +-- It should be a generic material for which all the facade shapes are defined. +local demo_material = "default:stone" + +-- Whether the facade should obey area protection for the inventories (as machines in technic mod) +-- or allow anybody to use them, but disallow the removal of machine itself (like circular saw in moreblocks) +local protect_inventories = false + + + +local function prepare_formspec (material_name) + + local output = string.gsub(material_name, "^.*:", "facade:") + + local shaper_formspec = + + "size[8,11;]".. + "label[0,0;" .. "Choose shape to produce:" .. "]".. + + -- row 1, blocky shapes + "item_image_button[0,0.5;1,1;" .. output .. "_bannerstone" .. ";bannerstone; ]".. + "item_image_button[1,0.5;1,1;" .. output .. "_bannerstone_corner" .. ";bannerstone_corner; ]".. + "item_image_button[2,0.5;1,1;" .. output .. "_centerstone" .. ";centerstone; ]".. + "item_image_button[3,0.5;1,1;" .. output .. "_carved_stone_a" .. ";carved_stone_a; ]".. + "item_image_button[4,0.5;1,1;" .. output .. "_carved_stone_a_corner" .. ";carved_stone_a_corner; ]".. + "item_image_button[5,0.5;1,1;" .. output .. "_column" .. ";column; ]".. + "item_image_button[6,0.5;1,1;" .. output .. "_column_corner" .. ";column_corner; ]".. + + -- row 2, corbel + "item_image_button[0,1.5;1,1;" .. output .. "_corbel" .. ";corbel; ]".. + "item_image_button[1,1.5;1,1;" .. output .. "_corbel_corner_inner" .. ";corbel_corner_inner; ]".. + "item_image_button[2,1.5;1,1;" .. output .. "_corbel_corner" .. ";corbel_corner; ]".. + + -- row 3, cornice + "item_image_button[0,2.5;1,1;" .. output .. "_rgspro" .. ";rgspro; ]".. + "item_image_button[1,2.5;1,1;" .. output .. "_rgspro_inner_corner" .. ";rgspro_inner_corner; ]".. + "item_image_button[2,2.5;1,1;" .. output .. "_rgspro_outer_corner" .. ";rgspro_outer_corner; ]" + + -- row 4, columnia + if not minetest.get_modpath("columnia") then + shaper_formspec = shaper_formspec .. + "item_image_button[0,3.5;1,1;" .. output .. "_columnia_mid" .. ";columnia_mid; ]".. + "item_image_button[1,3.5;1,1;" .. output .. "_columnia_bottom" .. ";columnia_bottom; ]".. + "item_image_button[2,3.5;1,1;" .. output .. "_columnia_crosslink" .. ";columnia_crosslink; ]".. + "item_image_button[3,3.5;1,1;" .. output .. "_columnia_link" .. ";columnia_link; ]".. + "item_image_button[4,3.5;1,1;" .. output .. "_columnia_linkdown" .. ";columnia_linkdown; ]" + + -- this code is a provision in case top column pieces enter service + if minetest.registered_nodes[output .. "_columnia_top"] then + shaper_formspec = shaper_formspec .. + "item_image_button[5,3.5;1,1;" .. output .. "_columnia_top" .. ";columnia_top; ]" + end + + end + + -- row 5 for shapes which are not available for all materials + -- only one such shape exists so far, but more should be easy to add here + + if minetest.registered_nodes[output .. "_corner_bricks"] then + shaper_formspec = shaper_formspec .. + "item_image_button[0,4.5;1,1;" .. output .. "_corner_bricks" .. ";corner_bricks; ]" + end + + -- inventory part + + shaper_formspec = shaper_formspec .. + + "label[0, 5.5;".."In:".."]".. + "list[current_name;src;1,5.5;1,1;]".. + "label[3, 5.5;".."Out:".."]".. + "list[current_name;dst;4,5.5;4,1;]".. + + "list[current_player;main;0,7;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" + + return(shaper_formspec) + +end + + +-- a simple check for compatibile materials +local function check_material_applicability (material) + -- using centerstone node here, since it appears to be both one of the oldest + -- and defined for all materials as well, making it suitable for a quick check + if minetest.registered_nodes[string.gsub(material, "^.*:", "facade:") .. "_centerstone"] then + return true + else + return false + end +end + + +-- update the buttons to show shapes made from the actual material +local function update_formspec_put (pos, listname, index, stack, player) + + if protect_inventories and minetest.is_protected(pos, player:get_player_name()) then + return + end + + if listname ~= "src" then + return + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local material_name = stack:get_name() + + if check_material_applicability(material_name) then + meta:set_string("formspec", prepare_formspec(material_name)) + else + return + end + +end + + +-- update the buttons to show shapes made from demo material if all material is removed +local function update_formspec_take (pos, listname, index, stack, player) + + if protect_inventories and minetest.is_protected(pos, player:get_player_name()) then + return + end + + if listname ~= "src" then + return + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + if inv:is_empty("src") then + meta:set_string("formspec", prepare_formspec(demo_material)) + end + + return + +end + + +-- disallow putting in materials which are not supported +local function check_inventory_put (pos, listname, index, stack, player) + + if protect_inventories and minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + if listname ~= "src" then + return 0 + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local material_name = stack:get_name() + + if check_material_applicability(material_name) then + return(stack:get_count()) + else + return 0 + end +end + + +local function check_inventory_take (pos, listname, index, stack, player) + + if protect_inventories and minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + if listname ~= "src" and listname ~= "dst" then + return 0 + end + + return(stack:get_count()) + +end + + +local function check_inventory_move (pos, from_list, from_index, to_list, to_index, count, player) + + if protect_inventories and minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + + return(stack:get_count()) + +end + + +-- process the form fields and convert source material to desired shapes +local function form_handler(pos, formname, fields, sender) + + if protect_inventories and minetest.is_protected(pos, sender:get_player_name()) then + return + end + + if fields.quit then + return + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + if inv:is_empty("src") then + return + end + + local inputstack = inv:get_stack("src", 1) + local inputname = inputstack:get_name() + + for shape,_ in pairs(fields) do + + local result = string.gsub(inputname, "^.*:", "facade:") .. "_" .. shape + + -- one can never be overly paranoid, unlike the quick check before, this one is precise + if not minetest.registered_nodes[result] then + return + end + + -- output quantities are adjusted to preserve roughly same mass of resulting products + if output_ratios[shape] then + result = result .. " " .. output_ratios[shape] + end + + if not inv:room_for_item("dst", result) then + return + end + + inputstack:take_item(1) + inv:set_stack("src", 1, inputstack) + inv:add_item("dst", result) + + end + + return +end + + +local function check_removability (pos, player) + + local meta = minetest.get_meta(pos) + local owner = meta:set_string("owner") + local pname = player:get_player_name() + local inv = meta:get_inventory() + + -- owner may always remove the device + if owner and owner ~= "" and pname and pname ~= "" and owner == pname then + if inv:is_empty("src") and inv:is_empty("dst") then + return true + else + return false + end + end + + if minetest.is_protected(pos, player:get_player_name()) then + return false + end + + if inv:is_empty("src") and inv:is_empty("dst") then + return true + end + + return false + +end + + +minetest.register_node("facade:shaper", { + description = "Shaper Machine", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- base + {-1/2, -1/2, -1/2, 1/2, -14/32, 1/2}, + -- back + {-8/32, -1/2, 12/32, 8/32, 1/2, 16/32}, + -- table + {-8/32, -4/32, -16/32, 8/32, 4/32, 16/32}, + -- rear table sliding support + {-16/32, -4/32, 12/32, 16/32, 4/32, 16/32}, + -- front table sliding support + {-8/32, -14/32, -12/32, 8/32, -4/32, -16/32}, + -- top tool beam + {-4/32, 16/32, -8/32, 4/32, 12/32, 12/32}, + -- cutter holder + {-2/32, 7/32, -2/32, 2/32, 14/32, 2/32}, + -- cutter + {-1/128, 6/32, -1/32, 1/128, 7/32, 1/32}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2}, + }, + }, + tiles = { "facade_shaper_top.png", + "facade_shaper_bottom.png", + "facade_shaper_right.png", + "facade_shaper_left.png", + "facade_shaper_back.png", + "facade_shaper_front.png"}, + groups = { oddly_breakable_by_hand=2, cracky=3, dig_immediate=1 }, + paramtype = "light", + paramtype2 = "facedir", + legacy_facedir_simple = true, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", prepare_formspec(demo_material)) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 4) + end, + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + local owner = placer and placer:get_player_name() or "" + meta:set_string("owner", owner) + if owner then + meta:set_string("infotext", ("Facade Shaper (owned by %s)"):format(owner)) + else + meta:set_string("infotext", "Facade Shaper") + end + end, + can_dig = check_removability, + allow_metadata_inventory_put = check_inventory_put, + allow_metadata_inventory_take = check_inventory_take, + allow_metadata_inventory_move = check_inventory_move, + on_metadata_inventory_put = update_formspec_put, + on_metadata_inventory_take = update_formspec_take, + on_receive_fields = form_handler, +}) + + +minetest.register_craft({ + output = 'facade:shaper', + recipe = { + {'', 'default:diamond', '' }, + {'default:steel_ingot', 'default:steelblock', 'default:steel_ingot' }, + {'', 'default:steelblock' , '' }, + + }, +}) diff --git a/facade/shapes.lua b/facade/shapes.lua new file mode 100644 index 00000000..957015fc --- /dev/null +++ b/facade/shapes.lua @@ -0,0 +1,799 @@ +-- Node (shape) definition and registration + +local wehavechisels = minetest.get_modpath("mychisel") + +-------------- +--Bannerstones +-------------- + +--Node will be called facade:_bannerstone +function facade.register_bannerstone(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_bannerstone" , { + description = desc .. " Bannerstone", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, 0.25, -0.5625, 0.5, 0.375, -0.5}, + {-0.5, -0.375, -0.5625, 0.5, -0.25, -0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + }) +end + +--Node will be called facade:_bannerstone_corner +function facade.register_bannerstone_corner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_bannerstone_corner", { + description = desc .. " Bannerstone Corner", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png", + "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png", + "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png", + "" .. modname.. "_" .. subname .. ".png^facade_bannerstone.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5625, 0.25, -0.5625, 0.5625, 0.375, 0.5625}, + {-0.5625, -0.375, -0.5625, 0.5625, -0.25, 0.5625}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + }) +end + +-------------- +--Centerstones +-------------- + +--Node will be called facade:_centerstone +function facade.register_centerstone(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_centerstone", { + description = desc .. " Centerstone", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png^facade_centerstone.png"}, + paramtype = "light", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.4375, -0.4375, 0.4375, 0.4375, 0.4375}, + {-0.5, -0.25, 0.0625, 0.5, 0.25, 0.25}, + {-0.5, -0.25, -0.25, 0.5, 0.25, -0.0625}, + {-0.25, -0.25, -0.5, -0.0625, 0.25, 0.5}, + {0.0625, -0.25, -0.5, 0.25, 0.25, 0.5}, + {-0.5, 0.0625, -0.25, 0.5, 0.25, 0.25}, + {-0.5, -0.25, -0.25, 0.5, -0.0625, 0.25}, + {-0.25, -0.25, -0.5, 0.25, -0.0625, 0.5}, + {-0.25, 0.0625, -0.5, 0.25, 0.25, 0.5}, + {-0.25, -0.5, -0.25, 0.25, 0.5, -0.0625}, + {-0.25, -0.5, 0.0625, 0.25, 0.5, 0.25}, + {0.0625, -0.5, -0.1875, 0.25, 0.5, 0.1875}, + {-0.25, -0.5, -0.1875, -0.0625, 0.5, 0.1875}, + {-0.5, 0.3125, 0.3125, 0.5, 0.5, 0.5}, + {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.3125}, + {0.3125, 0.3125, -0.5, 0.5, 0.5, 0.5}, + {-0.5, 0.3125, -0.5, -0.3125, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, -0.3125, 0.5}, + {0.3125, -0.5, -0.5, 0.5, -0.3125, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.3125}, + {-0.5, -0.5, 0.3125, 0.5, -0.3125, 0.5}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + }) +end + +--------- +--Columns +--------- + +--Node will be called facade:_column +function facade.register_column(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_column" , { + description = desc .. " Column", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_column.png", + "" .. modname.. "_" .. subname .. ".png^facade_column.png" + }, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.4375}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, 0.5}, + {0.3125, -0.5, -0.5, 0.5, 0.5, 0.5}, + {0.0625, -0.5, -0.5, 0.1875, 0.5, 0.5}, + {-0.1875, -0.5, -0.5, -0.0625, 0.5, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + }) + +end + + +--Node will be called facade:_column_corner +function facade.register_column_corner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_column_corner", { + description = desc .. " Column Corner", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_column.png", + "" .. modname.. "_" .. subname .. ".png^facade_column.png", + "" .. modname.. "_" .. subname .. ".png^facade_column.png", + "" .. modname.. "_" .. subname .. ".png^facade_column.png" + }, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.4375, 0.4375, 0.5, 0.4375}, + {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {0.0625, -0.5, -0.5, 0.1875, 0.5, 0.5}, + {-0.1875, -0.5, -0.5, -0.0625, 0.5, 0.5}, + {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + {-0.5, -0.5, 0.0625, 0.5, 0.5, 0.1875}, + {-0.5, -0.5, -0.1875, 0.5, 0.5, -0.0625}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + }) +end + +--------- +--Corbels +--------- + +--Node will be called facade:_corbel +function facade.register_corbel(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_corbel", { + description = desc .. " Corbel", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + {-0.1875, -0.3125, -0.3125, 0.1875, 0.5, 0}, + }, + }, +-- selection_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, +-- } +-- }, + }) +end + +--Node will be called facade:_corbel_corner +function facade.register_corbel_corner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_corbel_corner", { + description = desc .. " Corbel Corner", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0, 0.5, 0.5}, + {0, -0.3125, -0.3125, 0.3125, 0.5, 0}, + }, + }, +-- selection_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, +-- } +-- }, + }) +end + +--Node will be called facade:_corbel_corner_inner +function facade.register_corbel_corner_inner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_corbel_corner_inner", { + description = desc .. " Corbel Inner Corner", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0, 0.5, 0.5, 0.5}, + {0, -0.3125, -0.3125, 0.3125, 0.5, 0}, + {-0.5, -0.5, -0.5, 0, 0.5, 0.5}, + }, + }, +-- selection_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, +-- } +-- }, + }) +end + + +-------------------------- +--- Carved Stones +-------------------------- + +--Node will be called facade:_carved_stone_a +function facade.register_carved_stone_a(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_carved_stone_a", { + description = desc .. " Carved Stone A", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_carved_stone_a.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + {-0.4375, -0.375, -0.5, -0.3125, 0.375, -0.4375}, + {-0.5, -0.375, -0.5, -0.3125, -0.25, 0.5}, + {-0.4375, 0.25, -0.5, 0.4375, 0.375, 0.5}, + {0.3125, -0.125, -0.5, 0.4375, 0.25, 0.5}, + {-0.1875, -0.375, -0.5, 0.5, -0.25, 0.5}, + {-0.1875, -0.25, -0.5, -0.0625, 0.125, 0.5}, + {0.0625, -0.125, -0.5, 0.3125, 0, 0.5}, + {-0.0625, 0, -0.5, 0.1875, 0.125, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + }) +end + +--Node will be called facade:_carved_stone_a_corner +function facade.register_carved_stone_a_corner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_carved_stone_a_corner", { + description = desc .. " Carved Stone A Corner", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_carved_stone_a.png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_carved_stone_a.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.4375, -0.5, -0.4375, 0.5, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + {-0.4375, -0.375, -0.5, -0.3125, 0.375, -0.4375}, + {-0.5, -0.375, -0.5, -0.3125, -0.25, 0.1875}, + {-0.4375, 0.25, -0.5, 0.4375, 0.375, 0.5}, + {0.3125, -0.125, -0.5, 0.4375, 0.25, 0.5}, + {-0.1875, -0.375, -0.5, 0.5, -0.25, 0.5}, + {-0.1875, -0.25, -0.5, -0.0625, 0.125, 0.5}, + {0.0625, -0.125, -0.5, 0.3125, 0, 0.5}, + {-0.0625, 0, -0.5, 0.1875, 0.125, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.125, -0.4375, 0.5, 0.375, -0.3125}, + {-0.5, 0.25, -0.3125, 0.5, 0.375, 0.4375}, + {-0.5, -0.375, 0.3125, 0.4375, 0.375, 0.4375}, + {-0.5, -0.375, 0.3125, 0.4375, -0.25, 0.5}, + {-0.5, -0.125, -0.3125, 0.4375, 0, -0.0625}, + {-0.5, 0, -0.1875, 0.4375, 0.125, 0.1875}, + {-0.5, -0.25, 0.0625, 0.4375, 0.125, 0.1875}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + }) +end + + +-------------------------- +--- RGSpro Facia +-------------------------- + +--Node will be called facade:_rgspro +function facade.register_rgspro(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_rgspro", { + description = desc .. " RGSpro", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.375, 0.5, -0.3125, 0.5}, + {-0.5, -0.3125, 0.25, 0.5, -0.125, 0.5}, + {-0.5, -0.125, 0.125, 0.5, 0.5, 0.5}, + }, + }, +-- selection_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, +-- }, +-- }, + }) +end + +--Node will be called facade:_rgspro_inner_corner +function facade.register_rgspro_inner_corner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_rgspro_inner_corner", { + description = desc .. " RGSpro Inner Corner", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.375, 0.5, -0.3125, 0.5}, + {-0.5, -0.3125, 0.25, 0.5, -0.125, 0.5}, + {-0.5, -0.125, 0.125, 0.5, 0.5, 0.5}, + {0.375, -0.5, -0.5, 0.5, -0.3125, 0.375}, + {0.25, -0.3125, -0.5, 0.5, -0.0625, 0.25}, + {0.125, -0.125, -0.5, 0.5, 0.5, 0.125}, + }, + }, +-- selection_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, +-- }, +-- }, + }) +end + + +--Node will be called facade:_rgspro_outer_corner +function facade.register_rgspro_outer_corner(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_rgspro_outer_corner", { + description = desc .. " RGSpro Outer Corner", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png", + "" .. modname.. "_" .. subname .. ".png^facade_rgspro.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.375, 0.5, -0.3125, 0.5}, + {-0.5, -0.3125, 0.25, 0.5, -0.0625, 0.5}, + {-0.5, -0.125, 0.125, 0.5, 0.5, 0.5}, + {-0.625, -0.5, 0.375, -0.5, -0.3125, 1.5}, + {-0.75, -0.3125, 0.25, -0.5, -0.125, 1.5}, + {-0.875, -0.125, 0.125, -0.5, 0.5, 1.5}, + }, + }, +-- selection_box = { +-- type = "fixed", +-- fixed = { +-- {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, +-- }, +-- }, + }) +end + + +-------------------------- +--- Corner Bricks +-------------------------- + +--Node will be called facade:_corner_bricks +function facade.register_corner_bricks(modname, subname, recipeitem, desc) + if not string.match(recipeitem,"clay") + then -- do not do for clay things that is ugly + minetest.register_node("facade:" .. subname .. "_corner_bricks", { + description = desc .. " Corner Bricks", + drawtype = "nodebox", + tiles = { + "" .. modname.. "_" .. subname .. "_brick.png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5625, -0.5, 0.4375, -0.5, 0, 1}, + {-0.5, -0.5, 0.4375, 0, 0, 0.5}, + {-0.5625, 0, 0.5, -0.5, 0.5, 1.5}, + {-0.5625, 0, 0.4375, 0.5, 0.5, 0.5}, + }, + }, + }) + end +end + + +-------------------------- +--- Columnia shapes +-------------------------- + +-- From mod Columnia (2014 by Glunggi), LGPL 2.1 +-- The shapes are using stock minetest.rotate_node() for positioning. + +-- These shapes should not be registered if the regular columnia mod is in use +if not minetest.get_modpath("columnia") then + + local columnia_rotate = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:getpos() + if placer_pos then + local dir = { + x = p1.x - placer_pos.x, + y = p1.y - placer_pos.y, + z = p1.z - placer_pos.z + } + param2 = minetest.dir_to_facedir(dir) + end + + if p0.y-1 == p1.y then + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 + end + end + + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end + + -- Node will be called facade:_columnia_mid + function facade.register_columnia_mid(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_columnia_mid", { + description = desc .. " Column Middle", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + on_place = minetest.rotate_node, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, + }, + }, + }) + end + + -- Normally, a single shape should be fine both for bottom and top parts of + -- a column. If materials with textures that don't match with themselves + -- when rotated upside-down are added later on, then enable the next function. + -- Node will be called facade:_columnia_bottom + function facade.register_columnia_bottom(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_columnia_bottom", { + description = desc .. " Column Bottom/Top", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + on_place = minetest.rotate_node, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.375, -0.5, -0.375, 0.375, 0, 0.375}, + }, + }, + }) + end + + --[[ + -- This function is commented out, because in the current state, when facade mod + -- uses materials without directional textures, having one shape for top + -- and bottom of columns is enough. However, for materials which have textures + -- that, when rotated, clearly stop matching the other blocks, this function + -- is preserved. + -- Node will be called facade:_columnia_top + function facade.register_columnia_top(modname, subname, recipeitem, desc) + -- whitelist items with textures of clear directionality (e.g. bricks) + if string.match(recipeitem, "brick") + then + minetest.register_node("facade:" .. subname .. "_columnia_top", { + description = desc .. " Column Top/Bottom", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + on_place = minetest.rotate_node, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, + {-0.5, 0.25, -0.5, 0.5, 0.5, 0.5}, + {-0.375, 0, -0.375, 0.375, 0.5, 0.375}, + }, + }, + }) + end + end + ]]-- + + -- Node will be called facade:_columnia_crosslink + function facade.register_columnia_crosslink(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_columnia_crosslink", { + description = desc .. " Column Crosslink", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + on_place = columnia_rotate, + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, + {-0.5, 0, -0.25, 0.5, 0.5, 0.25}, + {-0.25, 0, -0.5, 0.25, 0.5, 0.5}, + {-0.4375, 0.0625, -0.4375, 0.4375, 0.4375, 0.4375}, + }, + }, + }) + end + + -- Node will be called facade:_columnia_link + function facade.register_columnia_link(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_columnia_link", { + description = desc .. " Column Link", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + on_place = columnia_rotate, + node_box = { + type = "fixed", + fixed = { + {-0.25, 0, -0.5, 0.25, 0.5, 0.5}, + }, + }, + }) + end + + -- Node will be called facade:_columnia_linkdown + function facade.register_columnia_linkdown(modname, subname, recipeitem, desc) + minetest.register_node("facade:" .. subname .. "_columnia_linkdown", { + description = desc .. " Column Linkdown", + drawtype = "nodebox", + tiles = {"" .. modname.. "_" .. subname .. ".png"}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {cracky = 3, oddly_breakable_by_hand = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), + on_place = columnia_rotate, + node_box = { + type = "fixed", + fixed = { + {-0.25, 0, -0.5, 0.25, 0.5, 0.5}, + {-0.125, -0.5, -0.125, 0.125, 0, 0.125}, + {-0.1875, -0.5, -0.1875, 0.1875, -0.375, 0.1875}, + {-0.1875, -0.125, -0.1875, 0.1875, 0, 0.1875}, + }, + }, + }) + end + +end + +-------------------------- +--Register Nodes +-------------------------- +function facade.register_facade_nodes(modname, subname, recipeitem, desc) + + facade.register_bannerstone(modname, subname, recipeitem, desc) + facade.register_bannerstone_corner(modname, subname, recipeitem, desc) + facade.register_centerstone(modname, subname, recipeitem, desc) + facade.register_column(modname, subname, recipeitem, desc) + facade.register_column_corner(modname, subname, recipeitem, desc) + facade.register_corbel(modname, subname, recipeitem, desc) + facade.register_corbel_corner(modname, subname, recipeitem, desc) + facade.register_corbel_corner_inner(modname, subname, recipeitem, desc) + facade.register_carved_stone_a(modname, subname, recipeitem, desc) + facade.register_carved_stone_a_corner(modname, subname, recipeitem, desc) + facade.register_rgspro(modname, subname, recipeitem, desc) + facade.register_rgspro_inner_corner(modname, subname, recipeitem, desc) + facade.register_rgspro_outer_corner(modname, subname, recipeitem, desc) + facade.register_corner_bricks(modname, subname, recipeitem, desc) + + if not minetest.get_modpath("columnia") then + facade.register_columnia_mid(modname, subname, recipeitem, desc) + facade.register_columnia_bottom(modname, subname, recipeitem, desc) + --facade.register_columnia_top(modname, subname, recipeitem, desc) + facade.register_columnia_crosslink(modname, subname, recipeitem, desc) + facade.register_columnia_link(modname, subname, recipeitem, desc) + facade.register_columnia_linkdown(modname, subname, recipeitem, desc) + end + + if wehavechisels then + -- register all nodes with mychisel mod to use them without creative priv + chisel.register_node("facade",subname, recipeitem, "bannerstone") + chisel.register_node("facade",subname, recipeitem, "bannerstone_corner") + chisel.register_node("facade",subname, recipeitem, "centerstone") + chisel.register_node("facade",subname, recipeitem, "column") + chisel.register_node("facade",subname, recipeitem, "column_corner") + chisel.register_node("facade",subname, recipeitem, "corbel") + chisel.register_node("facade",subname, recipeitem, "corbel_corner") + chisel.register_node("facade",subname, recipeitem, "corbel_corner_inner") + chisel.register_node("facade",subname, recipeitem, "carved_stone_a") + chisel.register_node("facade",subname, recipeitem, "carved_stone_a_corner") + chisel.register_node("facade",subname, recipeitem, "rgspro") + chisel.register_node("facade",subname, recipeitem, "rgspro_inner_corner") + chisel.register_node("facade",subname, recipeitem, "rgspro_outer_corner") + chisel.register_node("facade",subname, recipeitem, "corner_bricks") + + if not minetest.get_modpath("columnia") then + chisel.register_node("facade",subname, recipeitem, "columnia_mid") + chisel.register_node("facade",subname, recipeitem, "columnia_bottom") + --chisel.register_node("facade",subname, recipeitem, "columnia_top") + chisel.register_node("facade",subname, recipeitem, "columnia_crosslink") + chisel.register_node("facade",subname, recipeitem, "columnia_link") + chisel.register_node("facade",subname, recipeitem, "columnia_linkdown") + end + end +end + +-- register the total number of different designs in this mod with mychisel +if wehavechisels then chisel.add_mod("facade",14) end + diff --git a/facade/textures/facade_shaper_back.png b/facade/textures/facade_shaper_back.png new file mode 100644 index 00000000..d7516b13 Binary files /dev/null and b/facade/textures/facade_shaper_back.png differ diff --git a/facade/textures/facade_shaper_bottom.png b/facade/textures/facade_shaper_bottom.png new file mode 100644 index 00000000..efa47137 Binary files /dev/null and b/facade/textures/facade_shaper_bottom.png differ diff --git a/facade/textures/facade_shaper_front.png b/facade/textures/facade_shaper_front.png new file mode 100644 index 00000000..38af8b64 Binary files /dev/null and b/facade/textures/facade_shaper_front.png differ diff --git a/facade/textures/facade_shaper_left.png b/facade/textures/facade_shaper_left.png new file mode 100644 index 00000000..9d399bca Binary files /dev/null and b/facade/textures/facade_shaper_left.png differ diff --git a/facade/textures/facade_shaper_right.png b/facade/textures/facade_shaper_right.png new file mode 100644 index 00000000..e8a5d8b6 Binary files /dev/null and b/facade/textures/facade_shaper_right.png differ diff --git a/facade/textures/facade_shaper_top.png b/facade/textures/facade_shaper_top.png new file mode 100644 index 00000000..b528d703 Binary files /dev/null and b/facade/textures/facade_shaper_top.png differ diff --git a/farming/README.md b/farming/README.md index 6f57096c..0dfebbba 100644 --- a/farming/README.md +++ b/farming/README.md @@ -13,7 +13,7 @@ This mod works by adding your new plant to the {growing=1} group and numbering t ### Changelog: -- 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. +- 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.40 - Added Mithril Scythe to quick harvest and replant crops on right-click. Added Hoe's for MoreOres with Toolrank support. - 1.39 - Added Rice, Rye and Oats thanks to Ademants Grains mod. Added Jaffa Cake and multigrain bread. diff --git a/farming/crops/barley.lua b/farming/crops/barley.lua index cc5ca0f3..d8960317 100644 --- a/farming/crops/barley.lua +++ b/farming/crops/barley.lua @@ -75,8 +75,8 @@ minetest.register_node("farming:barley_4", table.copy(crop_def)) crop_def.tiles = {"farming_barley_5.png"} crop_def.drop = { items = { - {items = {'farming:barley'}, rarity = 2}, - {items = {'farming:seed_barley'}, rarity = 2}, + {items = {"farming:barley"}, rarity = 2}, + {items = {"farming:seed_barley"}, rarity = 2}, } } minetest.register_node("farming:barley_5", table.copy(crop_def)) @@ -85,8 +85,8 @@ minetest.register_node("farming:barley_5", table.copy(crop_def)) crop_def.tiles = {"farming_barley_6.png"} crop_def.drop = { items = { - {items = {'farming:barley'}, rarity = 2}, - {items = {'farming:seed_barley'}, rarity = 1}, + {items = {"farming:barley"}, rarity = 2}, + {items = {"farming:seed_barley"}, rarity = 1}, } } minetest.register_node("farming:barley_6", table.copy(crop_def)) @@ -96,10 +96,10 @@ crop_def.tiles = {"farming_barley_7.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:barley'}, rarity = 1}, - {items = {'farming:barley'}, rarity = 3}, - {items = {'farming:seed_barley'}, rarity = 1}, - {items = {'farming:seed_barley'}, rarity = 3}, + {items = {"farming:barley"}, rarity = 1}, + {items = {"farming:barley"}, rarity = 3}, + {items = {"farming:seed_barley"}, rarity = 1}, + {items = {"farming:seed_barley"}, rarity = 3}, } } minetest.register_node("farming:barley_7", table.copy(crop_def)) diff --git a/farming/crops/beans.lua b/farming/crops/beans.lua index bd3b8eeb..d02cff5c 100644 --- a/farming/crops/beans.lua +++ b/farming/crops/beans.lua @@ -84,7 +84,7 @@ minetest.register_craftitem("farming:beans", { minetest.register_craft({ output = "dye:green", recipe = { - {'farming:beans'}, + {"farming:beans"}, } }) @@ -162,9 +162,9 @@ minetest.register_node("farming:beanpole", { minetest.register_craft({ output = "farming:beanpole", recipe = { - {'', '', ''}, - {'default:stick', '', 'default:stick'}, - {'default:stick', '', 'default:stick'}, + {"", "", ""}, + {"default:stick", "", "default:stick"}, + {"default:stick", "", "default:stick"}, } }) @@ -185,7 +185,7 @@ local crop_def = { sunlight_propagates = true, drop = { items = { - {items = {'farming:beanpole'}, rarity = 1}, + {items = {"farming:beanpole"}, rarity = 1}, } }, selection_box = farming.select, @@ -216,10 +216,10 @@ crop_def.tiles = {"farming_beanpole_5.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:beanpole'}, rarity = 1}, - {items = {'farming:beans 3'}, rarity = 1}, - {items = {'farming:beans 2'}, rarity = 2}, - {items = {'farming:beans 2'}, rarity = 3}, + {items = {"farming:beanpole"}, rarity = 1}, + {items = {"farming:beans 3"}, rarity = 1}, + {items = {"farming:beans 2"}, rarity = 2}, + {items = {"farming:beans 2"}, rarity = 3}, } } minetest.register_node("farming:beanpole_5", table.copy(crop_def)) @@ -244,9 +244,9 @@ minetest.register_node("farming:beanbush", { sunlight_propagates = true, drop = { items = { - {items = {'farming:beans 1'}, rarity = 1}, - {items = {'farming:beans 1'}, rarity = 2}, - {items = {'farming:beans 1'}, rarity = 3}, + {items = {"farming:beans 1"}, rarity = 1}, + {items = {"farming:beans 1"}, rarity = 2}, + {items = {"farming:beans 1"}, rarity = 3}, } }, selection_box = farming.select, diff --git a/farming/crops/beetroot.lua b/farming/crops/beetroot.lua index 8f7069b1..e1aa58e5 100644 --- a/farming/crops/beetroot.lua +++ b/farming/crops/beetroot.lua @@ -76,10 +76,10 @@ crop_def.tiles = {"farming_beetroot_5.png"} crop_def.groups.growing = 0 crop_def.drop = { max_items = 4, items = { - {items = {'farming:beetroot'}, rarity = 1}, - {items = {'farming:beetroot'}, rarity = 2}, - {items = {'farming:beetroot'}, rarity = 3}, - {items = {'farming:beetroot'}, rarity = 4}, + {items = {"farming:beetroot"}, rarity = 1}, + {items = {"farming:beetroot"}, rarity = 2}, + {items = {"farming:beetroot"}, rarity = 3}, + {items = {"farming:beetroot"}, rarity = 4}, } } minetest.register_node("farming:beetroot_5", table.copy(crop_def)) diff --git a/farming/crops/blueberry.lua b/farming/crops/blueberry.lua index 6752e35b..0b35343d 100644 --- a/farming/crops/blueberry.lua +++ b/farming/crops/blueberry.lua @@ -78,9 +78,9 @@ crop_def.tiles = {"farming_blueberry_4.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:blueberries 2'}, rarity = 1}, - {items = {'farming:blueberries'}, rarity = 2}, - {items = {'farming:blueberries'}, rarity = 3}, + {items = {"farming:blueberries 2"}, rarity = 1}, + {items = {"farming:blueberries"}, rarity = 2}, + {items = {"farming:blueberries"}, rarity = 3}, } } minetest.register_node("farming:blueberry_4", table.copy(crop_def)) diff --git a/farming/crops/carrot.lua b/farming/crops/carrot.lua index 6ec1994a..ec3ff8ba 100644 --- a/farming/crops/carrot.lua +++ b/farming/crops/carrot.lua @@ -97,8 +97,8 @@ minetest.register_node("farming:carrot_6", table.copy(crop_def)) crop_def.tiles = {"farming_carrot_7.png"} crop_def.drop = { items = { - {items = {'farming:carrot'}, rarity = 1}, - {items = {'farming:carrot 2'}, rarity = 3}, + {items = {"farming:carrot"}, rarity = 1}, + {items = {"farming:carrot 2"}, rarity = 3}, } } minetest.register_node("farming:carrot_7", table.copy(crop_def)) @@ -108,8 +108,8 @@ crop_def.tiles = {"farming_carrot_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:carrot 2'}, rarity = 1}, - {items = {'farming:carrot 3'}, rarity = 2}, + {items = {"farming:carrot 2"}, rarity = 1}, + {items = {"farming:carrot 3"}, rarity = 2}, } } minetest.register_node("farming:carrot_8", table.copy(crop_def)) diff --git a/farming/crops/chili.lua b/farming/crops/chili.lua index 429d2568..cade3b21 100644 --- a/farming/crops/chili.lua +++ b/farming/crops/chili.lua @@ -32,7 +32,7 @@ minetest.register_craft({ minetest.register_craft({ output = "dye:red", recipe = { - {'farming:chili_pepper'}, + {"farming:chili_pepper"}, } }) @@ -85,8 +85,8 @@ crop_def.tiles = {"farming_chili_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:chili_pepper 3'}, rarity = 1}, - {items = {'farming:chili_pepper 2'}, rarity = 2}, + {items = {"farming:chili_pepper 3"}, rarity = 1}, + {items = {"farming:chili_pepper 2"}, rarity = 2}, } } minetest.register_node("farming:chili_8", table.copy(crop_def)) diff --git a/farming/crops/cocoa.lua b/farming/crops/cocoa.lua index 7b5e8d44..fc044e47 100644 --- a/farming/crops/cocoa.lua +++ b/farming/crops/cocoa.lua @@ -108,6 +108,31 @@ minetest.register_craft( { } }) +-- chocolate block +minetest.register_node("farming:chocolate_block", { + description = S("Chocolate Block"), + tiles = {"farming_chocolate_block.png"}, + is_ground_content = false, + groups = {cracky = 2, oddly_breakable_by_hand = 2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "farming:chocolate_block", + recipe = { + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + {"farming:chocolate_dark", "farming:chocolate_dark", "farming:chocolate_dark"}, + } +}) + +minetest.register_craft({ + output = "farming:chocolate_dark 9", + recipe = { + {"farming:chocolate_block"}, + } +}) + -- cocoa definition local crop_def = { drawtype = "plantlike", @@ -116,7 +141,7 @@ local crop_def = { walkable = false, drop = { items = { - {items = {'farming:cocoa_beans 1'}, rarity = 2}, + {items = {"farming:cocoa_beans 1"}, rarity = 2}, } }, selection_box = { @@ -147,7 +172,7 @@ minetest.register_node("farming:cocoa_2", table.copy(crop_def)) crop_def.tiles = {"farming_cocoa_3.png"} crop_def.drop = { items = { - {items = {'farming:cocoa_beans 1'}, rarity = 1}, + {items = {"farming:cocoa_beans 1"}, rarity = 1}, } } minetest.register_node("farming:cocoa_3", table.copy(crop_def)) @@ -158,9 +183,9 @@ crop_def.groups.growing = 0 crop_def.growth_check = nil crop_def.drop = { items = { - {items = {'farming:cocoa_beans 2'}, rarity = 1}, - {items = {'farming:cocoa_beans 1'}, rarity = 2}, - {items = {'farming:cocoa_beans 1'}, rarity = 4}, + {items = {"farming:cocoa_beans 2"}, rarity = 1}, + {items = {"farming:cocoa_beans 1"}, rarity = 2}, + {items = {"farming:cocoa_beans 1"}, rarity = 4}, } } minetest.register_node("farming:cocoa_4", table.copy(crop_def)) diff --git a/farming/crops/coffee.lua b/farming/crops/coffee.lua index c4528e27..6d2fad8a 100644 --- a/farming/crops/coffee.lua +++ b/farming/crops/coffee.lua @@ -80,9 +80,9 @@ crop_def.tiles = {"farming_coffee_5.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:coffee_beans 2'}, rarity = 1}, - {items = {'farming:coffee_beans 2'}, rarity = 2}, - {items = {'farming:coffee_beans 2'}, rarity = 3}, + {items = {"farming:coffee_beans 2"}, rarity = 1}, + {items = {"farming:coffee_beans 2"}, rarity = 2}, + {items = {"farming:coffee_beans 2"}, rarity = 3}, } } minetest.register_node("farming:coffee_5", table.copy(crop_def)) diff --git a/farming/crops/corn.lua b/farming/crops/corn.lua index 52f8b945..1d3e21a9 100644 --- a/farming/crops/corn.lua +++ b/farming/crops/corn.lua @@ -129,9 +129,9 @@ minetest.register_node("farming:corn_6", table.copy(crop_def)) crop_def.tiles = {"farming_corn_7.png"} crop_def.drop = { items = { - {items = {'farming:corn'}, rarity = 1}, - {items = {'farming:corn'}, rarity = 2}, - {items = {'farming:corn'}, rarity = 3}, + {items = {"farming:corn"}, rarity = 1}, + {items = {"farming:corn"}, rarity = 2}, + {items = {"farming:corn"}, rarity = 3}, } } minetest.register_node("farming:corn_7", table.copy(crop_def)) @@ -141,9 +141,9 @@ crop_def.tiles = {"farming_corn_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:corn 2'}, rarity = 1}, - {items = {'farming:corn 2'}, rarity = 2}, - {items = {'farming:corn 2'}, rarity = 2}, + {items = {"farming:corn 2"}, rarity = 1}, + {items = {"farming:corn 2"}, rarity = 2}, + {items = {"farming:corn 2"}, rarity = 2}, } } minetest.register_node("farming:corn_8", table.copy(crop_def)) diff --git a/farming/crops/cucumber.lua b/farming/crops/cucumber.lua index d7178b88..b3761bd5 100644 --- a/farming/crops/cucumber.lua +++ b/farming/crops/cucumber.lua @@ -49,8 +49,8 @@ crop_def.tiles = {"farming_cucumber_4.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:cucumber 2'}, rarity = 1}, - {items = {'farming:cucumber 2'}, rarity = 2}, + {items = {"farming:cucumber 2"}, rarity = 1}, + {items = {"farming:cucumber 2"}, rarity = 2}, } } minetest.register_node("farming:cucumber_4", table.copy(crop_def)) diff --git a/farming/crops/garlic.lua b/farming/crops/garlic.lua index 09ab375a..83884d0e 100644 --- a/farming/crops/garlic.lua +++ b/farming/crops/garlic.lua @@ -65,7 +65,7 @@ minetest.register_node("farming:garlic_braid", { minetest.register_craft({ output = "farming:garlic_braid", - recipe = { + recipe = { {"farming:garlic", "farming:garlic", "farming:garlic"}, {"farming:garlic", "farming:garlic", "farming:garlic"}, {"farming:garlic", "farming:garlic", "farming:garlic"} @@ -118,11 +118,11 @@ crop_def.tiles = {"crops_garlic_plant_5.png"} crop_def.groups.growing = 0 crop_def.drop = { max_items = 5, items = { - {items = {'farming:garlic'}, rarity = 1}, - {items = {'farming:garlic'}, rarity = 1}, - {items = {'farming:garlic'}, rarity = 1}, - {items = {'farming:garlic'}, rarity = 2}, - {items = {'farming:garlic'}, rarity = 5}, + {items = {"farming:garlic"}, rarity = 1}, + {items = {"farming:garlic"}, rarity = 1}, + {items = {"farming:garlic"}, rarity = 1}, + {items = {"farming:garlic"}, rarity = 2}, + {items = {"farming:garlic"}, rarity = 5}, } } minetest.register_node("farming:garlic_5", table.copy(crop_def)) diff --git a/farming/crops/grapes.lua b/farming/crops/grapes.lua index 2b334274..af573452 100644 --- a/farming/crops/grapes.lua +++ b/farming/crops/grapes.lua @@ -79,7 +79,7 @@ minetest.register_craftitem("farming:grapes", { minetest.register_craft({ output = "dye:violet", recipe = { - {'farming:grapes'}, + {"farming:grapes"}, } }) @@ -157,9 +157,9 @@ minetest.register_node("farming:trellis", { minetest.register_craft({ output = "farming:trellis", recipe = { - {'default:stick', 'default:stick', 'default:stick'}, - {'default:stick', 'default:stick', 'default:stick'}, - {'default:stick', 'default:stick', 'default:stick'}, + {"default:stick", "default:stick", "default:stick"}, + {"default:stick", "default:stick", "default:stick"}, + {"default:stick", "default:stick", "default:stick"}, } }) @@ -180,7 +180,7 @@ local crop_def = { sunlight_propagates = true, drop = { items = { - {items = {'farming:trellis'}, rarity = 1}, + {items = {"farming:trellis"}, rarity = 1}, } }, selection_box = farming.select, @@ -223,10 +223,10 @@ crop_def.tiles = {"farming_grapes_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:trellis'}, rarity = 1}, - {items = {'farming:grapes 3'}, rarity = 1}, - {items = {'farming:grapes 1'}, rarity = 2}, - {items = {'farming:grapes 1'}, rarity = 3}, + {items = {"farming:trellis"}, rarity = 1}, + {items = {"farming:grapes 3"}, rarity = 1}, + {items = {"farming:grapes 1"}, rarity = 2}, + {items = {"farming:grapes 1"}, rarity = 3}, } } minetest.register_node("farming:grapes_8", table.copy(crop_def)) @@ -251,9 +251,9 @@ minetest.register_node("farming:grapebush", { sunlight_propagates = true, drop = { items = { - {items = {'farming:grapes 1'}, rarity = 1}, - {items = {'farming:grapes 1'}, rarity = 2}, - {items = {'farming:grapes 1'}, rarity = 3}, + {items = {"farming:grapes 1"}, rarity = 1}, + {items = {"farming:grapes 1"}, rarity = 2}, + {items = {"farming:grapes 1"}, rarity = 3}, } }, selection_box = farming.select, diff --git a/farming/crops/hemp.lua b/farming/crops/hemp.lua index 931a5868..e08384ce 100644 --- a/farming/crops/hemp.lua +++ b/farming/crops/hemp.lua @@ -69,7 +69,7 @@ minetest.register_craft({ }) -- hemp fibre -minetest.register_craftitem("farming:hemp_fibre", { +minetest.register_craftitem("farming:hemp_fibre", { description = S("Hemp Fibre"), inventory_image = "farming_hemp_fibre.png", }) @@ -219,8 +219,8 @@ minetest.register_node("farming:hemp_5", table.copy(crop_def)) crop_def.tiles = {"farming_hemp_6.png"} crop_def.drop = { items = { - {items = {'farming:hemp_leaf'}, rarity = 2}, - {items = {'farming:seed_hemp'}, rarity = 1}, + {items = {"farming:hemp_leaf"}, rarity = 2}, + {items = {"farming:seed_hemp"}, rarity = 1}, } } minetest.register_node("farming:hemp_6", table.copy(crop_def)) @@ -229,10 +229,10 @@ minetest.register_node("farming:hemp_6", table.copy(crop_def)) crop_def.tiles = {"farming_hemp_7.png"} crop_def.drop = { items = { - {items = {'farming:hemp_leaf'}, rarity = 1}, - {items = {'farming:hemp_leaf'}, rarity = 3}, - {items = {'farming:seed_hemp'}, rarity = 1}, - {items = {'farming:seed_hemp'}, rarity = 3}, + {items = {"farming:hemp_leaf"}, rarity = 1}, + {items = {"farming:hemp_leaf"}, rarity = 3}, + {items = {"farming:seed_hemp"}, rarity = 1}, + {items = {"farming:seed_hemp"}, rarity = 3}, } } minetest.register_node("farming:hemp_7", table.copy(crop_def)) @@ -242,10 +242,10 @@ crop_def.tiles = {"farming_hemp_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:hemp_leaf 2'}, rarity = 1}, - {items = {'farming:hemp_leaf'}, rarity = 2}, - {items = {'farming:seed_hemp'}, rarity = 1}, - {items = {'farming:seed_hemp'}, rarity = 2}, + {items = {"farming:hemp_leaf 2"}, rarity = 1}, + {items = {"farming:hemp_leaf"}, rarity = 2}, + {items = {"farming:seed_hemp"}, rarity = 1}, + {items = {"farming:seed_hemp"}, rarity = 2}, } } minetest.register_node("farming:hemp_8", table.copy(crop_def)) diff --git a/farming/crops/onion.lua b/farming/crops/onion.lua index f4291a5f..ae36d0d1 100644 --- a/farming/crops/onion.lua +++ b/farming/crops/onion.lua @@ -58,11 +58,11 @@ crop_def.tiles = {"crops_onion_plant_5.png"} crop_def.groups.growing = 0 crop_def.drop = { max_items = 5, items = { - {items = {'farming:onion'}, rarity = 1}, - {items = {'farming:onion'}, rarity = 1}, - {items = {'farming:onion'}, rarity = 2}, - {items = {'farming:onion'}, rarity = 2}, - {items = {'farming:onion'}, rarity = 5}, + {items = {"farming:onion"}, rarity = 1}, + {items = {"farming:onion"}, rarity = 1}, + {items = {"farming:onion"}, rarity = 2}, + {items = {"farming:onion"}, rarity = 2}, + {items = {"farming:onion"}, rarity = 5}, } } minetest.register_node("farming:onion_5", table.copy(crop_def)) diff --git a/farming/crops/peas.lua b/farming/crops/peas.lua index 93e92326..e12253bb 100644 --- a/farming/crops/peas.lua +++ b/farming/crops/peas.lua @@ -79,11 +79,10 @@ crop_def.tiles = {"farming_pea_5.png"} crop_def.groups.growing = 0 crop_def.drop = { max_items = 5, items = { - {items = {'farming:pea_pod'}, rarity = 1}, - {items = {'farming:pea_pod'}, rarity = 2}, - {items = {'farming:pea_pod'}, rarity = 3}, - {items = {'farming:pea_pod'}, rarity = 4}, - {items = {'farming:pea_pod'}, rarity = 5}, + {items = {"farming:pea_pod"}, rarity = 1}, + {items = {"farming:pea_pod"}, rarity = 2}, + {items = {"farming:pea_pod"}, rarity = 3}, + {items = {"farming:pea_pod"}, rarity = 5}, } } minetest.register_node("farming:pea_5", table.copy(crop_def)) diff --git a/farming/crops/pepper.lua b/farming/crops/pepper.lua index 8f5e29ed..19c7b059 100644 --- a/farming/crops/pepper.lua +++ b/farming/crops/pepper.lua @@ -98,9 +98,9 @@ crop_def.tiles = {"crops_pepper_plant_5.png"} crop_def.groups.growing = 0 crop_def.drop = { max_items = 2, items = { - {items = {'farming:pepper 2'}, rarity = 1}, - {items = {'farming:pepper'}, rarity = 2}, - {items = {'farming:pepper'}, rarity = 3}, + {items = {"farming:pepper 2"}, rarity = 1}, + {items = {"farming:pepper"}, rarity = 2}, + {items = {"farming:pepper"}, rarity = 3}, } } minetest.register_node("farming:pepper_5", table.copy(crop_def)) diff --git a/farming/crops/pineapple.lua b/farming/crops/pineapple.lua index f62042e2..62d8216b 100644 --- a/farming/crops/pineapple.lua +++ b/farming/crops/pineapple.lua @@ -123,8 +123,8 @@ crop_def.tiles = {"farming_pineapple_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:pineapple'}, rarity = 1}, - {items = {'farming:pineapple'}, rarity = 15}, + {items = {"farming:pineapple"}, rarity = 1}, + {items = {"farming:pineapple"}, rarity = 15}, } } minetest.register_node("farming:pineapple_8", table.copy(crop_def)) diff --git a/farming/crops/potato.lua b/farming/crops/potato.lua index 256ce97c..e81cce63 100644 --- a/farming/crops/potato.lua +++ b/farming/crops/potato.lua @@ -85,8 +85,8 @@ minetest.register_node("farming:potato_2", table.copy(crop_def)) crop_def.tiles = {"farming_potato_3.png"} crop_def.drop = { items = { - {items = {'farming:potato'}, rarity = 1}, - {items = {'farming:potato'}, rarity = 3}, + {items = {"farming:potato"}, rarity = 1}, + {items = {"farming:potato"}, rarity = 3}, } } minetest.register_node("farming:potato_3", table.copy(crop_def)) @@ -96,8 +96,8 @@ crop_def.tiles = {"farming_potato_4.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:potato 2'}, rarity = 1}, - {items = {'farming:potato 3'}, rarity = 2}, + {items = {"farming:potato 2"}, rarity = 1}, + {items = {"farming:potato 3"}, rarity = 2}, } } minetest.register_node("farming:potato_4", table.copy(crop_def)) diff --git a/farming/crops/pumpkin.lua b/farming/crops/pumpkin.lua index 3960a26c..508c2b22 100644 --- a/farming/crops/pumpkin.lua +++ b/farming/crops/pumpkin.lua @@ -189,7 +189,7 @@ crop_def.tiles = {"farming_pumpkin_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:pumpkin_slice 9'}, rarity = 1}, + {items = {"farming:pumpkin_slice 9"}, rarity = 1}, } } minetest.register_node("farming:pumpkin_8", table.copy(crop_def)) diff --git a/farming/crops/raspberry.lua b/farming/crops/raspberry.lua index 979bdfbd..a72137b0 100644 --- a/farming/crops/raspberry.lua +++ b/farming/crops/raspberry.lua @@ -62,9 +62,9 @@ crop_def.tiles = {"farming_raspberry_4.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:raspberries 2'}, rarity = 1}, - {items = {'farming:raspberries'}, rarity = 2}, - {items = {'farming:raspberries'}, rarity = 3}, + {items = {"farming:raspberries 2"}, rarity = 1}, + {items = {"farming:raspberries"}, rarity = 2}, + {items = {"farming:raspberries"}, rarity = 3}, } } minetest.register_node("farming:raspberry_4", table.copy(crop_def)) diff --git a/farming/crops/rhubarb.lua b/farming/crops/rhubarb.lua index 94717330..fdcd11b5 100644 --- a/farming/crops/rhubarb.lua +++ b/farming/crops/rhubarb.lua @@ -58,9 +58,9 @@ crop_def.tiles = {"farming_rhubarb_3.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:rhubarb 2'}, rarity = 1}, - {items = {'farming:rhubarb'}, rarity = 2}, - {items = {'farming:rhubarb'}, rarity = 3}, + {items = {"farming:rhubarb 2"}, rarity = 1}, + {items = {"farming:rhubarb"}, rarity = 2}, + {items = {"farming:rhubarb"}, rarity = 3}, } } minetest.register_node("farming:rhubarb_3", table.copy(crop_def)) diff --git a/farming/crops/tomato.lua b/farming/crops/tomato.lua index bab0e472..573661dd 100644 --- a/farming/crops/tomato.lua +++ b/farming/crops/tomato.lua @@ -61,8 +61,8 @@ minetest.register_node("farming:tomato_6", table.copy(crop_def)) crop_def.tiles = {"farming_tomato_7.png"} crop_def.drop = { items = { - {items = {'farming:tomato'}, rarity = 1}, - {items = {'farming:tomato'}, rarity = 3}, + {items = {"farming:tomato"}, rarity = 1}, + {items = {"farming:tomato"}, rarity = 3}, } } minetest.register_node("farming:tomato_7", table.copy(crop_def)) @@ -72,8 +72,8 @@ crop_def.tiles = {"farming_tomato_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:tomato 3'}, rarity = 1}, - {items = {'farming:tomato 3'}, rarity = 2}, + {items = {"farming:tomato 3"}, rarity = 1}, + {items = {"farming:tomato 3"}, rarity = 2}, } } minetest.register_node("farming:tomato_8", table.copy(crop_def)) diff --git a/farming/crops/wheat.lua b/farming/crops/wheat.lua index 7c77d119..b0475618 100644 --- a/farming/crops/wheat.lua +++ b/farming/crops/wheat.lua @@ -189,8 +189,8 @@ minetest.register_node("farming:wheat_4", table.copy(crop_def)) crop_def.tiles = {"farming_wheat_5.png"} crop_def.drop = { items = { - {items = {'farming:wheat'}, rarity = 2}, - {items = {'farming:seed_wheat'}, rarity = 2}, + {items = {"farming:wheat"}, rarity = 2}, + {items = {"farming:seed_wheat"}, rarity = 2}, } } minetest.register_node("farming:wheat_5", table.copy(crop_def)) @@ -199,8 +199,8 @@ minetest.register_node("farming:wheat_5", table.copy(crop_def)) crop_def.tiles = {"farming_wheat_6.png"} crop_def.drop = { items = { - {items = {'farming:wheat'}, rarity = 2}, - {items = {'farming:seed_wheat'}, rarity = 1}, + {items = {"farming:wheat"}, rarity = 2}, + {items = {"farming:seed_wheat"}, rarity = 1}, } } minetest.register_node("farming:wheat_6", table.copy(crop_def)) @@ -209,10 +209,10 @@ minetest.register_node("farming:wheat_6", table.copy(crop_def)) crop_def.tiles = {"farming_wheat_7.png"} crop_def.drop = { items = { - {items = {'farming:wheat'}, rarity = 1}, - {items = {'farming:wheat'}, rarity = 3}, - {items = {'farming:seed_wheat'}, rarity = 1}, - {items = {'farming:seed_wheat'}, rarity = 3}, + {items = {"farming:wheat"}, rarity = 1}, + {items = {"farming:wheat"}, rarity = 3}, + {items = {"farming:seed_wheat"}, rarity = 1}, + {items = {"farming:seed_wheat"}, rarity = 3}, } } minetest.register_node("farming:wheat_7", table.copy(crop_def)) @@ -222,10 +222,10 @@ crop_def.tiles = {"farming_wheat_8.png"} crop_def.groups.growing = 0 crop_def.drop = { items = { - {items = {'farming:wheat'}, rarity = 1}, - {items = {'farming:wheat'}, rarity = 3}, - {items = {'farming:seed_wheat'}, rarity = 1}, - {items = {'farming:seed_wheat'}, rarity = 3}, + {items = {"farming:wheat"}, rarity = 1}, + {items = {"farming:wheat"}, rarity = 3}, + {items = {"farming:seed_wheat"}, rarity = 1}, + {items = {"farming:seed_wheat"}, rarity = 3}, } } minetest.register_node("farming:wheat_8", table.copy(crop_def)) diff --git a/farming/farming.conf_example b/farming/farming.conf_example index 9338142c..c2c5de06 100644 --- a/farming/farming.conf_example +++ b/farming/farming.conf_example @@ -21,8 +21,8 @@ farming.rhubarb = 0.001 farming.beans = 0.001 farming.grapes = 0.001 farming.barley = true -- true or false only -farming.chili = 0.002 -farming.hemp = 0.002 +farming.chili = 0.003 +farming.hemp = 0.003 farming.garlic = 0.001 farming.onion = 0.001 farming.pepper = 0.002 diff --git a/farming/food.lua b/farming/food.lua index 1670f1fd..00f32678 100644 --- a/farming/food.lua +++ b/farming/food.lua @@ -139,8 +139,8 @@ minetest.register_craftitem("farming:donut_chocolate", { minetest.register_craft({ output = "farming:donut_chocolate", recipe = { - {'group:food_cocoa'}, - {'farming:donut'}, + {"group:food_cocoa"}, + {"farming:donut"}, } }) @@ -153,8 +153,8 @@ minetest.register_craftitem("farming:donut_apple", { minetest.register_craft({ output = "farming:donut_apple", recipe = { - {'default:apple'}, - {'farming:donut'}, + {"default:apple"}, + {"farming:donut"}, } }) diff --git a/farming/grass.lua b/farming/grass.lua index 53ea606c..6a9e94f0 100644 --- a/farming/grass.lua +++ b/farming/grass.lua @@ -7,9 +7,9 @@ for i = 4, 5 do drop = { max_items = 1, items = { - {items = {'farming:seed_wheat'}, rarity = 5}, - {items = {'farming:seed_oat'},rarity = 5}, - {items = {'default:grass_1'}}, + {items = {"farming:seed_wheat"}, rarity = 5}, + {items = {"farming:seed_oat"},rarity = 5}, + {items = {"default:grass_1"}}, } }, }) @@ -22,9 +22,9 @@ for i = 4, 5 do drop = { max_items = 1, items = { - {items = {'farming:seed_barley'}, rarity = 5}, - {items = {'farming:seed_rye'},rarity = 5}, - {items = {'default:dry_grass_1'}}, + {items = {"farming:seed_barley"}, rarity = 5}, + {items = {"farming:seed_rye"},rarity = 5}, + {items = {"default:dry_grass_1"}}, } }, }) @@ -38,9 +38,9 @@ minetest.override_item("default:junglegrass", { drop = { max_items = 1, items = { - {items = {'farming:seed_cotton'}, rarity = 8}, - {items = {'farming:seed_rice'},rarity = 8}, - {items = {'default:junglegrass'}}, + {items = {"farming:seed_cotton"}, rarity = 8}, + {items = {"farming:seed_rice"},rarity = 8}, + {items = {"default:junglegrass"}}, } }, }) diff --git a/farming/init.lua b/farming/init.lua index 38626baf..77e43fff 100644 --- a/farming/init.lua +++ b/farming/init.lua @@ -7,7 +7,7 @@ farming = { mod = "redo", - version = "20190427", + version = "20190728", path = minetest.get_modpath("farming"), select = { type = "fixed", @@ -461,7 +461,8 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname) minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) - if placer and not farming.is_creative(placer:get_player_name()) then + if placer and itemstack + and not farming.is_creative(placer:get_player_name()) then local name = itemstack:get_name() @@ -614,8 +615,8 @@ farming.rhubarb = 0.001 farming.beans = 0.001 farming.grapes = 0.001 farming.barley = true -farming.chili = 0.002 -farming.hemp = 0.002 +farming.chili = 0.003 +farming.hemp = 0.003 farming.garlic = 0.001 farming.onion = 0.001 farming.pepper = 0.002 diff --git a/farming/textures/farming_chocolate_block.png b/farming/textures/farming_chocolate_block.png new file mode 100644 index 00000000..20e5a79b Binary files /dev/null and b/farming/textures/farming_chocolate_block.png differ diff --git a/framedglass/init.lua b/framedglass/init.lua index 818353f1..e7e9581f 100644 --- a/framedglass/init.lua +++ b/framedglass/init.lua @@ -78,6 +78,7 @@ minetest.register_node("framedglass:steel_framed_obsidian_glass", { airbrush_replacement_node = "framedglass:steel_framed_obsidian_glass_tinted", groups = {cracky=3, oddly_breakable_by_hand=3, ud_param2_colorable = 1}, sounds = default.node_sound_glass_defaults(), + on_dig = unifieddyes.on_dig, }) minetest.register_node("framedglass:steel_framed_obsidian_glass_tinted", { @@ -96,6 +97,7 @@ minetest.register_node("framedglass:steel_framed_obsidian_glass_tinted", { use_texture_alpha = true, groups = {cracky=3, oddly_breakable_by_hand=3, ud_param2_colorable = 1, not_in_creative_inventory = 1}, sounds = default.node_sound_glass_defaults(), + on_dig = unifieddyes.on_dig, }) -- crafts! diff --git a/gloopblocks/depends.txt b/gloopblocks/depends.txt index a9d85c2a..57849e5d 100644 --- a/gloopblocks/depends.txt +++ b/gloopblocks/depends.txt @@ -11,3 +11,5 @@ caverealms? technic? nyancat? usesdirt? +worldedit? +signs_lib? diff --git a/gloopblocks/init.lua b/gloopblocks/init.lua index 22116139..15d6ecd0 100644 --- a/gloopblocks/init.lua +++ b/gloopblocks/init.lua @@ -6,6 +6,8 @@ Maintained by VanessaE. --]] +gloopblocks = {} + -- Load support for intllib. local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") @@ -360,6 +362,14 @@ if not minetest.get_modpath("usesdirt") then groups = {cracky=3, stone=2}, sounds = default.node_sound_stone_defaults() }) + + if minetest.get_modpath("signs_lib") then + signs_lib.allowed_poles["usesdirt:dirt_brick_fence"] = true + signs_lib.allowed_poles["usesdirt:dirt_fence"] = true + signs_lib.allowed_poles["usesdirt:dirt_cobble_stone_fence"] = true + signs_lib.allowed_poles["usesdirt:dirt_stone_fence"] = true + signs_lib.allowed_poles["usesdirt:dirt_stone_fence"] = true + end end -- Stairs/slabs defs, conversion of normal -> mossy items @@ -903,6 +913,42 @@ minetest.register_node("gloopblocks:fence_steel", { sounds = default.node_sound_stone_defaults(), }) +if minetest.get_modpath("worldedit") then + function gloopblocks.liquid_ungrief(pos1, pos2, name) + local count + local p1to2 = minetest.pos_to_string(pos1).." and "..minetest.pos_to_string(pos2) + local volume = worldedit.volume(pos1, pos2) + minetest.chat_send_player(name, "Cleaning-up lava/water griefing between "..p1to2.."...") + if volume > 1000000 then + minetest.chat_send_player(name, "This operation could affect up to "..volume.." nodes. It may take a while.") + end + minetest.log("action", name.." performs lava/water greifing cleanup between "..p1to2..".") + count = worldedit.replace(pos1, pos2, "default:lava_source", "air") + count = worldedit.replace(pos1, pos2, "default:lava_flowing", "air") + count = worldedit.replace(pos1, pos2, "default:water_source", "air") + count = worldedit.replace(pos1, pos2, "default:water_flowing", "air") + count = worldedit.replace(pos1, pos2, "default:river_water_source", "air") + count = worldedit.replace(pos1, pos2, "default:river_water_flowing", "air") + count = worldedit.replace(pos1, pos2, "gloopblocks:pumice_cooled", "air") + count = worldedit.replace(pos1, pos2, "gloopblocks:basalt_cooled", "air") + count = worldedit.replace(pos1, pos2, "gloopblocks:obsidian_cooled", "air") + count = worldedit.fixlight(pos1, pos2) + minetest.chat_send_player(name, "Operation completed.") + end + + minetest.register_chatcommand("/liquid_ungrief", { + params = "[size]", + privs = {worldedit = true}, + description = "Repairs greifing caused by spilling lava and water (and their \"cooling\" results)", + func = function(name, params) + local pos1 = worldedit.pos1[name] + local pos2 = worldedit.pos2[name] + if not pos1 or not pos2 then return end + gloopblocks.liquid_ungrief(pos1, pos2, name) + end + }) +end + dofile(minetest.get_modpath("gloopblocks").."/crafts.lua") minetest.register_alias("nyancat:nyancat_rainbow", "gloopblocks:rainbow_block_horizontal") diff --git a/homedecor_bathroom/init.lua b/homedecor_bathroom/init.lua index a043d899..85cf43a8 100644 --- a/homedecor_bathroom/init.lua +++ b/homedecor_bathroom/init.lua @@ -15,6 +15,7 @@ minetest.register_node(":homedecor:bathroom_tiles_dark", { groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node(":homedecor:bathroom_tiles_medium", { @@ -31,6 +32,7 @@ minetest.register_node(":homedecor:bathroom_tiles_medium", { groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node(":homedecor:bathroom_tiles_light", { @@ -47,6 +49,7 @@ minetest.register_node(":homedecor:bathroom_tiles_light", { groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) local tr_cbox = { diff --git a/homedecor_bedroom/init.lua b/homedecor_bedroom/init.lua index fc3f7339..b0e25573 100644 --- a/homedecor_bedroom/init.lua +++ b/homedecor_bedroom/init.lua @@ -59,6 +59,7 @@ homedecor.register("bed_regular", { after_dig_node = function(pos, oldnode, oldmetadata, digger) homedecor.unextend_bed(pos) end, + on_dig = unifieddyes.on_dig, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local itemname = itemstack:get_name() if itemname == "homedecor:bed_regular" then @@ -92,6 +93,7 @@ homedecor.register("bed_extended", { after_dig_node = function(pos, oldnode, oldmetadata, digger) homedecor.unextend_bed(pos) end, + on_dig = unifieddyes.on_dig, -- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) -- homedecor.beds_on_rightclick(pos, node, clicker) -- return itemstack @@ -128,6 +130,7 @@ homedecor.register("bed_kingsize", { inv:add_item("main", "homedecor:bed_regular 2") end end, + on_dig = unifieddyes.on_dig, -- on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) -- homedecor.beds_on_rightclick(pos, node, clicker) -- return itemstack diff --git a/homedecor_cobweb/init.lua b/homedecor_cobweb/init.lua index eae886e2..23f65563 100644 --- a/homedecor_cobweb/init.lua +++ b/homedecor_cobweb/init.lua @@ -25,7 +25,7 @@ minetest.register_node(":homedecor:cobweb_corner", { end }) -minetest.register_node(":Lhomedecor:cobweb_centered", { +minetest.register_node(":homedecor:cobweb_centered", { description = S("Cobweb"), drawtype = "nodebox", tiles = { "homedecor_cobweb.png" }, diff --git a/homedecor_doors_and_gates/init.lua b/homedecor_doors_and_gates/init.lua index 8b42f673..4c28bc9b 100644 --- a/homedecor_doors_and_gates/init.lua +++ b/homedecor_doors_and_gates/init.lua @@ -457,8 +457,8 @@ minetest.register_craft( { type = "shapeless", output = "homedecor:gate_half_door_closed 4", recipe = { - "homedecor:door_wood_plain_a", - "homedecor:door_wood_plain_a" + "doors:homedecor_wood_plain_a", + "doors:homedecor_wood_plain_a" }, }) @@ -466,8 +466,8 @@ minetest.register_craft( { type = "shapeless", output = "homedecor:gate_half_door_white_closed 4", recipe = { - "homedecor:door_bedroom_a", - "homedecor:door_bedroom_a" + "doors:homedecor_bedroom_a", + "doors:homedecor_bedroom_a" }, }) @@ -542,7 +542,7 @@ minetest.register_craft( { -- plain wood, non-windowed minetest.register_craft( { - output = "homedecor:door_wood_plain_a 2", + output = "doors:homedecor_wood_plain 2", recipe = { { "group:wood", "group:wood", "" }, { "group:wood", "group:wood", "default:steel_ingot" }, @@ -553,7 +553,7 @@ minetest.register_craft( { -- fancy exterior minetest.register_craft( { - output = "homedecor:door_exterior_fancy_a 2", + output = "doors:homedecor_exterior_fancy 2", recipe = { { "group:wood", "default:glass" }, { "group:wood", "group:wood" }, @@ -561,12 +561,10 @@ minetest.register_craft( { }, }) --- wood and glass (grid style) - --- bare +-- French style wood/glass minetest.register_craft( { - output = "homedecor:door_wood_glass_oak_a 2", + output = "doors:homedecor_french_oak 2", recipe = { { "default:glass", "group:wood" }, { "group:wood", "default:glass" }, @@ -575,7 +573,7 @@ minetest.register_craft( { }) minetest.register_craft( { - output = "homedecor:door_wood_glass_oak_a 2", + output = "doors:homedecor_french_oak 2", recipe = { { "group:wood", "default:glass" }, { "default:glass", "group:wood" }, @@ -583,27 +581,23 @@ minetest.register_craft( { }, }) --- mahogany - minetest.register_craft( { type = "shapeless", - output = "homedecor:door_wood_glass_mahogany_a 2", + output = "doors:homedecor_french_mahogany 2", recipe = { "dye:brown", - "homedecor:door_wood_glass_oak_a", - "homedecor:door_wood_glass_oak_a" + "doors:homedecor_french_oak", + "doors:homedecor_french_oak" }, }) --- white - minetest.register_craft( { type = "shapeless", - output = "homedecor:door_wood_glass_white_a 2", + output = "doors:homedecor_french_white 2", recipe = { "dye:white", - "homedecor:door_wood_glass_oak_a", - "homedecor:door_wood_glass_oak_a" + "doors:homedecor_french_oak", + "doors:homedecor_french_oak" }, }) @@ -612,7 +606,7 @@ minetest.register_craft( { -- oak minetest.register_craft( { - output = "homedecor:door_closet_oak_a 2", + output = "doors:homedecor_closet_oak 2", recipe = { { "", "group:stick", "group:stick" }, { "default:steel_ingot", "group:stick", "group:stick" }, @@ -624,18 +618,18 @@ minetest.register_craft( { minetest.register_craft( { type = "shapeless", - output = "homedecor:door_closet_mahogany_a 2", + output = "doors:homedecor_closet_mahogany 2", recipe = { - "homedecor:door_closet_oak_a", - "homedecor:door_closet_oak_a", + "doors:homedecor_closet_oak_a", + "doors:homedecor_closet_oak_a", "dye:brown" }, }) --- wrought fence-like door +-- wrought iron fence-like door minetest.register_craft( { - output = "homedecor:door_wrought_iron_a 2", + output = "doors:homedecor_wrought_iron 2", recipe = { { "homedecor:pole_wrought_iron", "default:iron_lump" }, { "homedecor:pole_wrought_iron", "default:iron_lump" }, @@ -643,21 +637,21 @@ minetest.register_craft( { }, }) --- bedroom door +-- bedroom/panel door minetest.register_craft( { - output = "homedecor:door_bedroom_a", + output = "doors:homedecor_basic_panel", recipe = { { "dye:white", "dye:white", "" }, - { "homedecor:door_wood_plain_a", "basic_materials:brass_ingot", "" }, + { "doors:homedecor_wood_plain_a", "basic_materials:brass_ingot", "" }, { "", "", "" }, }, }) --- woodglass door +-- basic wood/glass single-lite door minetest.register_craft( { - output = "homedecor:door_woodglass_a", + output = "doors:homedecor_woodglass", recipe = { { "group:wood", "default:glass", "" }, { "group:wood", "default:glass", "basic_materials:brass_ingot" }, @@ -665,10 +659,10 @@ minetest.register_craft( { }, }) --- woodglass door type 2 +-- "Carolina" door minetest.register_craft( { - output = "homedecor:door_woodglass2_a", + output = "doors:homedecor_carolina", recipe = { { "default:glass", "default:glass", "" }, { "group:wood", "group:wood", "default:iron_lump" }, diff --git a/homedecor_electrical/init.lua b/homedecor_electrical/init.lua index a33451b7..cf4a447c 100644 --- a/homedecor_electrical/init.lua +++ b/homedecor_electrical/init.lua @@ -16,8 +16,6 @@ function homedecor.toggle_switch(pos, node, clicker, itemstack, pointed_thing) end local on_rc -local switch_receptor - if minetest.get_modpath("mesecons") then on_rc = function(pos, node, clicker, itemstack, pointed_thing) local t = homedecor.toggle_switch(pos, node, clicker, itemstack, pointed_thing) @@ -28,12 +26,6 @@ if minetest.get_modpath("mesecons") then mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node)) end end - switch_receptor = { - receptor = { - state = mesecon.state[onoff], - rules = mesecon.rules.buttonlike_get - } - } end homedecor.register("power_outlet", { @@ -65,6 +57,16 @@ homedecor.register("power_outlet", { for _, onoff in ipairs ({"on", "off"}) do + local switch_receptor + if minetest.get_modpath("mesecons") then + switch_receptor = { + receptor = { + state = mesecon.state[onoff], + rules = mesecon.rules.buttonlike_get + } + } + end + local model = { { -0.125, -0.1875, 0.4375, 0.125, 0.125, 0.5 }, { -0.03125, 0, 0.40625, 0.03125, 0.0625, 0.5 }, diff --git a/homedecor_fences/depends.txt b/homedecor_fences/depends.txt index 8505ec7c..99e96229 100644 --- a/homedecor_fences/depends.txt +++ b/homedecor_fences/depends.txt @@ -2,4 +2,4 @@ homedecor_common default basic_materials dye -signs_lib? +basic_signs? diff --git a/homedecor_fences/init.lua b/homedecor_fences/init.lua index 94badf60..f1fcf1d0 100644 --- a/homedecor_fences/init.lua +++ b/homedecor_fences/init.lua @@ -1,19 +1,5 @@ -- This file adds fences of various types -local signs_modpath = minetest.get_modpath("signs_lib") - -local sign_post_model = { - type = "fixed", - fixed = { - {-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125}, - {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, - } -} - -if signs_modpath then - sign_post_model = signs_lib.sign_post_model.nodebox -end - local S = homedecor.gettext local materials = { @@ -23,43 +9,17 @@ local materials = { for _, m in ipairs(materials) do -local desc, name = unpack(m) + local desc, name = unpack(m) -homedecor.register("fence_"..name, { - description = S("Fence/railing (@1)", desc), - drawtype = "fencelike", - tiles = {"homedecor_generic_metal_"..name..".png"}, - inventory_image = "homedecor_fence_"..name..".png", - selection_box = homedecor.nodebox.bar_y(1/7), - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), -}) - --- brass/wrought iron with signs: - -homedecor.register("fence_"..name.."_with_sign", { - description = S("Fence/railing with sign (@1)", desc), - tiles = { - "homedecor_sign_"..name.."_post_top.png", - "homedecor_sign_"..name.."_post_bottom.png", - "homedecor_sign_"..name.."_post_side.png", - "homedecor_sign_"..name.."_post_side.png", - "homedecor_sign_"..name.."_post_back.png", - "homedecor_sign_"..name.."_post_front.png", - }, - wield_image = "homedecor_sign_"..name.."_post.png", - node_box = sign_post_model, - groups = {snappy=3,not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - sunlight_propagates = true, - drop = { - max_items = 2, - items = { - { items = { "default:sign_wall" }}, - { items = { "homedecor:fence_"..name }}, - }, - }, -}) + homedecor.register("fence_"..name, { + description = S("Fence/railing (@1)", desc), + drawtype = "fencelike", + tiles = {"homedecor_generic_metal_"..name..".png"}, + inventory_image = "homedecor_fence_"..name..".png", + selection_box = homedecor.nodebox.bar_y(1/7), + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), + }) end @@ -303,9 +263,17 @@ homedecor.register("fence_wrought_iron_2_corner", { }, }) -if signs_modpath then - signs_lib.register_fence_with_sign("homedecor:fence_brass", "homedecor:fence_brass_with_sign") - signs_lib.register_fence_with_sign("homedecor:fence_wrought_iron", "homedecor:fence_wrought_iron_with_sign") +-- insert the old wood signs-on-metal-fences into signs_lib's conversion LBM +if minetest.get_modpath("basic_signs") then + table.insert(signs_lib.old_fenceposts_with_signs, "homedecor:fence_brass_with_sign") + signs_lib.old_fenceposts["homedecor:fence_brass_with_sign"] = "homedecor:fence_brass" + signs_lib.old_fenceposts_replacement_signs["homedecor:fence_brass_with_sign"] = "default:sign_wall_wood_onpole" + + table.insert(signs_lib.old_fenceposts_with_signs, "homedecor:fence_wrought_iron_with_sign") + signs_lib.old_fenceposts["homedecor:fence_wrought_iron_with_sign"] = "homedecor:fence_wrought_iron" + signs_lib.old_fenceposts_replacement_signs["homedecor:fence_wrought_iron_with_sign"] = "default:sign_wall_wood_onpole" + + signs_lib.allowed_poles["homedecor:pole_brass"] = true end -- crafting diff --git a/homedecor_gastronomy/init.lua b/homedecor_gastronomy/init.lua index 2d0a3996..68262e40 100644 --- a/homedecor_gastronomy/init.lua +++ b/homedecor_gastronomy/init.lua @@ -164,18 +164,7 @@ homedecor.register("beer_mug", { on_use = function(itemstack, user, pointed_thing) local inv = user:get_inventory() if not creative.is_enabled_for(user:get_player_name()) then - if inv:room_for_item("main", "vessels:drinking_glass 1") then - inv:add_item("main", "vessels:drinking_glass 1") - else - local pos = user:get_pos() - local dir = user:get_look_dir() - local fdir = minetest.dir_to_facedir(dir) - local pos_fwd = { x = pos.x + homedecor.fdir_to_fwd[fdir+1][1], - y = pos.y + 1, - z = pos.z + homedecor.fdir_to_fwd[fdir+1][2] } - minetest.add_item(pos_fwd, "vessels:drinking_glass 1") - end - minetest.do_item_eat(2, nil, itemstack, user, pointed_thing) + minetest.do_item_eat(2, "vessels:drinking_glass 1", itemstack, user, pointed_thing) return itemstack end end diff --git a/homedecor_lighting/init.lua b/homedecor_lighting/init.lua index c40fff2a..157ddab4 100644 --- a/homedecor_lighting/init.lua +++ b/homedecor_lighting/init.lua @@ -98,6 +98,7 @@ local digiline_on_punch if minetest.get_modpath("digilines") then local on_digiline_receive_string = function(pos, node, channel, msg) + if not msg or not channel then return end local meta = minetest.get_meta(pos) local setchan = meta:get_string("channel") if setchan ~= channel then return end @@ -285,6 +286,7 @@ for brightness_level = 0, 14 do after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rightclick = homedecor.toggle_light, drop = { items = { @@ -350,6 +352,7 @@ for brightness_level = 0, 14 do after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rightclick = homedecor.toggle_light, drop = { items = { @@ -416,6 +419,7 @@ for brightness_level = 0, 14 do after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rightclick = homedecor.toggle_light, drop = { items = { @@ -636,6 +640,7 @@ for brightness_level = 0, 14 do after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew, light_source = brightness_level, on_rightclick = homedecor.toggle_light, @@ -713,7 +718,8 @@ for brightness_level = 0, 14 do digiline = homedecor.digiline_alldir_light, mesecons = homedecor.mesecon_wall_light, on_rightclick = homedecor.toggle_light, - on_punch = digiline_on_punch + on_punch = digiline_on_punch, + on_dig = unifieddyes.on_dig, }) homedecor.register("standing_lamp_"..brightness_level, { @@ -744,7 +750,8 @@ for brightness_level = 0, 14 do digiline = homedecor.digiline_alldir_light, mesecons = homedecor.mesecon_wall_light, on_rightclick = homedecor.toggle_light, - on_punch = digiline_on_punch + on_punch = digiline_on_punch, + on_dig = unifieddyes.on_dig, }) end diff --git a/homedecor_misc/init.lua b/homedecor_misc/init.lua index 95135aef..9c85b96f 100644 --- a/homedecor_misc/init.lua +++ b/homedecor_misc/init.lua @@ -478,6 +478,7 @@ for _, side in ipairs({"diagonal_left", "diagonal_right", "horizontal"}) do def.airbrush_replacement_node = "homedecor:banister_wood_"..side.."_grey" def.groups.ud_param2_colorable = 1 def.paramtype2 = "colorfacedir" + def.on_dig = unifieddyes.on_dig end homedecor.register(nodename, def) diff --git a/homedecor_seating/armchairs.lua b/homedecor_seating/armchairs.lua index 202cedb4..36f47cb2 100644 --- a/homedecor_seating/armchairs.lua +++ b/homedecor_seating/armchairs.lua @@ -26,6 +26,7 @@ minetest.register_node(":lrfurn:armchair", { after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) if not clicker:is_player() then @@ -51,10 +52,11 @@ homedecor.register("armchair", { palette = "unifieddyes_palette_colorwallmounted.png", groups = {snappy=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), - node_box = ac_cbox, + node_box = armchair_cbox, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew, }) diff --git a/homedecor_seating/longsofas.lua b/homedecor_seating/longsofas.lua index 4ee5ef5b..b9ed4e96 100644 --- a/homedecor_seating/longsofas.lua +++ b/homedecor_seating/longsofas.lua @@ -41,6 +41,7 @@ minetest.register_node(":lrfurn:longsofa", { end return itemstack end, + on_dig = unifieddyes.on_dig, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) if not clicker:is_player() then return itemstack diff --git a/homedecor_seating/misc.lua b/homedecor_seating/misc.lua index 1dd6d412..29121ff6 100644 --- a/homedecor_seating/misc.lua +++ b/homedecor_seating/misc.lua @@ -153,6 +153,7 @@ homedecor.register("kitchen_chair_padded", { after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y+0 -- where do I put my ass ? diff --git a/homedecor_seating/sofas.lua b/homedecor_seating/sofas.lua index eb8d3802..94febb19 100644 --- a/homedecor_seating/sofas.lua +++ b/homedecor_seating/sofas.lua @@ -41,6 +41,7 @@ minetest.register_node(":lrfurn:sofa", { end return itemstack end, + on_dig = unifieddyes.on_dig, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) if not clicker:is_player() then return itemstack diff --git a/homedecor_wardrobe/depends.txt b/homedecor_wardrobe/depends.txt index 48579180..bb7fec08 100644 --- a/homedecor_wardrobe/depends.txt +++ b/homedecor_wardrobe/depends.txt @@ -1,5 +1,7 @@ homedecor_common default +player_api homedecor_kitchen? homedecor_misc? +3d_armor? skinsdb? diff --git a/homedecor_windows_and_treatments/init.lua b/homedecor_windows_and_treatments/init.lua index 155221cd..3f17e48e 100644 --- a/homedecor_windows_and_treatments/init.lua +++ b/homedecor_windows_and_treatments/init.lua @@ -115,6 +115,7 @@ minetest.register_node(":homedecor:curtain_closed", { after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.set_node(pos, { name = "homedecor:curtain_open", param2 = node.param2 }) return itemstack @@ -137,6 +138,7 @@ minetest.register_node(":homedecor:curtain_open", { after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.set_node(pos, { name = "homedecor:curtain_closed", param2 = node.param2 }) return itemstack @@ -243,6 +245,7 @@ homedecor.register("shutter", { after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, }) homedecor.register("shutter_colored", { @@ -260,6 +263,7 @@ homedecor.register("shutter_colored", { after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, + on_dig = unifieddyes.on_dig, }) minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet") diff --git a/ilights/init.lua b/ilights/init.lua index 2716d5c2..dbddf427 100644 --- a/ilights/init.lua +++ b/ilights/init.lua @@ -201,7 +201,8 @@ for _, onoff in ipairs({"on", "off"}) do on_rightclick = ilights.toggle_light, mesecons = ilights.mesecons, digiline = ilights.digilines, - on_punch = digiline_on_punch + on_punch = digiline_on_punch, + on_dig = unifieddyes.on_dig, }) end diff --git a/lavalamp/init.lua b/lavalamp/init.lua index bf68aa93..39172c94 100644 --- a/lavalamp/init.lua +++ b/lavalamp/init.lua @@ -38,6 +38,7 @@ minetest.register_node("lavalamp:lavalamp", { groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, ud_param2_colorable = 1}, sounds = default.node_sound_glass_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) node.name = "lavalamp:lavalamp_off" minetest.swap_node(pos, node) diff --git a/led_marquee/init.lua b/led_marquee/init.lua index 8760a114..40580753 100644 --- a/led_marquee/init.lua +++ b/led_marquee/init.lua @@ -2,6 +2,13 @@ -- by Vanessa Dannenberg led_marquee = {} +led_marquee.scheduled_messages = {} + +led_marquee.message_minimum_time = tonumber(minetest.settings:get("led_marquee_message_minimum_time")) or 0.5 + +led_marquee.message_schedule_dtime = tonumber(minetest.settings:get("led_marquee_message_schedule_dtime")) or 0.2 +led_marquee.message_schedule_size = tonumber(minetest.settings:get("led_marquee_message_schedule_size")) or 10 +led_marquee.relay_timer = 0 local S if minetest.get_modpath("intllib") then @@ -128,7 +135,12 @@ local make_iso = function(s) local s2 = "" while i <= string.len(s) do if string.byte(s,i) > 159 then - s2 = s2..string.char(get_iso(string.sub(s, i, i+1))) + local ciso = get_iso(string.sub(s, i, i+1)) + if ciso >= 0 and ciso < 256 then + s2 = s2..string.char(ciso) + else + s2 = s2..string.char(127) + end i = i + 2 else s2 = s2..string.sub(s, i, i) @@ -143,7 +155,7 @@ end led_marquee.set_timer = function(pos, timeout) local timer = minetest.get_node_timer(pos) timer:stop() - if not timeout or timeout < 0.2 or timeout > 5 then return false end + if not timeout or timeout < led_marquee.message_minimum_time or timeout > 5 then return false end if timeout > 0 then local meta = minetest.get_meta(pos) @@ -184,7 +196,7 @@ led_marquee.scroll_text = function(pos, elapsed, skip) break end end - led_marquee.display_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1)) + led_marquee.schedule_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1)) meta:set_int("index", f) if not elapsed or elapsed < 0.2 then return false end @@ -213,6 +225,27 @@ led_marquee.decode_color = function(msg) end +minetest.register_globalstep(function(dtime) + if dtime <= led_marquee.message_schedule_dtime + and (#led_marquee.scheduled_messages) > 0 then + led_marquee.display_msg( + led_marquee.scheduled_messages[1].pos, + led_marquee.scheduled_messages[1].channel, + led_marquee.scheduled_messages[1].msg + ) + end + table.remove(led_marquee.scheduled_messages, 1) +end) + +led_marquee.schedule_msg = function(pos, channel, msg) + local idx = #led_marquee.scheduled_messages + led_marquee.scheduled_messages[idx+1] = { pos=pos, channel=channel, msg=msg } + + if idx >= led_marquee.message_schedule_size then + table.remove(led_marquee.scheduled_messages, 1) + end +end + led_marquee.display_msg = function(pos, channel, msg) msg = string.sub(msg, 1, 6144).." " if string.sub(msg,1,1) == string.char(255) then -- treat it as incoming UTF-8 @@ -312,13 +345,13 @@ local on_digiline_receive_string = function(pos, node, channel, msg) led_marquee.set_timer(pos, 0) msg = string.rep(" ", 2048) meta:set_string("last_msg", msg) - led_marquee.display_msg(pos, channel, msg) + led_marquee.schedule_msg(pos, channel, msg) meta:set_int("index", 1) elseif msg == "allon" then led_marquee.set_timer(pos, 0) msg = string.rep(string.char(144), 2048) meta:set_string("last_msg", msg) - led_marquee.display_msg(pos, channel, msg) + led_marquee.schedule_msg(pos, channel, msg) meta:set_int("index", 1) elseif msg == "start_scroll" then local timeout = meta:get_int("timeout") @@ -328,7 +361,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg) return elseif string.sub(msg, 1, 12) == "scroll_speed" then local timeout = tonumber(string.sub(msg, 13)) - led_marquee.set_timer(pos, timeout) + led_marquee.set_timer(pos, math.max(timeout, led_marquee.message_minimum_time)) elseif string.sub(msg, 1, 11) == "scroll_step" then local skip = tonumber(string.sub(msg, 12)) led_marquee.scroll_text(pos, nil, skip) @@ -343,7 +376,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg) led_marquee.set_timer(pos, 0) local last_msg = meta:get_string("last_msg") meta:set_string("last_msg", msg) - led_marquee.display_msg(pos, channel, msg) + led_marquee.schedule_msg(pos, channel, msg) if last_msg ~= msg then meta:set_int("index", 1) end @@ -358,7 +391,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg) end elseif msg and type(msg) == "number" then meta:set_string("last_msg", tostring(msg)) - led_marquee.display_msg(pos, channel, tostring(msg)) + led_marquee.schedule_msg(pos, channel, tostring(msg)) meta:set_int("index", 1) end end diff --git a/maptools/.travis.yml b/maptools/.travis.yml index 1c4c0d8a..211285ac 100644 --- a/maptools/.travis.yml +++ b/maptools/.travis.yml @@ -1,15 +1,15 @@ -language: generic +dist: bionic +language: python -addons: - apt: - packages: - - luarocks +python: + - 3.7.1 install: - - pyenv global 3.6.3 - - pip3 install --user pre-commit + - sudo apt-get update -qq + - sudo apt-get install -qqq luarocks + - pip3 install pre-commit - luarocks install --local luacheck script: - - $HOME/.local/bin/pre-commit run --all-files + - pre-commit run --all-files - $HOME/.luarocks/bin/luacheck . diff --git a/maptools/textures/fire_basic_flame.png b/maptools/textures/fire_basic_flame.png index e3c52b0d..aa77897f 100644 Binary files a/maptools/textures/fire_basic_flame.png and b/maptools/textures/fire_basic_flame.png differ diff --git a/maptools/textures/fire_basic_flame_animated.png b/maptools/textures/fire_basic_flame_animated.png index 17b4cebd..11383f38 100644 Binary files a/maptools/textures/fire_basic_flame_animated.png and b/maptools/textures/fire_basic_flame_animated.png differ diff --git a/maptools/textures/maptools_adminpick.png b/maptools/textures/maptools_adminpick.png index 17143787..3ec72a44 100644 Binary files a/maptools/textures/maptools_adminpick.png and b/maptools/textures/maptools_adminpick.png differ diff --git a/maptools/textures/maptools_adminpick_with_drops.png b/maptools/textures/maptools_adminpick_with_drops.png index 8f7cf7b3..ed706ce8 100644 Binary files a/maptools/textures/maptools_adminpick_with_drops.png and b/maptools/textures/maptools_adminpick_with_drops.png differ diff --git a/maptools/textures/maptools_grass_side_12.png b/maptools/textures/maptools_grass_side_12.png index 6b264356..1a2789b5 100644 Binary files a/maptools/textures/maptools_grass_side_12.png and b/maptools/textures/maptools_grass_side_12.png differ diff --git a/maptools/textures/maptools_grass_side_8.png b/maptools/textures/maptools_grass_side_8.png index 6db2502d..31812639 100644 Binary files a/maptools/textures/maptools_grass_side_8.png and b/maptools/textures/maptools_grass_side_8.png differ diff --git a/maptools/textures/maptools_infinitefuel.png b/maptools/textures/maptools_infinitefuel.png index de4b43e1..3b80ae50 100644 Binary files a/maptools/textures/maptools_infinitefuel.png and b/maptools/textures/maptools_infinitefuel.png differ diff --git a/mesecons/textures/jeija_close_window.png b/mesecons/textures/jeija_close_window.png index 5c27c6c3..8ab7783e 100644 Binary files a/mesecons/textures/jeija_close_window.png and b/mesecons/textures/jeija_close_window.png differ diff --git a/mesecons/textures/jeija_microcontroller_LED_A.png b/mesecons/textures/jeija_microcontroller_LED_A.png index 64526cf2..6f8f056f 100644 Binary files a/mesecons/textures/jeija_microcontroller_LED_A.png and b/mesecons/textures/jeija_microcontroller_LED_A.png differ diff --git a/mesecons/textures/jeija_microcontroller_LED_B.png b/mesecons/textures/jeija_microcontroller_LED_B.png index 1f7b4514..7cc58eaf 100644 Binary files a/mesecons/textures/jeija_microcontroller_LED_B.png and b/mesecons/textures/jeija_microcontroller_LED_B.png differ diff --git a/mesecons/textures/jeija_microcontroller_LED_C.png b/mesecons/textures/jeija_microcontroller_LED_C.png index 399cc2c6..3046d24c 100644 Binary files a/mesecons/textures/jeija_microcontroller_LED_C.png and b/mesecons/textures/jeija_microcontroller_LED_C.png differ diff --git a/mesecons/textures/jeija_microcontroller_LED_D.png b/mesecons/textures/jeija_microcontroller_LED_D.png index 506389c0..ed46d974 100644 Binary files a/mesecons/textures/jeija_microcontroller_LED_D.png and b/mesecons/textures/jeija_microcontroller_LED_D.png differ diff --git a/mesecons/textures/jeija_microcontroller_bottom.png b/mesecons/textures/jeija_microcontroller_bottom.png index 3a9161eb..7ae955c1 100644 Binary files a/mesecons/textures/jeija_microcontroller_bottom.png and b/mesecons/textures/jeija_microcontroller_bottom.png differ diff --git a/mesecons/textures/jeija_microcontroller_sides.png b/mesecons/textures/jeija_microcontroller_sides.png index b367644b..40f4b60c 100644 Binary files a/mesecons/textures/jeija_microcontroller_sides.png and b/mesecons/textures/jeija_microcontroller_sides.png differ diff --git a/mesecons/textures/mesecons_wire_inv.png b/mesecons/textures/mesecons_wire_inv.png index a3930cbb..db2676c2 100644 Binary files a/mesecons/textures/mesecons_wire_inv.png and b/mesecons/textures/mesecons_wire_inv.png differ diff --git a/mesecons/textures/mesecons_wire_off.png b/mesecons/textures/mesecons_wire_off.png index 58164fa2..d41f6263 100644 Binary files a/mesecons/textures/mesecons_wire_off.png and b/mesecons/textures/mesecons_wire_off.png differ diff --git a/mesecons/textures/mesecons_wire_on.png b/mesecons/textures/mesecons_wire_on.png index 98a86c86..239356a0 100644 Binary files a/mesecons/textures/mesecons_wire_on.png and b/mesecons/textures/mesecons_wire_on.png differ diff --git a/mesecons_blinkyplant/doc/blinkyplant/preview.png b/mesecons_blinkyplant/doc/blinkyplant/preview.png old mode 100755 new mode 100644 index 40ce5b51..4c93b5ff Binary files a/mesecons_blinkyplant/doc/blinkyplant/preview.png and b/mesecons_blinkyplant/doc/blinkyplant/preview.png differ diff --git a/mesecons_blinkyplant/doc/blinkyplant/recipe.png b/mesecons_blinkyplant/doc/blinkyplant/recipe.png index 6f1e1484..afd572a4 100644 Binary files a/mesecons_blinkyplant/doc/blinkyplant/recipe.png and b/mesecons_blinkyplant/doc/blinkyplant/recipe.png differ diff --git a/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png b/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png index 4f507da1..a8c22fc4 100644 Binary files a/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png and b/mesecons_blinkyplant/textures/jeija_blinky_plant_off.png differ diff --git a/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png b/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png index f77a134f..3ac576db 100644 Binary files a/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png and b/mesecons_blinkyplant/textures/jeija_blinky_plant_on.png differ diff --git a/mesecons_button/doc/button/preview.png b/mesecons_button/doc/button/preview.png index b69f8f4f..8c54020a 100644 Binary files a/mesecons_button/doc/button/preview.png and b/mesecons_button/doc/button/preview.png differ diff --git a/mesecons_button/doc/button/recipe.png b/mesecons_button/doc/button/recipe.png index c6232b48..67d83cf5 100644 Binary files a/mesecons_button/doc/button/recipe.png and b/mesecons_button/doc/button/recipe.png differ diff --git a/mesecons_button/textures/jeija_wall_button_off.png b/mesecons_button/textures/jeija_wall_button_off.png index 0e3ff25c..d55f7c0a 100644 Binary files a/mesecons_button/textures/jeija_wall_button_off.png and b/mesecons_button/textures/jeija_wall_button_off.png differ diff --git a/mesecons_button/textures/jeija_wall_button_on.png b/mesecons_button/textures/jeija_wall_button_on.png index 1d974642..2286f539 100644 Binary files a/mesecons_button/textures/jeija_wall_button_on.png and b/mesecons_button/textures/jeija_wall_button_on.png differ diff --git a/mesecons_button/textures/jeija_wall_button_sides.png b/mesecons_button/textures/jeija_wall_button_sides.png index 9b79b574..59c72404 100644 Binary files a/mesecons_button/textures/jeija_wall_button_sides.png and b/mesecons_button/textures/jeija_wall_button_sides.png differ diff --git a/mesecons_commandblock/doc/commandblock/preview.png b/mesecons_commandblock/doc/commandblock/preview.png index d89cc7bc..50e2cc76 100644 Binary files a/mesecons_commandblock/doc/commandblock/preview.png and b/mesecons_commandblock/doc/commandblock/preview.png differ diff --git a/mesecons_commandblock/textures/jeija_commandblock_off.png b/mesecons_commandblock/textures/jeija_commandblock_off.png index c05b616a..1d989d9b 100644 Binary files a/mesecons_commandblock/textures/jeija_commandblock_off.png and b/mesecons_commandblock/textures/jeija_commandblock_off.png differ diff --git a/mesecons_commandblock/textures/jeija_commandblock_on.png b/mesecons_commandblock/textures/jeija_commandblock_on.png index 7fc35b66..555f8a3d 100644 Binary files a/mesecons_commandblock/textures/jeija_commandblock_on.png and b/mesecons_commandblock/textures/jeija_commandblock_on.png differ diff --git a/mesecons_delayer/doc/delayer/preview.png b/mesecons_delayer/doc/delayer/preview.png index c57c728b..d1909008 100644 Binary files a/mesecons_delayer/doc/delayer/preview.png and b/mesecons_delayer/doc/delayer/preview.png differ diff --git a/mesecons_delayer/doc/delayer/recipe.png b/mesecons_delayer/doc/delayer/recipe.png index ea394aac..3713b39a 100644 Binary files a/mesecons_delayer/doc/delayer/recipe.png and b/mesecons_delayer/doc/delayer/recipe.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_bottom.png b/mesecons_delayer/textures/mesecons_delayer_bottom.png index 2e49d311..2307b39f 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_bottom.png and b/mesecons_delayer/textures/mesecons_delayer_bottom.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_ends_off.png b/mesecons_delayer/textures/mesecons_delayer_ends_off.png index 0242deb0..9cbeb394 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_ends_off.png and b/mesecons_delayer/textures/mesecons_delayer_ends_off.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_ends_on.png b/mesecons_delayer/textures/mesecons_delayer_ends_on.png index 19ae0cba..446ef48f 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_ends_on.png and b/mesecons_delayer/textures/mesecons_delayer_ends_on.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_off_1.png b/mesecons_delayer/textures/mesecons_delayer_off_1.png index 7372b378..20d9efc3 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_off_1.png and b/mesecons_delayer/textures/mesecons_delayer_off_1.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_off_2.png b/mesecons_delayer/textures/mesecons_delayer_off_2.png index e34f0ac1..590d62f1 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_off_2.png and b/mesecons_delayer/textures/mesecons_delayer_off_2.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_off_3.png b/mesecons_delayer/textures/mesecons_delayer_off_3.png index 091adbcb..57ac4c42 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_off_3.png and b/mesecons_delayer/textures/mesecons_delayer_off_3.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_off_4.png b/mesecons_delayer/textures/mesecons_delayer_off_4.png index 7ecc9b62..94fc00cb 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_off_4.png and b/mesecons_delayer/textures/mesecons_delayer_off_4.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_on_1.png b/mesecons_delayer/textures/mesecons_delayer_on_1.png index 61f52f26..9369a4e5 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_on_1.png and b/mesecons_delayer/textures/mesecons_delayer_on_1.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_on_2.png b/mesecons_delayer/textures/mesecons_delayer_on_2.png index 7bd363f0..7984ef43 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_on_2.png and b/mesecons_delayer/textures/mesecons_delayer_on_2.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_on_3.png b/mesecons_delayer/textures/mesecons_delayer_on_3.png index b93f7250..1799cada 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_on_3.png and b/mesecons_delayer/textures/mesecons_delayer_on_3.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_on_4.png b/mesecons_delayer/textures/mesecons_delayer_on_4.png index ca90a1ec..0386112c 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_on_4.png and b/mesecons_delayer/textures/mesecons_delayer_on_4.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_sides_off.png b/mesecons_delayer/textures/mesecons_delayer_sides_off.png index 79f3d599..2c60cbbb 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_sides_off.png and b/mesecons_delayer/textures/mesecons_delayer_sides_off.png differ diff --git a/mesecons_delayer/textures/mesecons_delayer_sides_on.png b/mesecons_delayer/textures/mesecons_delayer_sides_on.png index 1c8edaab..4927557a 100644 Binary files a/mesecons_delayer/textures/mesecons_delayer_sides_on.png and b/mesecons_delayer/textures/mesecons_delayer_sides_on.png differ diff --git a/mesecons_detector/doc/nodedetector/description.html b/mesecons_detector/doc/nodedetector/description.html index ee8c09d7..4c62359b 100644 --- a/mesecons_detector/doc/nodedetector/description.html +++ b/mesecons_detector/doc/nodedetector/description.html @@ -1,8 +1,11 @@ The node detector is a receptor. It changes its state when either any node or a specific node is detected. Right-click it to set a nodename to scan for. -It can also receive digiline signals. You can either send "GET" and it will -respond with the detected nodename or you can send any other string and it will -set this string as the node to scan for. +It can also receive digiline signals. For example, you can send +{distance=4, scanname="default:dirt"} +to set distance to 4 and scan for dirt. You can omit either parameter. +There is also a command parameter: {command="get"} will respond +with the detected nodename and {command="scan"} will respond with +a boolean using the distance and nodename of the detector. Nodenames must include the mod they reside in, so for instance default:dirt, not just dirt. The distance parameter specifies how many blocks are between the node detector and the node to detect. Automatic scanning with Mesecons output only works when the detector is in an active block, but Digilines queries always work. diff --git a/mesecons_detector/doc/nodedetector/preview.png b/mesecons_detector/doc/nodedetector/preview.png index 1f781614..759a9fa9 100644 Binary files a/mesecons_detector/doc/nodedetector/preview.png and b/mesecons_detector/doc/nodedetector/preview.png differ diff --git a/mesecons_detector/doc/nodedetector/recipe.png b/mesecons_detector/doc/nodedetector/recipe.png index 958c7e66..13ab5703 100644 Binary files a/mesecons_detector/doc/nodedetector/recipe.png and b/mesecons_detector/doc/nodedetector/recipe.png differ diff --git a/mesecons_detector/doc/objectdetector/preview.png b/mesecons_detector/doc/objectdetector/preview.png index 85c4dea3..edee1109 100644 Binary files a/mesecons_detector/doc/objectdetector/preview.png and b/mesecons_detector/doc/objectdetector/preview.png differ diff --git a/mesecons_detector/doc/objectdetector/recipe.png b/mesecons_detector/doc/objectdetector/recipe.png index a1cee00f..0081b360 100644 Binary files a/mesecons_detector/doc/objectdetector/recipe.png and b/mesecons_detector/doc/objectdetector/recipe.png differ diff --git a/mesecons_detector/init.lua b/mesecons_detector/init.lua index fc7d4c3e..cdc7f923 100644 --- a/mesecons_detector/init.lua +++ b/mesecons_detector/init.lua @@ -189,28 +189,49 @@ local function node_detector_scan(pos) (frontname ~= "air" and frontname ~= "ignore" and scanname == "") end +local function node_detector_send_node_name(pos, node, channel, meta) + local distance = meta:get_int("distance") + local distance_max = mesecon.setting("node_detector_distance_max", 10) + if distance < 0 then distance = 0 end + if distance > distance_max then distance = distance_max end + local nodename = minetest.get_node( + vector.subtract(pos, vector.multiply(minetest.facedir_to_dir(node.param2), distance + 1)) + ).name + + digiline:receptor_send(pos, digiline.rules.default, channel, nodename) +end + -- set player name when receiving a digiline signal on a specific channel local node_detector_digiline = { effector = { action = function(pos, node, channel, msg) local meta = minetest.get_meta(pos) - local distance = meta:get_int("distance") - local distance_max = mesecon.setting("node_detector_distance_max", 10) - if distance < 0 then distance = 0 end - if distance > distance_max then distance = distance_max end - if channel ~= meta:get_string("digiline_channel") then return end - if msg == GET_COMMAND then - local nodename = minetest.get_node( - vector.subtract(pos, vector.multiply(minetest.facedir_to_dir(node.param2), distance + 1)) - ).name - - digiline:receptor_send(pos, digiline.rules.default, channel, nodename) + if type(msg) == "table" then + if msg.distance or msg.scanname then + if msg.distance then + meta:set_string("distance", msg.distance) + end + if msg.scanname then + meta:set_string("scanname", msg.scanname) + end + node_detector_make_formspec(pos) + end + if msg.command == "get" then + node_detector_send_node_name(pos, node, channel, meta) + elseif msg.command == "scan" then + local result = node_detector_scan(pos) + digiline:receptor_send(pos, digiline.rules.default, channel, result) + end else - meta:set_string("scanname", msg) - node_detector_make_formspec(pos) + if msg == GET_COMMAND then + node_detector_send_node_name(pos, node, channel, meta) + else + meta:set_string("scanname", msg) + node_detector_make_formspec(pos) + end end end, }, diff --git a/mesecons_detector/textures/jeija_node_detector_off.png b/mesecons_detector/textures/jeija_node_detector_off.png index 6d130ad6..bfd7b214 100644 Binary files a/mesecons_detector/textures/jeija_node_detector_off.png and b/mesecons_detector/textures/jeija_node_detector_off.png differ diff --git a/mesecons_detector/textures/jeija_node_detector_on.png b/mesecons_detector/textures/jeija_node_detector_on.png index 926a9d1d..69305ea3 100644 Binary files a/mesecons_detector/textures/jeija_node_detector_on.png and b/mesecons_detector/textures/jeija_node_detector_on.png differ diff --git a/mesecons_detector/textures/jeija_object_detector_off.png b/mesecons_detector/textures/jeija_object_detector_off.png index 825d78f6..104a12b0 100644 Binary files a/mesecons_detector/textures/jeija_object_detector_off.png and b/mesecons_detector/textures/jeija_object_detector_off.png differ diff --git a/mesecons_detector/textures/jeija_object_detector_on.png b/mesecons_detector/textures/jeija_object_detector_on.png index 96f8ba32..ccbdccbc 100644 Binary files a/mesecons_detector/textures/jeija_object_detector_on.png and b/mesecons_detector/textures/jeija_object_detector_on.png differ diff --git a/mesecons_extrawires/doc/corner/preview.png b/mesecons_extrawires/doc/corner/preview.png index 9713229a..7fbb0dc3 100644 Binary files a/mesecons_extrawires/doc/corner/preview.png and b/mesecons_extrawires/doc/corner/preview.png differ diff --git a/mesecons_extrawires/doc/corner/recipe.png b/mesecons_extrawires/doc/corner/recipe.png index ac85b017..ce6e86ea 100644 Binary files a/mesecons_extrawires/doc/corner/recipe.png and b/mesecons_extrawires/doc/corner/recipe.png differ diff --git a/mesecons_extrawires/doc/crossing/preview.png b/mesecons_extrawires/doc/crossing/preview.png index 66aaa054..b5466a57 100644 Binary files a/mesecons_extrawires/doc/crossing/preview.png and b/mesecons_extrawires/doc/crossing/preview.png differ diff --git a/mesecons_extrawires/doc/crossing/recipe.png b/mesecons_extrawires/doc/crossing/recipe.png index ac374013..6beac96d 100644 Binary files a/mesecons_extrawires/doc/crossing/recipe.png and b/mesecons_extrawires/doc/crossing/recipe.png differ diff --git a/mesecons_extrawires/doc/mese/preview.png b/mesecons_extrawires/doc/mese/preview.png index 3ce0ea42..ed1a1628 100644 Binary files a/mesecons_extrawires/doc/mese/preview.png and b/mesecons_extrawires/doc/mese/preview.png differ diff --git a/mesecons_extrawires/doc/mese/recipe.png b/mesecons_extrawires/doc/mese/recipe.png index 904cf0ba..e4bb08c1 100644 Binary files a/mesecons_extrawires/doc/mese/recipe.png and b/mesecons_extrawires/doc/mese/recipe.png differ diff --git a/mesecons_extrawires/doc/tjunction/preview.png b/mesecons_extrawires/doc/tjunction/preview.png index 4dec8418..8407d15b 100644 Binary files a/mesecons_extrawires/doc/tjunction/preview.png and b/mesecons_extrawires/doc/tjunction/preview.png differ diff --git a/mesecons_extrawires/doc/tjunction/recipe.png b/mesecons_extrawires/doc/tjunction/recipe.png index 86029417..7358d913 100644 Binary files a/mesecons_extrawires/doc/tjunction/recipe.png and b/mesecons_extrawires/doc/tjunction/recipe.png differ diff --git a/mesecons_extrawires/doc/vertical/preview.png b/mesecons_extrawires/doc/vertical/preview.png index aad6ea86..eea55714 100644 Binary files a/mesecons_extrawires/doc/vertical/preview.png and b/mesecons_extrawires/doc/vertical/preview.png differ diff --git a/mesecons_extrawires/doc/vertical/recipe.png b/mesecons_extrawires/doc/vertical/recipe.png index 83bc4980..b12ccdea 100644 Binary files a/mesecons_extrawires/doc/vertical/recipe.png and b/mesecons_extrawires/doc/vertical/recipe.png differ diff --git a/mesecons_fpga/doc/fpga/preview.png b/mesecons_fpga/doc/fpga/preview.png index c1563211..b4a2994f 100644 Binary files a/mesecons_fpga/doc/fpga/preview.png and b/mesecons_fpga/doc/fpga/preview.png differ diff --git a/mesecons_fpga/doc/fpga/recipe.png b/mesecons_fpga/doc/fpga/recipe.png index 1140bfac..edb14f4b 100644 Binary files a/mesecons_fpga/doc/fpga/recipe.png and b/mesecons_fpga/doc/fpga/recipe.png differ diff --git a/mesecons_fpga/doc/programmer/preview.png b/mesecons_fpga/doc/programmer/preview.png index 7437d396..b1bae7a2 100644 Binary files a/mesecons_fpga/doc/programmer/preview.png and b/mesecons_fpga/doc/programmer/preview.png differ diff --git a/mesecons_fpga/doc/programmer/recipe.png b/mesecons_fpga/doc/programmer/recipe.png index 778ec5fc..a7c691b3 100644 Binary files a/mesecons_fpga/doc/programmer/recipe.png and b/mesecons_fpga/doc/programmer/recipe.png differ diff --git a/mesecons_fpga/textures/jeija_fpga_programmer.png b/mesecons_fpga/textures/jeija_fpga_programmer.png index 9c0ba8f7..78e7fb1f 100644 Binary files a/mesecons_fpga/textures/jeija_fpga_programmer.png and b/mesecons_fpga/textures/jeija_fpga_programmer.png differ diff --git a/mesecons_fpga/textures/jeija_fpga_sides.png b/mesecons_fpga/textures/jeija_fpga_sides.png index e2d8e15d..ed4f97dd 100644 Binary files a/mesecons_fpga/textures/jeija_fpga_sides.png and b/mesecons_fpga/textures/jeija_fpga_sides.png differ diff --git a/mesecons_fpga/textures/jeija_fpga_top.png b/mesecons_fpga/textures/jeija_fpga_top.png index eaf1a1c9..8382486f 100644 Binary files a/mesecons_fpga/textures/jeija_fpga_top.png and b/mesecons_fpga/textures/jeija_fpga_top.png differ diff --git a/mesecons_gates/doc/and/preview.png b/mesecons_gates/doc/and/preview.png index b2b53015..d3b29365 100644 Binary files a/mesecons_gates/doc/and/preview.png and b/mesecons_gates/doc/and/preview.png differ diff --git a/mesecons_gates/doc/and/recipe.png b/mesecons_gates/doc/and/recipe.png index ae6bf633..b81680a1 100644 Binary files a/mesecons_gates/doc/and/recipe.png and b/mesecons_gates/doc/and/recipe.png differ diff --git a/mesecons_gates/doc/diode/preview.png b/mesecons_gates/doc/diode/preview.png index ced541bd..dc961d90 100644 Binary files a/mesecons_gates/doc/diode/preview.png and b/mesecons_gates/doc/diode/preview.png differ diff --git a/mesecons_gates/doc/diode/recipe.png b/mesecons_gates/doc/diode/recipe.png index 71086bf1..bce3562d 100644 Binary files a/mesecons_gates/doc/diode/recipe.png and b/mesecons_gates/doc/diode/recipe.png differ diff --git a/mesecons_gates/doc/nand/preview.png b/mesecons_gates/doc/nand/preview.png index d8db780f..364d6c37 100644 Binary files a/mesecons_gates/doc/nand/preview.png and b/mesecons_gates/doc/nand/preview.png differ diff --git a/mesecons_gates/doc/nand/recipe.png b/mesecons_gates/doc/nand/recipe.png index e6118b30..a1ee6189 100644 Binary files a/mesecons_gates/doc/nand/recipe.png and b/mesecons_gates/doc/nand/recipe.png differ diff --git a/mesecons_gates/doc/nor/preview.png b/mesecons_gates/doc/nor/preview.png index b6d27813..d733fd7d 100644 Binary files a/mesecons_gates/doc/nor/preview.png and b/mesecons_gates/doc/nor/preview.png differ diff --git a/mesecons_gates/doc/nor/recipe.png b/mesecons_gates/doc/nor/recipe.png index a2063c72..a801d8ff 100644 Binary files a/mesecons_gates/doc/nor/recipe.png and b/mesecons_gates/doc/nor/recipe.png differ diff --git a/mesecons_gates/doc/not/preview.png b/mesecons_gates/doc/not/preview.png index 4a33cd17..3680c155 100644 Binary files a/mesecons_gates/doc/not/preview.png and b/mesecons_gates/doc/not/preview.png differ diff --git a/mesecons_gates/doc/not/recipe.png b/mesecons_gates/doc/not/recipe.png index ee1c0d6b..b5ec6a87 100644 Binary files a/mesecons_gates/doc/not/recipe.png and b/mesecons_gates/doc/not/recipe.png differ diff --git a/mesecons_gates/doc/or/preview.png b/mesecons_gates/doc/or/preview.png index b7a8cdcf..0c46aa1e 100644 Binary files a/mesecons_gates/doc/or/preview.png and b/mesecons_gates/doc/or/preview.png differ diff --git a/mesecons_gates/doc/or/recipe.png b/mesecons_gates/doc/or/recipe.png index b94169d5..58a12564 100644 Binary files a/mesecons_gates/doc/or/recipe.png and b/mesecons_gates/doc/or/recipe.png differ diff --git a/mesecons_gates/doc/xor/preview.png b/mesecons_gates/doc/xor/preview.png index 3d3941ef..0bc24c6c 100644 Binary files a/mesecons_gates/doc/xor/preview.png and b/mesecons_gates/doc/xor/preview.png differ diff --git a/mesecons_gates/doc/xor/recipe.png b/mesecons_gates/doc/xor/recipe.png index 1e129bf2..f7108993 100644 Binary files a/mesecons_gates/doc/xor/recipe.png and b/mesecons_gates/doc/xor/recipe.png differ diff --git a/mesecons_gates/textures/jeija_gate_and.png b/mesecons_gates/textures/jeija_gate_and.png index 0ddc0434..825a22be 100644 Binary files a/mesecons_gates/textures/jeija_gate_and.png and b/mesecons_gates/textures/jeija_gate_and.png differ diff --git a/mesecons_gates/textures/jeija_gate_diode.png b/mesecons_gates/textures/jeija_gate_diode.png index ffa403f7..49c2076a 100644 Binary files a/mesecons_gates/textures/jeija_gate_diode.png and b/mesecons_gates/textures/jeija_gate_diode.png differ diff --git a/mesecons_gates/textures/jeija_gate_nand.png b/mesecons_gates/textures/jeija_gate_nand.png index 0e4294eb..f14567bc 100644 Binary files a/mesecons_gates/textures/jeija_gate_nand.png and b/mesecons_gates/textures/jeija_gate_nand.png differ diff --git a/mesecons_gates/textures/jeija_gate_nor.png b/mesecons_gates/textures/jeija_gate_nor.png index c4298e38..c4218bc1 100644 Binary files a/mesecons_gates/textures/jeija_gate_nor.png and b/mesecons_gates/textures/jeija_gate_nor.png differ diff --git a/mesecons_gates/textures/jeija_gate_not.png b/mesecons_gates/textures/jeija_gate_not.png index 939fb761..27b7281a 100644 Binary files a/mesecons_gates/textures/jeija_gate_not.png and b/mesecons_gates/textures/jeija_gate_not.png differ diff --git a/mesecons_gates/textures/jeija_gate_off.png b/mesecons_gates/textures/jeija_gate_off.png index 44017b0f..2f77aeb1 100644 Binary files a/mesecons_gates/textures/jeija_gate_off.png and b/mesecons_gates/textures/jeija_gate_off.png differ diff --git a/mesecons_gates/textures/jeija_gate_on.png b/mesecons_gates/textures/jeija_gate_on.png index 47028a89..406e4f6e 100644 Binary files a/mesecons_gates/textures/jeija_gate_on.png and b/mesecons_gates/textures/jeija_gate_on.png differ diff --git a/mesecons_gates/textures/jeija_gate_or.png b/mesecons_gates/textures/jeija_gate_or.png index 09f06613..3180add9 100644 Binary files a/mesecons_gates/textures/jeija_gate_or.png and b/mesecons_gates/textures/jeija_gate_or.png differ diff --git a/mesecons_gates/textures/jeija_gate_xor.png b/mesecons_gates/textures/jeija_gate_xor.png index afbd6abe..df13e969 100644 Binary files a/mesecons_gates/textures/jeija_gate_xor.png and b/mesecons_gates/textures/jeija_gate_xor.png differ diff --git a/mesecons_hydroturbine/doc/waterturbine/preview.png b/mesecons_hydroturbine/doc/waterturbine/preview.png index 14be16e5..b45ca238 100644 Binary files a/mesecons_hydroturbine/doc/waterturbine/preview.png and b/mesecons_hydroturbine/doc/waterturbine/preview.png differ diff --git a/mesecons_hydroturbine/doc/waterturbine/recipe.png b/mesecons_hydroturbine/doc/waterturbine/recipe.png index 8eb53651..8c8141ee 100644 Binary files a/mesecons_hydroturbine/doc/waterturbine/recipe.png and b/mesecons_hydroturbine/doc/waterturbine/recipe.png differ diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png index 4cc9f20a..7453d610 100644 Binary files a/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png differ diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png index 89975e8d..6e128340 100644 Binary files a/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png differ diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png index 759388af..c8a2f396 100644 Binary files a/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png differ diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png index 45a720b1..c6ed54d2 100644 Binary files a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png differ diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png index e609dd26..2d6b9fae 100644 Binary files a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png differ diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png index ac4df83c..8d93f9d1 100644 Binary files a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png differ diff --git a/mesecons_insulated/doc/insulated/preview.png b/mesecons_insulated/doc/insulated/preview.png index bf544e88..04356d57 100644 Binary files a/mesecons_insulated/doc/insulated/preview.png and b/mesecons_insulated/doc/insulated/preview.png differ diff --git a/mesecons_insulated/doc/insulated/recipe.png b/mesecons_insulated/doc/insulated/recipe.png index f2a731a4..e2a7f44c 100644 Binary files a/mesecons_insulated/doc/insulated/recipe.png and b/mesecons_insulated/doc/insulated/recipe.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png b/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png index 85ca90b3..dcc96c7c 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png and b/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png b/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png index 772d9a63..321f9312 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png and b/mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png b/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png index 89a83855..d457dde7 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png and b/mesecons_insulated/textures/jeija_insulated_wire_ends_off.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png b/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png index 75cf4359..48df808d 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png and b/mesecons_insulated/textures/jeija_insulated_wire_ends_on.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png b/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png index db33f149..da933e0a 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png and b/mesecons_insulated/textures/jeija_insulated_wire_sides_off.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png b/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png index f76e9a87..cdc37981 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png and b/mesecons_insulated/textures/jeija_insulated_wire_sides_on.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png b/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png index a897b290..451fbc26 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png and b/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_off.png differ diff --git a/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png b/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png index 8fc312b1..e30dad4f 100644 Binary files a/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png and b/mesecons_insulated/textures/jeija_insulated_wire_tjunction_tb_on.png differ diff --git a/mesecons_lamp/doc/lamp/preview.png b/mesecons_lamp/doc/lamp/preview.png index a581cb3c..5de07f08 100644 Binary files a/mesecons_lamp/doc/lamp/preview.png and b/mesecons_lamp/doc/lamp/preview.png differ diff --git a/mesecons_lamp/doc/lamp/recipe.png b/mesecons_lamp/doc/lamp/recipe.png index 77570bd3..145e6f3a 100644 Binary files a/mesecons_lamp/doc/lamp/recipe.png and b/mesecons_lamp/doc/lamp/recipe.png differ diff --git a/mesecons_lamp/textures/jeija_meselamp.png b/mesecons_lamp/textures/jeija_meselamp.png index 5456ee98..b0bc8179 100644 Binary files a/mesecons_lamp/textures/jeija_meselamp.png and b/mesecons_lamp/textures/jeija_meselamp.png differ diff --git a/mesecons_lamp/textures/jeija_meselamp_off.png b/mesecons_lamp/textures/jeija_meselamp_off.png index 67bd7fd3..be6ad5f3 100644 Binary files a/mesecons_lamp/textures/jeija_meselamp_off.png and b/mesecons_lamp/textures/jeija_meselamp_off.png differ diff --git a/mesecons_lamp/textures/jeija_meselamp_on.png b/mesecons_lamp/textures/jeija_meselamp_on.png index 2316e00e..a91e1b1b 100644 Binary files a/mesecons_lamp/textures/jeija_meselamp_on.png and b/mesecons_lamp/textures/jeija_meselamp_on.png differ diff --git a/mesecons_lightstone/doc/lightstone_blue/preview.png b/mesecons_lightstone/doc/lightstone_blue/preview.png index 579f7195..085c6194 100644 Binary files a/mesecons_lightstone/doc/lightstone_blue/preview.png and b/mesecons_lightstone/doc/lightstone_blue/preview.png differ diff --git a/mesecons_lightstone/doc/lightstone_blue/recipe.png b/mesecons_lightstone/doc/lightstone_blue/recipe.png index ce8ebd70..f72d00f0 100644 Binary files a/mesecons_lightstone/doc/lightstone_blue/recipe.png and b/mesecons_lightstone/doc/lightstone_blue/recipe.png differ diff --git a/mesecons_lightstone/doc/lightstone_darkgrey/preview.png b/mesecons_lightstone/doc/lightstone_darkgrey/preview.png index 56fe6ea4..f24c8ab3 100644 Binary files a/mesecons_lightstone/doc/lightstone_darkgrey/preview.png and b/mesecons_lightstone/doc/lightstone_darkgrey/preview.png differ diff --git a/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png b/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png index fed0db27..193a37da 100644 Binary files a/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png and b/mesecons_lightstone/doc/lightstone_darkgrey/recipe.png differ diff --git a/mesecons_lightstone/doc/lightstone_green/preview.png b/mesecons_lightstone/doc/lightstone_green/preview.png index 9efc7741..1cff1840 100644 Binary files a/mesecons_lightstone/doc/lightstone_green/preview.png and b/mesecons_lightstone/doc/lightstone_green/preview.png differ diff --git a/mesecons_lightstone/doc/lightstone_green/recipe.png b/mesecons_lightstone/doc/lightstone_green/recipe.png index 66900641..35b3523b 100644 Binary files a/mesecons_lightstone/doc/lightstone_green/recipe.png and b/mesecons_lightstone/doc/lightstone_green/recipe.png differ diff --git a/mesecons_lightstone/doc/lightstone_lightgrey/preview.png b/mesecons_lightstone/doc/lightstone_lightgrey/preview.png index 0084fa3f..0347c216 100644 Binary files a/mesecons_lightstone/doc/lightstone_lightgrey/preview.png and b/mesecons_lightstone/doc/lightstone_lightgrey/preview.png differ diff --git a/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png b/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png index e790012d..37dba5bb 100644 Binary files a/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png and b/mesecons_lightstone/doc/lightstone_lightgrey/recipe.png differ diff --git a/mesecons_lightstone/doc/lightstone_red/preview.png b/mesecons_lightstone/doc/lightstone_red/preview.png index 5fd3eba9..f802d3dc 100644 Binary files a/mesecons_lightstone/doc/lightstone_red/preview.png and b/mesecons_lightstone/doc/lightstone_red/preview.png differ diff --git a/mesecons_lightstone/doc/lightstone_red/recipe.png b/mesecons_lightstone/doc/lightstone_red/recipe.png index 7791a99f..dd5811ae 100644 Binary files a/mesecons_lightstone/doc/lightstone_red/recipe.png and b/mesecons_lightstone/doc/lightstone_red/recipe.png differ diff --git a/mesecons_lightstone/doc/lightstone_yellow/preview.png b/mesecons_lightstone/doc/lightstone_yellow/preview.png index fb9f644d..fa975c58 100644 Binary files a/mesecons_lightstone/doc/lightstone_yellow/preview.png and b/mesecons_lightstone/doc/lightstone_yellow/preview.png differ diff --git a/mesecons_lightstone/doc/lightstone_yellow/recipe.png b/mesecons_lightstone/doc/lightstone_yellow/recipe.png index f17e9d44..1ca449f6 100644 Binary files a/mesecons_lightstone/doc/lightstone_yellow/recipe.png and b/mesecons_lightstone/doc/lightstone_yellow/recipe.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_blue_off.png b/mesecons_lightstone/textures/jeija_lightstone_blue_off.png index 09acc228..87f753c4 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_blue_off.png and b/mesecons_lightstone/textures/jeija_lightstone_blue_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_blue_on.png b/mesecons_lightstone/textures/jeija_lightstone_blue_on.png index 93c86389..008a5fe6 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_blue_on.png and b/mesecons_lightstone/textures/jeija_lightstone_blue_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_cyan_off.png b/mesecons_lightstone/textures/jeija_lightstone_cyan_off.png index 53151100..1c9168c4 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_cyan_off.png and b/mesecons_lightstone/textures/jeija_lightstone_cyan_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_cyan_on.png b/mesecons_lightstone/textures/jeija_lightstone_cyan_on.png index 200345c5..92edf58b 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_cyan_on.png and b/mesecons_lightstone/textures/jeija_lightstone_cyan_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png b/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png index 7e5aae73..f7ded2a1 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png and b/mesecons_lightstone/textures/jeija_lightstone_darkgray_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png b/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png index e6d4d005..cfffb096 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png and b/mesecons_lightstone/textures/jeija_lightstone_darkgray_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_gray_off.png b/mesecons_lightstone/textures/jeija_lightstone_gray_off.png index f168fc2c..1c5c28d7 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_gray_off.png and b/mesecons_lightstone/textures/jeija_lightstone_gray_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_gray_on.png b/mesecons_lightstone/textures/jeija_lightstone_gray_on.png index 24c54704..ba067ba0 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_gray_on.png and b/mesecons_lightstone/textures/jeija_lightstone_gray_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_green_off.png b/mesecons_lightstone/textures/jeija_lightstone_green_off.png index 2f214faf..9051fee2 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_green_off.png and b/mesecons_lightstone/textures/jeija_lightstone_green_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_green_on.png b/mesecons_lightstone/textures/jeija_lightstone_green_on.png index 225bf4ea..0cadbc9c 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_green_on.png and b/mesecons_lightstone/textures/jeija_lightstone_green_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_magenta_off.png b/mesecons_lightstone/textures/jeija_lightstone_magenta_off.png index 43fa5244..9c50f684 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_magenta_off.png and b/mesecons_lightstone/textures/jeija_lightstone_magenta_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_magenta_on.png b/mesecons_lightstone/textures/jeija_lightstone_magenta_on.png index 8f28b7c9..d46f2952 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_magenta_on.png and b/mesecons_lightstone/textures/jeija_lightstone_magenta_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_orange_off.png b/mesecons_lightstone/textures/jeija_lightstone_orange_off.png index 4bf206e5..f62bc62f 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_orange_off.png and b/mesecons_lightstone/textures/jeija_lightstone_orange_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_orange_on.png b/mesecons_lightstone/textures/jeija_lightstone_orange_on.png index bcba4d2d..e3935851 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_orange_on.png and b/mesecons_lightstone/textures/jeija_lightstone_orange_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_pink_off.png b/mesecons_lightstone/textures/jeija_lightstone_pink_off.png index ee265f98..89a358c6 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_pink_off.png and b/mesecons_lightstone/textures/jeija_lightstone_pink_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_pink_on.png b/mesecons_lightstone/textures/jeija_lightstone_pink_on.png index ba851109..8df940b1 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_pink_on.png and b/mesecons_lightstone/textures/jeija_lightstone_pink_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_red_off.png b/mesecons_lightstone/textures/jeija_lightstone_red_off.png index 3c828b20..32c22cda 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_red_off.png and b/mesecons_lightstone/textures/jeija_lightstone_red_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_red_on.png b/mesecons_lightstone/textures/jeija_lightstone_red_on.png index 512b0fe4..b1ffd57d 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_red_on.png and b/mesecons_lightstone/textures/jeija_lightstone_red_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_violet_off.png b/mesecons_lightstone/textures/jeija_lightstone_violet_off.png index 83b5e2d5..514528c3 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_violet_off.png and b/mesecons_lightstone/textures/jeija_lightstone_violet_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_violet_on.png b/mesecons_lightstone/textures/jeija_lightstone_violet_on.png index 2b3eb2eb..d607f323 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_violet_on.png and b/mesecons_lightstone/textures/jeija_lightstone_violet_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_white_off.png b/mesecons_lightstone/textures/jeija_lightstone_white_off.png index 78338c86..ddb7ebb8 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_white_off.png and b/mesecons_lightstone/textures/jeija_lightstone_white_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_white_on.png b/mesecons_lightstone/textures/jeija_lightstone_white_on.png index 792d89df..9caac0c6 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_white_on.png and b/mesecons_lightstone/textures/jeija_lightstone_white_on.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png b/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png index 2e7fed06..5280e91a 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png and b/mesecons_lightstone/textures/jeija_lightstone_yellow_off.png differ diff --git a/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png b/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png index 8943acac..806efbe1 100644 Binary files a/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png and b/mesecons_lightstone/textures/jeija_lightstone_yellow_on.png differ diff --git a/mesecons_luacontroller/doc/luacontroller/preview.png b/mesecons_luacontroller/doc/luacontroller/preview.png index f16c9d0d..d5babfc1 100644 Binary files a/mesecons_luacontroller/doc/luacontroller/preview.png and b/mesecons_luacontroller/doc/luacontroller/preview.png differ diff --git a/mesecons_luacontroller/doc/luacontroller/recipe.png b/mesecons_luacontroller/doc/luacontroller/recipe.png index 529b66d8..fca9b061 100644 Binary files a/mesecons_luacontroller/doc/luacontroller/recipe.png and b/mesecons_luacontroller/doc/luacontroller/recipe.png differ diff --git a/mesecons_luacontroller/textures/jeija_luac_background.png b/mesecons_luacontroller/textures/jeija_luac_background.png index 40b427eb..f2a07e1b 100644 Binary files a/mesecons_luacontroller/textures/jeija_luac_background.png and b/mesecons_luacontroller/textures/jeija_luac_background.png differ diff --git a/mesecons_luacontroller/textures/jeija_luac_runbutton.png b/mesecons_luacontroller/textures/jeija_luac_runbutton.png index 157507f4..f43b571c 100644 Binary files a/mesecons_luacontroller/textures/jeija_luac_runbutton.png and b/mesecons_luacontroller/textures/jeija_luac_runbutton.png differ diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png index a187e8ed..c6182cc5 100644 Binary files a/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png and b/mesecons_luacontroller/textures/jeija_luacontroller_LED_A.png differ diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png index 738ba968..04c2da07 100644 Binary files a/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png and b/mesecons_luacontroller/textures/jeija_luacontroller_LED_B.png differ diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png index abe0fe6b..01f6ae48 100644 Binary files a/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png and b/mesecons_luacontroller/textures/jeija_luacontroller_LED_C.png differ diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png b/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png index cc101706..6c8a26f1 100644 Binary files a/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png and b/mesecons_luacontroller/textures/jeija_luacontroller_LED_D.png differ diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png b/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png index d1a17af2..c9e1144f 100644 Binary files a/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png and b/mesecons_luacontroller/textures/jeija_luacontroller_burnt_top.png differ diff --git a/mesecons_luacontroller/textures/jeija_luacontroller_top.png b/mesecons_luacontroller/textures/jeija_luacontroller_top.png index 3128230e..848f4171 100644 Binary files a/mesecons_luacontroller/textures/jeija_luacontroller_top.png and b/mesecons_luacontroller/textures/jeija_luacontroller_top.png differ diff --git a/mesecons_materials/doc/fiber/preview.png b/mesecons_materials/doc/fiber/preview.png index cad9645f..4b5dc058 100644 Binary files a/mesecons_materials/doc/fiber/preview.png and b/mesecons_materials/doc/fiber/preview.png differ diff --git a/mesecons_materials/doc/fiber/recipe.png b/mesecons_materials/doc/fiber/recipe.png index 7a53123e..689adf68 100644 Binary files a/mesecons_materials/doc/fiber/recipe.png and b/mesecons_materials/doc/fiber/recipe.png differ diff --git a/mesecons_materials/doc/glue/preview.png b/mesecons_materials/doc/glue/preview.png index 0158f9cb..71a58ef7 100644 Binary files a/mesecons_materials/doc/glue/preview.png and b/mesecons_materials/doc/glue/preview.png differ diff --git a/mesecons_materials/doc/glue/recipe.png b/mesecons_materials/doc/glue/recipe.png index b20ce660..763e369b 100644 Binary files a/mesecons_materials/doc/glue/recipe.png and b/mesecons_materials/doc/glue/recipe.png differ diff --git a/mesecons_materials/doc/silicon/preview.png b/mesecons_materials/doc/silicon/preview.png index cd52dbdd..452ed403 100644 Binary files a/mesecons_materials/doc/silicon/preview.png and b/mesecons_materials/doc/silicon/preview.png differ diff --git a/mesecons_materials/doc/silicon/recipe.png b/mesecons_materials/doc/silicon/recipe.png index 9e8b3321..d73a6c28 100644 Binary files a/mesecons_materials/doc/silicon/recipe.png and b/mesecons_materials/doc/silicon/recipe.png differ diff --git a/mesecons_materials/textures/mesecons_fiber.png b/mesecons_materials/textures/mesecons_fiber.png index e8c7b088..2a4b231b 100644 Binary files a/mesecons_materials/textures/mesecons_fiber.png and b/mesecons_materials/textures/mesecons_fiber.png differ diff --git a/mesecons_materials/textures/mesecons_glue.png b/mesecons_materials/textures/mesecons_glue.png index 2f351d16..28171f46 100644 Binary files a/mesecons_materials/textures/mesecons_glue.png and b/mesecons_materials/textures/mesecons_glue.png differ diff --git a/mesecons_materials/textures/mesecons_silicon.png b/mesecons_materials/textures/mesecons_silicon.png index a7b0d521..7014f3ff 100644 Binary files a/mesecons_materials/textures/mesecons_silicon.png and b/mesecons_materials/textures/mesecons_silicon.png differ diff --git a/mesecons_microcontroller/textures/jeija_microcontroller_top.png b/mesecons_microcontroller/textures/jeija_microcontroller_top.png index 438c9346..e8ec99e8 100644 Binary files a/mesecons_microcontroller/textures/jeija_microcontroller_top.png and b/mesecons_microcontroller/textures/jeija_microcontroller_top.png differ diff --git a/mesecons_movestones/doc/movestone/preview.png b/mesecons_movestones/doc/movestone/preview.png index bda64db1..fb6ab7cc 100644 Binary files a/mesecons_movestones/doc/movestone/preview.png and b/mesecons_movestones/doc/movestone/preview.png differ diff --git a/mesecons_movestones/doc/movestone/recipe.png b/mesecons_movestones/doc/movestone/recipe.png index f3d45dfc..61165b1c 100644 Binary files a/mesecons_movestones/doc/movestone/recipe.png and b/mesecons_movestones/doc/movestone/recipe.png differ diff --git a/mesecons_movestones/doc/movestone_sticky/preview.png b/mesecons_movestones/doc/movestone_sticky/preview.png index 85f92139..b9b2302f 100644 Binary files a/mesecons_movestones/doc/movestone_sticky/preview.png and b/mesecons_movestones/doc/movestone_sticky/preview.png differ diff --git a/mesecons_movestones/doc/movestone_sticky/recipe.png b/mesecons_movestones/doc/movestone_sticky/recipe.png index 55338f40..4ad08d94 100644 Binary files a/mesecons_movestones/doc/movestone_sticky/recipe.png and b/mesecons_movestones/doc/movestone_sticky/recipe.png differ diff --git a/mesecons_movestones/textures/jeija_movestone_arrows.png b/mesecons_movestones/textures/jeija_movestone_arrows.png index 358c357f..e1f2172b 100644 Binary files a/mesecons_movestones/textures/jeija_movestone_arrows.png and b/mesecons_movestones/textures/jeija_movestone_arrows.png differ diff --git a/mesecons_movestones/textures/jeija_movestone_side.png b/mesecons_movestones/textures/jeija_movestone_side.png index de753ef9..971ee76f 100644 Binary files a/mesecons_movestones/textures/jeija_movestone_side.png and b/mesecons_movestones/textures/jeija_movestone_side.png differ diff --git a/mesecons_movestones/textures/jeija_sticky_movestone.png b/mesecons_movestones/textures/jeija_sticky_movestone.png index 8953cf12..cab3e965 100644 Binary files a/mesecons_movestones/textures/jeija_sticky_movestone.png and b/mesecons_movestones/textures/jeija_sticky_movestone.png differ diff --git a/mesecons_mvps/init.lua b/mesecons_mvps/init.lua index 7b90c9f3..495e93b1 100644 --- a/mesecons_mvps/init.lua +++ b/mesecons_mvps/init.lua @@ -225,8 +225,8 @@ function mesecon.mvps_move_objects(pos, dir, nodestack, movefactor) for k, v in pairs(pos) do local edge1, edge2 if k ~= dir_k then - edge1 = v - 0.51 -- More than 0.5 to move objects near to the stack. - edge2 = v + 0.51 + edge1 = v - 0.499 -- Slightly less than 0.5 so that players next to the stack don't get dragged with it + edge2 = v + 0.499 else edge1 = v - 0.5 * dir_l edge2 = v + (#nodestack + 0.5 * movefactor) * dir_l diff --git a/mesecons_noteblock/doc/noteblock/preview.png b/mesecons_noteblock/doc/noteblock/preview.png index c4991fba..81a82f51 100644 Binary files a/mesecons_noteblock/doc/noteblock/preview.png and b/mesecons_noteblock/doc/noteblock/preview.png differ diff --git a/mesecons_noteblock/doc/noteblock/recipe.png b/mesecons_noteblock/doc/noteblock/recipe.png index d3c3675d..2023b44e 100644 Binary files a/mesecons_noteblock/doc/noteblock/recipe.png and b/mesecons_noteblock/doc/noteblock/recipe.png differ diff --git a/mesecons_noteblock/textures/mesecons_noteblock.png b/mesecons_noteblock/textures/mesecons_noteblock.png index 7158a49b..be4dd1bd 100644 Binary files a/mesecons_noteblock/textures/mesecons_noteblock.png and b/mesecons_noteblock/textures/mesecons_noteblock.png differ diff --git a/mesecons_pistons/doc/piston/preview.png b/mesecons_pistons/doc/piston/preview.png index 9e9ede3b..44e0ab0d 100644 Binary files a/mesecons_pistons/doc/piston/preview.png and b/mesecons_pistons/doc/piston/preview.png differ diff --git a/mesecons_pistons/doc/piston/recipe.png b/mesecons_pistons/doc/piston/recipe.png index 0a711595..1b0f4a45 100644 Binary files a/mesecons_pistons/doc/piston/recipe.png and b/mesecons_pistons/doc/piston/recipe.png differ diff --git a/mesecons_pistons/doc/piston_sticky/preview.png b/mesecons_pistons/doc/piston_sticky/preview.png index 716d6756..2c1911bb 100644 Binary files a/mesecons_pistons/doc/piston_sticky/preview.png and b/mesecons_pistons/doc/piston_sticky/preview.png differ diff --git a/mesecons_pistons/doc/piston_sticky/recipe.png b/mesecons_pistons/doc/piston_sticky/recipe.png index 35207367..a38e8bee 100644 Binary files a/mesecons_pistons/doc/piston_sticky/recipe.png and b/mesecons_pistons/doc/piston_sticky/recipe.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_back.png b/mesecons_pistons/textures/mesecons_piston_back.png index 6a57dcef..2dde41b0 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_back.png and b/mesecons_pistons/textures/mesecons_piston_back.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_bottom.png b/mesecons_pistons/textures/mesecons_piston_bottom.png index 5a3af9b9..d4b2fbf3 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_bottom.png and b/mesecons_pistons/textures/mesecons_piston_bottom.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_left.png b/mesecons_pistons/textures/mesecons_piston_left.png index 215dd739..a560a7de 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_left.png and b/mesecons_pistons/textures/mesecons_piston_left.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_on_front.png b/mesecons_pistons/textures/mesecons_piston_on_front.png index 0ade67e2..f7b0f0ca 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_on_front.png and b/mesecons_pistons/textures/mesecons_piston_on_front.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_back.png b/mesecons_pistons/textures/mesecons_piston_pusher_back.png index fe879439..713cd9d3 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_back.png and b/mesecons_pistons/textures/mesecons_piston_pusher_back.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png b/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png index 87c4e810..cc6420e7 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png and b/mesecons_pistons/textures/mesecons_piston_pusher_bottom.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_front.png b/mesecons_pistons/textures/mesecons_piston_pusher_front.png index 8ec9dc64..3a09947b 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_front.png and b/mesecons_pistons/textures/mesecons_piston_pusher_front.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png b/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png index e38b4e6a..686e7857 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png and b/mesecons_pistons/textures/mesecons_piston_pusher_front_sticky.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_left.png b/mesecons_pistons/textures/mesecons_piston_pusher_left.png index bc5495be..43d0327c 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_left.png and b/mesecons_pistons/textures/mesecons_piston_pusher_left.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_right.png b/mesecons_pistons/textures/mesecons_piston_pusher_right.png index 32ee32f2..af86c0f1 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_right.png and b/mesecons_pistons/textures/mesecons_piston_pusher_right.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_pusher_top.png b/mesecons_pistons/textures/mesecons_piston_pusher_top.png index 72f04e90..032215be 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_pusher_top.png and b/mesecons_pistons/textures/mesecons_piston_pusher_top.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_right.png b/mesecons_pistons/textures/mesecons_piston_right.png index 176463cb..02fa0235 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_right.png and b/mesecons_pistons/textures/mesecons_piston_right.png differ diff --git a/mesecons_pistons/textures/mesecons_piston_top.png b/mesecons_pistons/textures/mesecons_piston_top.png index 5c8bacea..5b35a96e 100644 Binary files a/mesecons_pistons/textures/mesecons_piston_top.png and b/mesecons_pistons/textures/mesecons_piston_top.png differ diff --git a/mesecons_powerplant/doc/powerplant/preview.png b/mesecons_powerplant/doc/powerplant/preview.png index 473d15c5..d64010fe 100644 Binary files a/mesecons_powerplant/doc/powerplant/preview.png and b/mesecons_powerplant/doc/powerplant/preview.png differ diff --git a/mesecons_powerplant/doc/powerplant/recipe.png b/mesecons_powerplant/doc/powerplant/recipe.png index 04a40024..94cf08bd 100644 Binary files a/mesecons_powerplant/doc/powerplant/recipe.png and b/mesecons_powerplant/doc/powerplant/recipe.png differ diff --git a/mesecons_powerplant/textures/jeija_power_plant.png b/mesecons_powerplant/textures/jeija_power_plant.png index edc88916..5655c6aa 100644 Binary files a/mesecons_powerplant/textures/jeija_power_plant.png and b/mesecons_powerplant/textures/jeija_power_plant.png differ diff --git a/mesecons_pressureplates/doc/pressureplate_stone/preview.png b/mesecons_pressureplates/doc/pressureplate_stone/preview.png index 235ffc41..d95a0ce8 100644 Binary files a/mesecons_pressureplates/doc/pressureplate_stone/preview.png and b/mesecons_pressureplates/doc/pressureplate_stone/preview.png differ diff --git a/mesecons_pressureplates/doc/pressureplate_stone/recipe.png b/mesecons_pressureplates/doc/pressureplate_stone/recipe.png index 62acf45b..541d698a 100644 Binary files a/mesecons_pressureplates/doc/pressureplate_stone/recipe.png and b/mesecons_pressureplates/doc/pressureplate_stone/recipe.png differ diff --git a/mesecons_pressureplates/doc/pressureplate_wood/preview.png b/mesecons_pressureplates/doc/pressureplate_wood/preview.png index 7063cb02..4fe3d9cf 100644 Binary files a/mesecons_pressureplates/doc/pressureplate_wood/preview.png and b/mesecons_pressureplates/doc/pressureplate_wood/preview.png differ diff --git a/mesecons_pressureplates/doc/pressureplate_wood/recipe.png b/mesecons_pressureplates/doc/pressureplate_wood/recipe.png index 429d491d..923e8d85 100644 Binary files a/mesecons_pressureplates/doc/pressureplate_wood/recipe.png and b/mesecons_pressureplates/doc/pressureplate_wood/recipe.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png index bfe5a1d2..5f35c843 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_inv.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png index 46140dad..544b1aa8 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png index 2ad9acc7..ad13f5b1 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_off_edges.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png index dc64931e..434b3d83 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png index 51add95a..818c966c 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_on_edges.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png index c5335670..5f35c843 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_stone_wield.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png index 36dacd07..5e8109af 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_inv.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png index ca98757e..c9ba34f3 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png index 665ae978..8b101739 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_off_edges.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png index e1a7d8e3..9ae7cc6d 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png index 358f2eab..97cd30ed 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_on_edges.png differ diff --git a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png index 50b321d6..5e8109af 100644 Binary files a/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png and b/mesecons_pressureplates/textures/jeija_pressure_plate_wood_wield.png differ diff --git a/mesecons_random/doc/ghoststone/preview.png b/mesecons_random/doc/ghoststone/preview.png index 4ab33fba..f3d12574 100644 Binary files a/mesecons_random/doc/ghoststone/preview.png and b/mesecons_random/doc/ghoststone/preview.png differ diff --git a/mesecons_random/doc/ghoststone/recipe.png b/mesecons_random/doc/ghoststone/recipe.png index 3bd385d4..d1ee2013 100644 Binary files a/mesecons_random/doc/ghoststone/recipe.png and b/mesecons_random/doc/ghoststone/recipe.png differ diff --git a/mesecons_random/doc/removestone/preview.png b/mesecons_random/doc/removestone/preview.png index 15caf3fa..2941db84 100644 Binary files a/mesecons_random/doc/removestone/preview.png and b/mesecons_random/doc/removestone/preview.png differ diff --git a/mesecons_random/doc/removestone/recipe.png b/mesecons_random/doc/removestone/recipe.png index f271963f..ed9dfe4a 100644 Binary files a/mesecons_random/doc/removestone/recipe.png and b/mesecons_random/doc/removestone/recipe.png differ diff --git a/mesecons_random/textures/jeija_ghoststone.png b/mesecons_random/textures/jeija_ghoststone.png index 1917b7c0..1f36a41b 100644 Binary files a/mesecons_random/textures/jeija_ghoststone.png and b/mesecons_random/textures/jeija_ghoststone.png differ diff --git a/mesecons_random/textures/jeija_ghoststone_inv.png b/mesecons_random/textures/jeija_ghoststone_inv.png index c715d7f7..bfe3a84d 100644 Binary files a/mesecons_random/textures/jeija_ghoststone_inv.png and b/mesecons_random/textures/jeija_ghoststone_inv.png differ diff --git a/mesecons_random/textures/jeija_removestone.png b/mesecons_random/textures/jeija_removestone.png index 1917b7c0..1f36a41b 100644 Binary files a/mesecons_random/textures/jeija_removestone.png and b/mesecons_random/textures/jeija_removestone.png differ diff --git a/mesecons_random/textures/jeija_removestone_inv.png b/mesecons_random/textures/jeija_removestone_inv.png index c715d7f7..bfe3a84d 100644 Binary files a/mesecons_random/textures/jeija_removestone_inv.png and b/mesecons_random/textures/jeija_removestone_inv.png differ diff --git a/mesecons_receiver/textures/receiver_bottom_off.png b/mesecons_receiver/textures/receiver_bottom_off.png index b95903e8..d052bda3 100644 Binary files a/mesecons_receiver/textures/receiver_bottom_off.png and b/mesecons_receiver/textures/receiver_bottom_off.png differ diff --git a/mesecons_receiver/textures/receiver_bottom_on.png b/mesecons_receiver/textures/receiver_bottom_on.png index d0b7006a..f97c22ba 100644 Binary files a/mesecons_receiver/textures/receiver_bottom_on.png and b/mesecons_receiver/textures/receiver_bottom_on.png differ diff --git a/mesecons_receiver/textures/receiver_fb_off.png b/mesecons_receiver/textures/receiver_fb_off.png index aed3008e..d052bda3 100644 Binary files a/mesecons_receiver/textures/receiver_fb_off.png and b/mesecons_receiver/textures/receiver_fb_off.png differ diff --git a/mesecons_receiver/textures/receiver_fb_on.png b/mesecons_receiver/textures/receiver_fb_on.png index 0916736b..f97c22ba 100644 Binary files a/mesecons_receiver/textures/receiver_fb_on.png and b/mesecons_receiver/textures/receiver_fb_on.png differ diff --git a/mesecons_receiver/textures/receiver_lr_off.png b/mesecons_receiver/textures/receiver_lr_off.png index 1fb2b3a6..d052bda3 100644 Binary files a/mesecons_receiver/textures/receiver_lr_off.png and b/mesecons_receiver/textures/receiver_lr_off.png differ diff --git a/mesecons_receiver/textures/receiver_lr_on.png b/mesecons_receiver/textures/receiver_lr_on.png index 087c0b41..f97c22ba 100644 Binary files a/mesecons_receiver/textures/receiver_lr_on.png and b/mesecons_receiver/textures/receiver_lr_on.png differ diff --git a/mesecons_receiver/textures/receiver_top_off.png b/mesecons_receiver/textures/receiver_top_off.png index ae50106d..d052bda3 100644 Binary files a/mesecons_receiver/textures/receiver_top_off.png and b/mesecons_receiver/textures/receiver_top_off.png differ diff --git a/mesecons_receiver/textures/receiver_top_on.png b/mesecons_receiver/textures/receiver_top_on.png index 5b48cac8..f97c22ba 100644 Binary files a/mesecons_receiver/textures/receiver_top_on.png and b/mesecons_receiver/textures/receiver_top_on.png differ diff --git a/mesecons_solarpanel/doc/solarpanel/preview.png b/mesecons_solarpanel/doc/solarpanel/preview.png index b7731951..ed78e651 100644 Binary files a/mesecons_solarpanel/doc/solarpanel/preview.png and b/mesecons_solarpanel/doc/solarpanel/preview.png differ diff --git a/mesecons_solarpanel/doc/solarpanel/recipe.png b/mesecons_solarpanel/doc/solarpanel/recipe.png index 3a3d7991..d0f39641 100644 Binary files a/mesecons_solarpanel/doc/solarpanel/recipe.png and b/mesecons_solarpanel/doc/solarpanel/recipe.png differ diff --git a/mesecons_solarpanel/textures/jeija_solar_panel.png b/mesecons_solarpanel/textures/jeija_solar_panel.png index a7b0f75f..d2f80fe9 100644 Binary files a/mesecons_solarpanel/textures/jeija_solar_panel.png and b/mesecons_solarpanel/textures/jeija_solar_panel.png differ diff --git a/mesecons_switch/doc/switch/preview.png b/mesecons_switch/doc/switch/preview.png index 0a0487dc..c765272a 100644 Binary files a/mesecons_switch/doc/switch/preview.png and b/mesecons_switch/doc/switch/preview.png differ diff --git a/mesecons_switch/doc/switch/recipe.png b/mesecons_switch/doc/switch/recipe.png index 6db6464c..15c9b0b3 100644 Binary files a/mesecons_switch/doc/switch/recipe.png and b/mesecons_switch/doc/switch/recipe.png differ diff --git a/mesecons_switch/textures/mesecons_switch_off.png b/mesecons_switch/textures/mesecons_switch_off.png index 2a75ef3b..1dd77eae 100644 Binary files a/mesecons_switch/textures/mesecons_switch_off.png and b/mesecons_switch/textures/mesecons_switch_off.png differ diff --git a/mesecons_switch/textures/mesecons_switch_on.png b/mesecons_switch/textures/mesecons_switch_on.png index 9df3450c..bc6bd75c 100644 Binary files a/mesecons_switch/textures/mesecons_switch_on.png and b/mesecons_switch/textures/mesecons_switch_on.png differ diff --git a/mesecons_switch/textures/mesecons_switch_side.png b/mesecons_switch/textures/mesecons_switch_side.png index fb5db335..9ffa4f09 100644 Binary files a/mesecons_switch/textures/mesecons_switch_side.png and b/mesecons_switch/textures/mesecons_switch_side.png differ diff --git a/mesecons_torch/doc/torch/preview.png b/mesecons_torch/doc/torch/preview.png index fa325432..edf7194e 100644 Binary files a/mesecons_torch/doc/torch/preview.png and b/mesecons_torch/doc/torch/preview.png differ diff --git a/mesecons_torch/doc/torch/recipe.png b/mesecons_torch/doc/torch/recipe.png index 529d99f7..85d586dc 100644 Binary files a/mesecons_torch/doc/torch/recipe.png and b/mesecons_torch/doc/torch/recipe.png differ diff --git a/mesecons_torch/textures/jeija_torches_off.png b/mesecons_torch/textures/jeija_torches_off.png index 537920c2..92cdce63 100644 Binary files a/mesecons_torch/textures/jeija_torches_off.png and b/mesecons_torch/textures/jeija_torches_off.png differ diff --git a/mesecons_torch/textures/jeija_torches_off_ceiling.png b/mesecons_torch/textures/jeija_torches_off_ceiling.png index 3934e6e9..033d2b40 100644 Binary files a/mesecons_torch/textures/jeija_torches_off_ceiling.png and b/mesecons_torch/textures/jeija_torches_off_ceiling.png differ diff --git a/mesecons_torch/textures/jeija_torches_off_side.png b/mesecons_torch/textures/jeija_torches_off_side.png index ecb29511..cf703e52 100644 Binary files a/mesecons_torch/textures/jeija_torches_off_side.png and b/mesecons_torch/textures/jeija_torches_off_side.png differ diff --git a/mesecons_torch/textures/jeija_torches_on.png b/mesecons_torch/textures/jeija_torches_on.png index a93dcc22..7506c8d5 100644 Binary files a/mesecons_torch/textures/jeija_torches_on.png and b/mesecons_torch/textures/jeija_torches_on.png differ diff --git a/mesecons_torch/textures/jeija_torches_on_ceiling.png b/mesecons_torch/textures/jeija_torches_on_ceiling.png index 24fe2016..81e7867d 100644 Binary files a/mesecons_torch/textures/jeija_torches_on_ceiling.png and b/mesecons_torch/textures/jeija_torches_on_ceiling.png differ diff --git a/mesecons_torch/textures/jeija_torches_on_side.png b/mesecons_torch/textures/jeija_torches_on_side.png index fe7dfd23..895a4e32 100644 Binary files a/mesecons_torch/textures/jeija_torches_on_side.png and b/mesecons_torch/textures/jeija_torches_on_side.png differ diff --git a/mesecons_walllever/doc/walllever/preview.png b/mesecons_walllever/doc/walllever/preview.png index e8d2015c..04819f35 100644 Binary files a/mesecons_walllever/doc/walllever/preview.png and b/mesecons_walllever/doc/walllever/preview.png differ diff --git a/mesecons_walllever/doc/walllever/recipe.png b/mesecons_walllever/doc/walllever/recipe.png index 0ad7c928..8714e029 100644 Binary files a/mesecons_walllever/doc/walllever/recipe.png and b/mesecons_walllever/doc/walllever/recipe.png differ diff --git a/mesecons_walllever/textures/jeija_wall_lever_back_edges.png b/mesecons_walllever/textures/jeija_wall_lever_back_edges.png index 936b4545..edc331fe 100644 Binary files a/mesecons_walllever/textures/jeija_wall_lever_back_edges.png and b/mesecons_walllever/textures/jeija_wall_lever_back_edges.png differ diff --git a/mesecons_walllever/textures/jeija_wall_lever_front.png b/mesecons_walllever/textures/jeija_wall_lever_front.png index 1bd747a8..c7987ee3 100644 Binary files a/mesecons_walllever/textures/jeija_wall_lever_front.png and b/mesecons_walllever/textures/jeija_wall_lever_front.png differ diff --git a/mesecons_walllever/textures/jeija_wall_lever_front_bump.png b/mesecons_walllever/textures/jeija_wall_lever_front_bump.png index 5c2a88af..3b80d7ae 100644 Binary files a/mesecons_walllever/textures/jeija_wall_lever_front_bump.png and b/mesecons_walllever/textures/jeija_wall_lever_front_bump.png differ diff --git a/mesecons_walllever/textures/jeija_wall_lever_inv.png b/mesecons_walllever/textures/jeija_wall_lever_inv.png index 474f8c17..f53bd742 100644 Binary files a/mesecons_walllever/textures/jeija_wall_lever_inv.png and b/mesecons_walllever/textures/jeija_wall_lever_inv.png differ diff --git a/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png b/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png index 2b47c7d8..3debb2df 100644 Binary files a/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png and b/mesecons_walllever/textures/jeija_wall_lever_lever_light_off.png differ diff --git a/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png b/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png index 83b83a0c..746227fd 100644 Binary files a/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png and b/mesecons_walllever/textures/jeija_wall_lever_lever_light_on.png differ diff --git a/mesecons_wires/doc/mesecon/preview.png b/mesecons_wires/doc/mesecon/preview.png old mode 100755 new mode 100644 index f81e5cb2..2c0e5fb0 Binary files a/mesecons_wires/doc/mesecon/preview.png and b/mesecons_wires/doc/mesecon/preview.png differ diff --git a/mesecons_wires/doc/mesecon/recipe.png b/mesecons_wires/doc/mesecon/recipe.png index 72f92108..3dfea78c 100644 Binary files a/mesecons_wires/doc/mesecon/recipe.png and b/mesecons_wires/doc/mesecon/recipe.png differ diff --git a/moreblocks/.travis.yml b/moreblocks/.travis.yml index 1c4c0d8a..211285ac 100644 --- a/moreblocks/.travis.yml +++ b/moreblocks/.travis.yml @@ -1,15 +1,15 @@ -language: generic +dist: bionic +language: python -addons: - apt: - packages: - - luarocks +python: + - 3.7.1 install: - - pyenv global 3.6.3 - - pip3 install --user pre-commit + - sudo apt-get update -qq + - sudo apt-get install -qqq luarocks + - pip3 install pre-commit - luarocks install --local luacheck script: - - $HOME/.local/bin/pre-commit run --all-files + - pre-commit run --all-files - $HOME/.luarocks/bin/luacheck . diff --git a/moreblocks/textures/moreblocks_clean_glass.png b/moreblocks/textures/moreblocks_clean_glass.png index 73febdb6..b7669560 100644 Binary files a/moreblocks/textures/moreblocks_clean_glass.png and b/moreblocks/textures/moreblocks_clean_glass.png differ diff --git a/moreblocks/textures/moreblocks_coal_glass_stairsplus.png b/moreblocks/textures/moreblocks_coal_glass_stairsplus.png index 7aee70ab..cc2e7972 100644 Binary files a/moreblocks/textures/moreblocks_coal_glass_stairsplus.png and b/moreblocks/textures/moreblocks_coal_glass_stairsplus.png differ diff --git a/moreblocks/textures/moreblocks_copperpatina.png b/moreblocks/textures/moreblocks_copperpatina.png index 1216d8d8..d4e98b00 100644 Binary files a/moreblocks/textures/moreblocks_copperpatina.png and b/moreblocks/textures/moreblocks_copperpatina.png differ diff --git a/moreblocks/textures/moreblocks_dirt_compressed.png b/moreblocks/textures/moreblocks_dirt_compressed.png index a3072020..bdc8220d 100644 Binary files a/moreblocks/textures/moreblocks_dirt_compressed.png and b/moreblocks/textures/moreblocks_dirt_compressed.png differ diff --git a/moreblocks/textures/moreblocks_empty_shelf.png b/moreblocks/textures/moreblocks_empty_shelf.png index af874d74..bf29124f 100644 Binary files a/moreblocks/textures/moreblocks_empty_shelf.png and b/moreblocks/textures/moreblocks_empty_shelf.png differ diff --git a/moreblocks/textures/moreblocks_glass_stairsplus.png b/moreblocks/textures/moreblocks_glass_stairsplus.png index 30aadfbb..8e4cb98d 100644 Binary files a/moreblocks/textures/moreblocks_glass_stairsplus.png and b/moreblocks/textures/moreblocks_glass_stairsplus.png differ diff --git a/moreblocks/textures/moreblocks_glow_glass_stairsplus.png b/moreblocks/textures/moreblocks_glow_glass_stairsplus.png index cdb80443..db2831e5 100644 Binary files a/moreblocks/textures/moreblocks_glow_glass_stairsplus.png and b/moreblocks/textures/moreblocks_glow_glass_stairsplus.png differ diff --git a/moreblocks/textures/moreblocks_iron_checker.png b/moreblocks/textures/moreblocks_iron_checker.png index d27f4df7..117cac2d 100644 Binary files a/moreblocks/textures/moreblocks_iron_checker.png and b/moreblocks/textures/moreblocks_iron_checker.png differ diff --git a/moreblocks/textures/moreblocks_iron_glass_stairsplus.png b/moreblocks/textures/moreblocks_iron_glass_stairsplus.png index 52e3bf37..799fbc43 100644 Binary files a/moreblocks/textures/moreblocks_iron_glass_stairsplus.png and b/moreblocks/textures/moreblocks_iron_glass_stairsplus.png differ diff --git a/moreblocks/textures/moreblocks_junglestick.png b/moreblocks/textures/moreblocks_junglestick.png index 23644fd1..7bc6bc44 100644 Binary files a/moreblocks/textures/moreblocks_junglestick.png and b/moreblocks/textures/moreblocks_junglestick.png differ diff --git a/moreblocks/textures/moreblocks_rope.png b/moreblocks/textures/moreblocks_rope.png index 19787fe5..f86c07dc 100644 Binary files a/moreblocks/textures/moreblocks_rope.png and b/moreblocks/textures/moreblocks_rope.png differ diff --git a/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png b/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png index ae3f01fb..c9a2da6e 100644 Binary files a/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png and b/moreblocks/textures/moreblocks_super_glow_glass_stairsplus.png differ diff --git a/moreblocks/textures/moreblocks_trap_box.png b/moreblocks/textures/moreblocks_trap_box.png index 292ae88f..6d2aa10f 100644 Binary files a/moreblocks/textures/moreblocks_trap_box.png and b/moreblocks/textures/moreblocks_trap_box.png differ diff --git a/moreblocks/textures/moreblocks_trap_box_glass.png b/moreblocks/textures/moreblocks_trap_box_glass.png index b0c09930..77234d0a 100644 Binary files a/moreblocks/textures/moreblocks_trap_box_glass.png and b/moreblocks/textures/moreblocks_trap_box_glass.png differ diff --git a/moreblocks/textures/moreblocks_wood_tile.png b/moreblocks/textures/moreblocks_wood_tile.png index 6e344536..7d9a43c6 100644 Binary files a/moreblocks/textures/moreblocks_wood_tile.png and b/moreblocks/textures/moreblocks_wood_tile.png differ diff --git a/moreblocks/textures/moreblocks_wood_tile_center.png b/moreblocks/textures/moreblocks_wood_tile_center.png index a7d399a7..035b1cb6 100644 Binary files a/moreblocks/textures/moreblocks_wood_tile_center.png and b/moreblocks/textures/moreblocks_wood_tile_center.png differ diff --git a/moreblocks/textures/moreblocks_wood_tile_offset.png b/moreblocks/textures/moreblocks_wood_tile_offset.png index fde40a2c..43795981 100644 Binary files a/moreblocks/textures/moreblocks_wood_tile_offset.png and b/moreblocks/textures/moreblocks_wood_tile_offset.png differ diff --git a/moreores/.travis.yml b/moreores/.travis.yml index a032acb7..32a776a0 100644 --- a/moreores/.travis.yml +++ b/moreores/.travis.yml @@ -1,16 +1,16 @@ -language: generic +dist: bionic +language: python -addons: - apt: - packages: - - luarocks +python: + - 3.7.1 install: - - pyenv global 3.6.3 - - pip3 install --user pre-commit + - sudo apt-get update -qq + - sudo apt-get install -qqq luarocks + - pip3 install pre-commit - luarocks install --local luacheck script: # All linters are run with pre-commit hooks - export PATH="$HOME/.luarocks/bin:$PATH" - - $HOME/.local/bin/pre-commit run --all-files + - pre-commit run --all-files diff --git a/moreores/textures/moreores_copper_rail.png b/moreores/textures/moreores_copper_rail.png index 31f2999a..da7f5cfa 100644 Binary files a/moreores/textures/moreores_copper_rail.png and b/moreores/textures/moreores_copper_rail.png differ diff --git a/moreores/textures/moreores_copper_rail_crossing.png b/moreores/textures/moreores_copper_rail_crossing.png index cf803208..ca68539a 100644 Binary files a/moreores/textures/moreores_copper_rail_crossing.png and b/moreores/textures/moreores_copper_rail_crossing.png differ diff --git a/moreores/textures/moreores_copper_rail_curved.png b/moreores/textures/moreores_copper_rail_curved.png index e766793d..64f28305 100644 Binary files a/moreores/textures/moreores_copper_rail_curved.png and b/moreores/textures/moreores_copper_rail_curved.png differ diff --git a/moreores/textures/moreores_copper_rail_t_junction.png b/moreores/textures/moreores_copper_rail_t_junction.png index 60f7aaa2..406de1e1 100644 Binary files a/moreores/textures/moreores_copper_rail_t_junction.png and b/moreores/textures/moreores_copper_rail_t_junction.png differ diff --git a/moreores/textures/moreores_mineral_mithril.png b/moreores/textures/moreores_mineral_mithril.png index ed0fbf27..e9219cb0 100644 Binary files a/moreores/textures/moreores_mineral_mithril.png and b/moreores/textures/moreores_mineral_mithril.png differ diff --git a/moreores/textures/moreores_mineral_silver.png b/moreores/textures/moreores_mineral_silver.png index 93f9f436..82e91584 100644 Binary files a/moreores/textures/moreores_mineral_silver.png and b/moreores/textures/moreores_mineral_silver.png differ diff --git a/moreores/textures/moreores_mineral_tin.png b/moreores/textures/moreores_mineral_tin.png index 232d4b53..d2a240f6 100644 Binary files a/moreores/textures/moreores_mineral_tin.png and b/moreores/textures/moreores_mineral_tin.png differ diff --git a/moreores/textures/moreores_mithril_block.png b/moreores/textures/moreores_mithril_block.png index dd7a246d..7eda9cce 100644 Binary files a/moreores/textures/moreores_mithril_block.png and b/moreores/textures/moreores_mithril_block.png differ diff --git a/moreores/textures/moreores_silver_block.png b/moreores/textures/moreores_silver_block.png index 3cd846dc..c2fec683 100644 Binary files a/moreores/textures/moreores_silver_block.png and b/moreores/textures/moreores_silver_block.png differ diff --git a/moreores/textures/moreores_silver_ingot.png b/moreores/textures/moreores_silver_ingot.png index 86dd54e7..5af8d372 100644 Binary files a/moreores/textures/moreores_silver_ingot.png and b/moreores/textures/moreores_silver_ingot.png differ diff --git a/moreores/textures/moreores_tin_block.png b/moreores/textures/moreores_tin_block.png index 2f874c47..31ebce01 100644 Binary files a/moreores/textures/moreores_tin_block.png and b/moreores/textures/moreores_tin_block.png differ diff --git a/moreores/textures/moreores_tin_ingot.png b/moreores/textures/moreores_tin_ingot.png index eed53610..4e8c4f5d 100644 Binary files a/moreores/textures/moreores_tin_ingot.png and b/moreores/textures/moreores_tin_ingot.png differ diff --git a/moreores/textures/moreores_tool_mithrilpick.png b/moreores/textures/moreores_tool_mithrilpick.png index efe94439..7f7c3a2b 100644 Binary files a/moreores/textures/moreores_tool_mithrilpick.png and b/moreores/textures/moreores_tool_mithrilpick.png differ diff --git a/moreores/textures/moreores_tool_mithrilshovel.png b/moreores/textures/moreores_tool_mithrilshovel.png index 128e9f71..72ec2f57 100644 Binary files a/moreores/textures/moreores_tool_mithrilshovel.png and b/moreores/textures/moreores_tool_mithrilshovel.png differ diff --git a/moreores/textures/moreores_tool_silveraxe.png b/moreores/textures/moreores_tool_silveraxe.png index 31d9acfa..a47eb13d 100644 Binary files a/moreores/textures/moreores_tool_silveraxe.png and b/moreores/textures/moreores_tool_silveraxe.png differ diff --git a/moreores/textures/moreores_tool_silverpick.png b/moreores/textures/moreores_tool_silverpick.png index 4194c6ec..a291d3fc 100644 Binary files a/moreores/textures/moreores_tool_silverpick.png and b/moreores/textures/moreores_tool_silverpick.png differ diff --git a/moreores/textures/moreores_tool_silvershovel.png b/moreores/textures/moreores_tool_silvershovel.png index 775019f3..74676b13 100644 Binary files a/moreores/textures/moreores_tool_silvershovel.png and b/moreores/textures/moreores_tool_silvershovel.png differ diff --git a/mymillwork/depends.txt b/mymillwork/depends.txt index 4ad96d51..b8827dfa 100644 --- a/mymillwork/depends.txt +++ b/mymillwork/depends.txt @@ -1 +1,5 @@ default +bakedclay? +ethereal? +moreblocks? +technic? diff --git a/mymillwork/init.lua b/mymillwork/init.lua index 6bf57dea..7b1ec85e 100644 --- a/mymillwork/init.lua +++ b/mymillwork/init.lua @@ -1,4 +1,27 @@ mymillwork = {} + +print("Loading mymillwork...") + dofile(minetest.get_modpath("mymillwork").."/machines.lua") dofile(minetest.get_modpath("mymillwork").."/nodes.lua") dofile(minetest.get_modpath("mymillwork").."/materials.lua") + +if minetest.get_modpath("bakedclay") then + print("[mymillwork] Bakedclay detected") + dofile(minetest.get_modpath("mymillwork").."/materials_bakedclay.lua") +end + +if minetest.get_modpath("ethereal") then + print("[mymillwork] Ethereal detected") + dofile(minetest.get_modpath("mymillwork").."/materials_ethereal.lua") +end + +if minetest.get_modpath("moreblocks") then + print("[mymillwork] Moreblocks detected") + dofile(minetest.get_modpath("mymillwork").."/materials_moreblocks.lua") +end + +if minetest.get_modpath("technic_worldgen") then + print("[mymillwork] Technic Worldgen detected") + dofile(minetest.get_modpath("mymillwork").."/materials_technic.lua") +end diff --git a/mymillwork/materials_bakedclay.lua b/mymillwork/materials_bakedclay.lua new file mode 100644 index 00000000..bc2ff4c3 --- /dev/null +++ b/mymillwork/materials_bakedclay.lua @@ -0,0 +1,26 @@ +local clay = { + {"white", "White"}, + {"grey", "Grey"}, + {"black", "Black"}, + {"red", "Red"}, + {"yellow", "Yellow"}, + {"green", "Green"}, + {"cyan", "Cyan"}, + {"blue", "Blue"}, + {"magenta", "Magenta"}, + {"orange", "Orange"}, + {"violet", "Violet"}, + {"brown", "Brown"}, + {"pink", "Pink"}, + {"dark_grey", "Dark Grey"}, + {"dark_green", "Dark Green"}, +} + +for _,c in ipairs(clay) do + mymillwork.register("bakedclay:" .. c[1], + "bakedclay_" .. c[1], + c[2] .. " Clay", + "baked_clay_" .. c[1] .. ".png", + {crumbly = 3, not_in_creative_inventory = 1} + ) +end diff --git a/mymillwork/materials_ethereal.lua b/mymillwork/materials_ethereal.lua new file mode 100644 index 00000000..03d28892 --- /dev/null +++ b/mymillwork/materials_ethereal.lua @@ -0,0 +1,88 @@ +local nici = 1 + +if not minetest.get_modpath("bakedclay") then + +--baked_clay_gray + mymillwork.register("bakedclay:grey", + "baked_clay_grey", + "Grey Baked Clay", + "baked_clay_grey.png", + {cracky = 3, not_in_creative_inventory = nici} + ) + +--baked_clay_orange + mymillwork.register("bakedclay:orange", + "baked_clay_orange", + "Orange Baked Clay", + "baked_clay_orange.png", + {cracky = 3, not_in_creative_inventory = nici} + ) + +--baked_clay_red + mymillwork.register("bakedclay:red", + "baked_clay_red", + "Red Baked Clay", + "baked_clay_red.png", + {cracky = 3, not_in_creative_inventory = nici} + ) + +end + +--[[ +local nodes = { +--banana_trunk +--banana_trunk_top +--banana_wood + +--crystal_block + +--ethereal_frost_tree +--ethereal_frost_tree_top +--frost_wood + +--glostone + +--ethereal_sakura_trunk +--ethereal_sakura_trunk_top +--ethereal_sakura_trunk_wood + +--moretrees_birch_trunk +--moretrees_birch_trunk_top +--moretrees_birch_wood + +--moretrees_palm_trunk +--moretrees_palm_trunk_top +--moretrees_palm_wood + +--mushroom_block +--mushroom_pore +--mushroom_trunk +--mushroom_trunk_top + +--redwood_trunk +--redwood_trunk_top +--redwood_wood + +--scorched_tree +--scorched_tree_top + +--willow_trunk +--willow_trunk_top +--willow_wood + +--yellow_tree +--yellow_tree_top +--yellow_wood +} + +for name, def in pairs(nodes) do + + mymillwork.register("ethereal:"..name, + name, + def.description, + name..".png", + def.groups + ) + +end +]] diff --git a/mymillwork/materials_moreblocks.lua b/mymillwork/materials_moreblocks.lua new file mode 100644 index 00000000..d7316b10 --- /dev/null +++ b/mymillwork/materials_moreblocks.lua @@ -0,0 +1,190 @@ +local nici = 1 + +local nodes = { + +--moreblocks_cactus_brick + ["cactus_brick"] = { + description = ("Cactus Brick"), + groups = {cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_circle_stone_bricks + ["circle_stone_bricks"] = { + description = ("Circle Stone Bricks"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_clean_glass +--moreblocks_clean_glass_detail +--moreblocks_coal_glass_stairsplus + +--moreblocks_coal_stone + ["coal_stone"] = { + description = ("Coal Stone"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_coal_stone_bricks + ["coal_stone_bricks"] = { + description = ("Coal Stone Bricks"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_cobble_compressed + ["cobble_compressed"] = { + description = ("Cobble Compressed"), + groups = {cracky = 1, not_in_creative_inventory = nici}, + }, + +--moreblocks_copperpatina + ["copperpatina"] = { + description = ("Copper Patina"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici}, + }, + +--moreblocks_dirt_compressed + ["dirt_compressed"] = { + description = ("Dirt Compressed"), + groups = {crumbly = 2, not_in_creative_inventory = nici}, + }, + +--moreblocks_grey_bricks + ["grey_bricks"] = { + description = ("Grey Bricks"), + groups = {cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_iron_stone + ["iron_stone"] = { + description = ("Iron Stone"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_iron_stone_bricks + ["iron_stone_bricks"] = { + description = ("Iron Stone Bricks"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_plankstone + ["plankstone"] = { + description = ("Plankstone"), + groups = {cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_split_stone_tile +--moreblocks_split_stone_tile_top + ["split_stone_tile_top"] = { + description = ("Split Stone Tile"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_stone_tile + ["stone_tile"] = { + description = ("Stone Tile"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_checker_stone_tile + ["checker_stone_tile"] = { + description = ("Checker Stone Tile"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_tar + ["tar"] = { + description = ("Tar"), + groups = {cracky = 2, tar_block = 1, not_in_creative_inventory = nici}, + }, + +} + +local nodes_checker = { + +--moreblocks_cactus_checker + ["cactus_checker"] = { + description = ("Cactus Checker"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_coal_checker + ["coal_checker"] = { + description = ("Coal Checker"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, + +--moreblocks_iron_checker + ["iron_checker"] = { + description = ("Iron Checker"), + groups = {stone = 1, cracky = 3, not_in_creative_inventory = nici}, + }, +} + +local nodes_all_faces = { + +--moreblocks_all_faces_tree + ["all_faces_tree"] = { + description = "All-faces Tree", + tiles = {"default_tree_top.png"}, + }, + +--moreblocks_all_faces_jungle_tree + ["all_faces_jungle_tree"] = { + description = "All-faces Jungle Tree", + tiles = {"default_jungletree_top.png"}, + }, + +--moreblocks_all_faces_pine_tree + ["all_faces_pine_tree"] = { + description = "All-faces Pine Tree", + tiles = {"default_pine_tree_top.png"}, + }, + +--moreblocks_all_faces_acacia_tree + ["all_faces_acacia_tree"] = { + description = "All-faces Acacia Tree", + tiles = {"default_acacia_tree_top.png"}, + }, + +--moreblocks_all_faces_aspen_tree + ["all_faces_aspen_tree"] = { + description = "All-faces Aspen Tree", + tiles = {"default_aspen_tree_top.png"}, + }, + +} + + +for name, def in pairs(nodes) do + + mymillwork.register("moreblocks:"..name, + "morebloks_"..name, + def.description, + "moreblocks_"..name..".png", + def.groups + ) + +end + +for name, def in pairs(nodes_checker) do + + mymillwork.register("moreblocks:"..name, + "morebloks_"..name, + def.description, + "default_stone.png^moreblocks_"..name..".png", + def.groups + ) + +end + +for name, def in pairs(nodes_all_faces) do + + mymillwork.register("moreblocks:"..name, + "morebloks_"..name, + def.description, + def.tiles[1], + {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, + not_in_creative_inventory = nici} + ) + +end diff --git a/mymillwork/materials_technic.lua b/mymillwork/materials_technic.lua new file mode 100644 index 00000000..3d3b45a6 --- /dev/null +++ b/mymillwork/materials_technic.lua @@ -0,0 +1,97 @@ +local nici = 1 + +--[[ Technic Worldgen ]]-- + +local nodes = { + +-- technic:granite + ["granite"] = { + description = ("Granite"), + groups = {cracky = 1, stone = 1, not_in_creative_inventory = nici} + }, + +-- technic:marble + ["marble"] = { + description = ("Marble"), + groups = {cracky = 3, stone = 1, marble = 1, + not_in_creative_inventory = nici} + }, + + +-- technic:marbel_bricks + ["marble_bricks"] = { + description = ("Marble Briks"), + groups = {cracky = 3, stone = 1, marble = 1, + not_in_creative_inventory = nici} + }, + +-- technic:uranium_block + ["uranium_block"] = { + description = ("Uranium"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, + +-- technic:chromium_block + ["chromium_block"] = { + description = ("Chromium"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, + +-- technic:zinc_block + ["zinc_block"] = { + description = ("Zinc"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, + +-- technic:lead_block + ["lead_block"] = { + description = ("Lead"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, + +-- technic:cast_iron_block + ["cast_iron_block"] = { + description = ("Cast Iron"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, + +-- technic:carbon_steel_block + ["carbon_steel_block"] = { + description = ("Carbon Steel"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, + +-- technic:stainless_steel_block + ["stainless_steel_block"] = { + description = ("Stainles Steel"), + groups = {cracky = 1, level = 2, not_in_creative_inventory = nici} + }, +} + +-- technic:wrougt_iron_block +mymillwork.register("technic:wrougt_iron_block", + "technic_wrougt_iron_block", + "Wrougt Iron", + "default_steel_block.png", + {cracky = 1, level = 2, not_in_creative_inventory = nici} +) + +-- [[ Technic Concrete ]] -- + +-- if minetest.get_modpath("concrete") then + +-- technic:blast_resistant_concrete + + +-- end + +for name, def in pairs(nodes) do + + mymillwork.register("technic:"..name, + "technic_"..name, + def.description, + "technic_"..name..".png", + def.groups + ) + +end diff --git a/notify_hud_provider/LICENSE b/notify_hud_provider/LICENSE new file mode 100644 index 00000000..db890334 --- /dev/null +++ b/notify_hud_provider/LICENSE @@ -0,0 +1,7 @@ +Copyright 2019 Pascal Abresch + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/notify_hud_provider/README.md b/notify_hud_provider/README.md new file mode 100644 index 00000000..a141d814 --- /dev/null +++ b/notify_hud_provider/README.md @@ -0,0 +1,16 @@ +Api: +notify.hud.sendtext(mt_player player, string text, optional int timeout) + +usage: +add notify_hud_provider as an optional dependency to your mod, +and then check for the existance of the above api call before using it + +You may call it like so for example +notify.hud.sendtext(minetest.get_player_by_name("bentaphile", "Hey there", 10) + +or, for example if you are in a hook that already is in possesion of a player object +notify.hud.sendtext(player, "Your " .. tool .. " Has been repaired!", 5) + + +(This, so that subgames may provide their own implementation, without having to use the same modname, this also allows another mod to take this name to overide the subgame) + diff --git a/notify_hud_provider/init.lua b/notify_hud_provider/init.lua new file mode 100644 index 00000000..c8f522b5 --- /dev/null +++ b/notify_hud_provider/init.lua @@ -0,0 +1,38 @@ +notify = notify or {} +notify.hud = notify.hud or {} + +-- the only API gurantee is that notify.hud.sendtext(mt_player player, string text, optional int timeout) is available +minetest.register_on_joinplayer(function(player) + --register the hud elements to use later + --this is a simple implementation, so just one + + local hud_fg = player:hud_add({ + hud_elem_type = "text", + position = { x=0.5,y=0.8 }, + text = "", + direction = 0, + number = "0xFFFFFF" + }) + player:get_meta():set_int("notify_fg", hud_fg) +end) + +notify.hud.sendtext = function(player, text, timeout) + if not player then return end + if not text then return end + if timeout <= 0 or not timeout then timeout = 1 end + minetest.after(1, notify.hud.timeout, player) + player:get_meta():set_int("time_left", timeout) + player:hud_change(player:get_meta():get_int("notify_fg"), "text", text) +end + +notify.hud.timeout = function(player) -- checks whether player timed out yet + if not player then return end + local timeout = player:get_meta():get_int("time_left") + timeout = timeout -1 + if timeout <= 0 then + player:hud_change(player:get_meta():get_int("notify_fg"), "text", "") + else + player:get_meta():set_int("time_left", timeout) + minetest.after(1, notify.hud.timeout, player) + end +end diff --git a/notify_hud_provider/mod.conf b/notify_hud_provider/mod.conf new file mode 100644 index 00000000..21e95f1f --- /dev/null +++ b/notify_hud_provider/mod.conf @@ -0,0 +1 @@ +name = notify_hud_provider diff --git a/plasticbox/init.lua b/plasticbox/init.lua index aa707ece..1b4fe187 100644 --- a/plasticbox/init.lua +++ b/plasticbox/init.lua @@ -7,6 +7,7 @@ minetest.register_node("plasticbox:plasticbox", { paramtype2 = "color", palette = "unifieddyes_palette_extended.png", on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) if minetest.global_exists("stairsplus") then diff --git a/player_textures/depends.txt b/player_textures/depends.txt index 5e78c21b..8e482ce2 100644 --- a/player_textures/depends.txt +++ b/player_textures/depends.txt @@ -1 +1,2 @@ -default? +default +player_api diff --git a/replacer/init.lua b/replacer/init.lua index e1f41b91..27827a25 100644 --- a/replacer/init.lua +++ b/replacer/init.lua @@ -50,6 +50,9 @@ replacer.blacklist[ "tnt:boom"] = true; replacer.blacklist[ "tnt:gunpowder"] = true; replacer.blacklist[ "tnt:gunpowder_burning"] = true; replacer.blacklist[ "tnt:tnt"] = true; +replacer.blacklist[ "default:water_source"] = true; +replacer.blacklist[ "default:lava_source"] = true; +replacer.blacklist[ "default:river_water_source"] = true; -- prevent accidental replacement of your protector replacer.blacklist[ "protector:protect"] = true; diff --git a/ropes/README.md b/ropes/README.md index 8465745a..b9a0663a 100644 --- a/ropes/README.md +++ b/ropes/README.md @@ -10,4 +10,8 @@ This mod will also enhance default wood ladders and steel ladders to make them " This mod retains optional backward compatibility with the crafting items from the vines mod (anything with group "vines" can be used to make rope boxes and rope ladders). Ropes can also be made from cotton, available via an optional dependency on the farming mod. -In-game documentation is provided via an optional dependency on the doc mod. \ No newline at end of file +In-game documentation is provided via an optional dependency on the doc mod. + +## Interaction with other mods + +By default ropes and rope ladders only extend downward into "air" nodes. Other mods can modify this behaviour to add other nodes as valid targets for ropes to extend into using either of two mechanisms: either add `ropes_can_extend_into = 1` to the node definition's groups list or add a dependency on the ropes mod to your mod and then set `ropes.can_extend_into_nodes[target_node_name] = true`. There is also a configuration setting, `ropes_can_extend_into_airlike`, that will allow ropes to extend into any node with `drawtype = "airlike"` in its definition. Note that in cases where ropes extend into non-air nodes the rope will still be replaced with an "air" node when it's eventually destroyed. \ No newline at end of file diff --git a/ropes/extendingladder.lua b/ropes/extendingladder.lua index 06410261..00987c75 100644 --- a/ropes/extendingladder.lua +++ b/ropes/extendingladder.lua @@ -11,9 +11,9 @@ local wood_recipe = { local wood_name = S("Wooden Extendable Ladder") local steel_recipe = { + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "", "default:steel_ingot"}, } local steel_name = S("Steel Extendable Ladder") diff --git a/ropes/functions.lua b/ropes/functions.lua index 4ce5e62f..0415ee6d 100644 --- a/ropes/functions.lua +++ b/ropes/functions.lua @@ -1,3 +1,19 @@ +ropes.can_place_rope_in_node = function(target_node_name) + if ropes.can_extend_into_nodes[target_node_name] == true then + return true + end + local target_def = minetest.registered_nodes[target_node_name] + if target_def then + if target_def.drawtype == "airlike" and ropes.can_extend_into_airlike then + return true + end + if target_def.groups and target_def.groups.ropes_can_extend_into then + return true + end + end + return false +end + ropes.make_rope_on_timer = function(rope_node_name) return function(pos, elapsed) local currentend = minetest.get_node(pos) @@ -9,7 +25,7 @@ ropes.make_rope_on_timer = function(rope_node_name) local oldnode = minetest.get_node(pos) if currentlength > 1 and (not minetest.is_protected(newpos, placer_name) or minetest.check_player_privs(placer_name, "protection_bypass")) then - if newnode.name == "air" then + if ropes.can_place_rope_in_node(newnode.name) then minetest.add_node(newpos, {name=currentend.name, param2=oldnode.param2}) local newmeta = minetest.get_meta(newpos) newmeta:set_int("length_remaining", currentlength-1) diff --git a/ropes/init.lua b/ropes/init.lua index c1b01130..8ab5da94 100644 --- a/ropes/init.lua +++ b/ropes/init.lua @@ -28,6 +28,12 @@ if ropes.bridges_enabled == nil then ropes.bridges_enabled = true end +ropes.can_extend_into_airlike = minetest.settings:get_bool("ropes_can_extend_into_airlike") +ropes.can_extend_into_nodes = {["air"] = true} +if minetest.get_modpath("nether") then + ropes.can_extend_into_nodes["nether:fumes"] = true +end + dofile( MP .. "/doc.lua" ) dofile( MP .. "/functions.lua" ) dofile( MP .. "/crafts.lua" ) diff --git a/ropes/ropeboxes.lua b/ropes/ropeboxes.lua index 626b1588..a8a75c11 100644 --- a/ropes/ropeboxes.lua +++ b/ropes/ropeboxes.lua @@ -155,7 +155,7 @@ local function register_rope_block(multiple, max_multiple, name_prefix, node_pre end local node_below = minetest.get_node(pos_below) - if node_below.name == "air" then + if ropes.can_place_rope_in_node(node_below.name) then minetest.add_node(pos_below, {name="ropes:rope_bottom"}) local meta = minetest.get_meta(pos_below) meta:set_int("length_remaining", ropes.ropeLength*multiple) diff --git a/ropes/ropeladder.lua b/ropes/ropeladder.lua index 7097c727..5122e7c4 100644 --- a/ropes/ropeladder.lua +++ b/ropes/ropeladder.lua @@ -64,7 +64,7 @@ local rope_ladder_top_def = { local this_node = minetest.get_node(pos) local placer_name = placer:get_player_name() -- param2 holds the facing direction of this node. If it's 0 or 1 the node is "flat" and we don't want the ladder to extend. - if node_below.name == "air" and this_node.param2 > 1 + if ropes.can_place_rope_in_node(node_below.name) and this_node.param2 > 1 and (not minetest.is_protected(pos_below, placer_name) or minetest.check_player_privs(placer_name, "protection_bypass")) then minetest.add_node(pos_below, {name="ropes:ropeladder_bottom", param2=this_node.param2}) diff --git a/ropes/settingtypes.txt b/ropes/settingtypes.txt index d7bd7037..87faf737 100644 --- a/ropes/settingtypes.txt +++ b/ropes/settingtypes.txt @@ -51,4 +51,8 @@ ropes_extending_steel_ladder_limit (Unsupported limit of steel ladders) int 15 #These nodes make it easier to build bridges by extending out away #from the player as they're placed -ropes_bridges_enabled (Enable bridges) bool true \ No newline at end of file +ropes_bridges_enabled (Enable bridges) bool true + +#Allows ropes and rope ladders to extend into all "airlike" nodes. +#Note that ropes will leave "air" nodes behind when destroyed. +ropes_can_extend_into_airlike (Ropes can extend into all nodes with drawtype airlike) bool false \ No newline at end of file diff --git a/ropes/textures/ropes_1.png b/ropes/textures/ropes_1.png index 6172d673..7529284d 100644 Binary files a/ropes/textures/ropes_1.png and b/ropes/textures/ropes_1.png differ diff --git a/ropes/textures/ropes_2.png b/ropes/textures/ropes_2.png index ef361cb4..c414df8e 100644 Binary files a/ropes/textures/ropes_2.png and b/ropes/textures/ropes_2.png differ diff --git a/ropes/textures/ropes_3.png b/ropes/textures/ropes_3.png index a7dd7c84..c24ddc92 100644 Binary files a/ropes/textures/ropes_3.png and b/ropes/textures/ropes_3.png differ diff --git a/ropes/textures/ropes_4.png b/ropes/textures/ropes_4.png index c67d74f3..ff3febe7 100644 Binary files a/ropes/textures/ropes_4.png and b/ropes/textures/ropes_4.png differ diff --git a/ropes/textures/ropes_5.png b/ropes/textures/ropes_5.png index 3a40d581..85b045b2 100644 Binary files a/ropes/textures/ropes_5.png and b/ropes/textures/ropes_5.png differ diff --git a/ropes/textures/ropes_ropebox_front_1.png b/ropes/textures/ropes_ropebox_front_1.png index 23b60670..4d8e5a0d 100644 Binary files a/ropes/textures/ropes_ropebox_front_1.png and b/ropes/textures/ropes_ropebox_front_1.png differ diff --git a/ropes/textures/ropes_ropebox_front_2.png b/ropes/textures/ropes_ropebox_front_2.png index ee8c4717..0350bf8b 100644 Binary files a/ropes/textures/ropes_ropebox_front_2.png and b/ropes/textures/ropes_ropebox_front_2.png differ diff --git a/ropes/textures/ropes_ropebox_front_3.png b/ropes/textures/ropes_ropebox_front_3.png index 4e420cd6..c20de2f9 100644 Binary files a/ropes/textures/ropes_ropebox_front_3.png and b/ropes/textures/ropes_ropebox_front_3.png differ diff --git a/ropes/textures/ropes_ropebox_front_4.png b/ropes/textures/ropes_ropebox_front_4.png index cc0a10a6..32ebe460 100644 Binary files a/ropes/textures/ropes_ropebox_front_4.png and b/ropes/textures/ropes_ropebox_front_4.png differ diff --git a/ropes/textures/ropes_ropebox_front_5.png b/ropes/textures/ropes_ropebox_front_5.png index e6eab8b4..bb8305f4 100644 Binary files a/ropes/textures/ropes_ropebox_front_5.png and b/ropes/textures/ropes_ropebox_front_5.png differ diff --git a/ropes/textures/ropes_ropebox_side.png b/ropes/textures/ropes_ropebox_side.png index 37cfa108..fda8d543 100644 Binary files a/ropes/textures/ropes_ropebox_side.png and b/ropes/textures/ropes_ropebox_side.png differ diff --git a/street_signs/api.lua b/signs_lib/api.lua similarity index 58% rename from street_signs/api.lua rename to signs_lib/api.lua index 1a1d51ef..80e545b6 100644 --- a/street_signs/api.lua +++ b/signs_lib/api.lua @@ -1,15 +1,34 @@ --- signs api; most of this came from signs_lib but rewritten to some degree +-- signs_lib api, backported from street_signs -local S = street_signs.gettext +local S = signs_lib.gettext -street_signs.standard_yaw = { +signs_lib.lbm_restore_nodes = {} +signs_lib.old_fenceposts = {} +signs_lib.old_fenceposts_replacement_signs = {} +signs_lib.old_fenceposts_with_signs = {} +signs_lib.allowed_poles = {} + +-- Settings used for a standard wood or steel wall sign +signs_lib.standard_lines = 6 +signs_lib.standard_hscale = 1.7 +signs_lib.standard_vscale = 1.75 +signs_lib.standard_lspace = 1 +signs_lib.standard_fsize = 15 +signs_lib.standard_xoffs = 5 +signs_lib.standard_yoffs = 38 +signs_lib.standard_cpl = 25 + +signs_lib.standard_wood_groups = {choppy = 2, flammable = 2, oddly_breakable_by_hand = 3} +signs_lib.standard_steel_groups = {cracky = 2, oddly_breakable_by_hand = 3} + +signs_lib.standard_yaw = { 0, math.pi / -2, math.pi, math.pi / 2, } -street_signs.wallmounted_yaw = { +signs_lib.wallmounted_yaw = { nil, nil, math.pi / -2, @@ -27,52 +46,66 @@ local wall_dir_change = { 3, } +signs_lib.fdir_to_back = { + { 0, -1 }, + { -1, 0 }, + { 0, 1 }, + { 1, 0 }, +} + +signs_lib.wall_fdir_to_back = { + nil, + nil, + { 0, 1 }, + { 0, -1 }, + { -1, 0 }, + { 1, 0 }, +} + -- Initialize character texture cache local ctexcache = {} -street_signs.wallmounted_rotate = function(pos, node, user, mode) +signs_lib.wallmounted_rotate = function(pos, node, user, mode) if mode ~= screwdriver.ROTATE_FACE then return false end minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 6] }) for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do local e = v:get_luaentity() - if e and e.name == "street_signs:text" then + if e and e.name == "signs_lib:text" then v:remove() end end - street_signs.update_sign(pos) + signs_lib.update_sign(pos) return true end -street_signs.facedir_rotate = function(pos, node, user, mode) - if mode ~= screwdriver.ROTATE_FACE then return false end +signs_lib.facedir_rotate = function(pos, node, user, mode) + if mode ~= screwdriver.ROTATE_FACE or not signs_lib.can_modify(pos, user) then return end newparam2 = ((node.param2 % 6 ) == 0) and 1 or 0 minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do local e = v:get_luaentity() - if e and e.name == "street_signs:text" then + if e and e.name == "signs_lib:text" then v:remove() end end - street_signs.update_sign(pos) + signs_lib.update_sign(pos) return true end -street_signs.modpath = minetest.get_modpath("street_signs") - local DEFAULT_TEXT_SCALE = {x=10, y=10} -- infinite stacks if not minetest.settings:get_bool("creative_mode") then - street_signs.expect_infinite_stacks = false + signs_lib.expect_infinite_stacks = false else - street_signs.expect_infinite_stacks = true + signs_lib.expect_infinite_stacks = true end -- CONSTANTS -- Path to the textures. -local TP = street_signs.path .. "/textures" +local TP = signs_lib.path .. "/textures" -- Font file formatter local CHAR_FILE = "%s_%02x.png" -- Fonts path @@ -85,7 +118,7 @@ local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) -- check if a file does exist -- to avoid reopening file after checking again -- pass TRUE as second argument -function file_exists(name, return_handle, mode) +local function file_exists(name, return_handle, mode) mode = mode or "r"; local f = io.open(name, mode) if f ~= nil then @@ -102,7 +135,7 @@ end -- Read the image size from a PNG file. -- Returns image_w, image_h. -- Only the LSB is read from each field! -local function read_image_size(filename) +function signs_lib.read_image_size(filename) local f = file_exists(filename, true, "rb") -- file might not exist (don't crash the game) if (not f) then @@ -142,7 +175,7 @@ local function build_char_db(font_size) local char_count = 0 for c = 32, 255 do - local w, h = read_image_size(CHAR_PATH:format("street_signs_font_"..font_size.."px", c)) + local w, h = signs_lib.read_image_size(CHAR_PATH:format("signs_lib_font_"..font_size.."px", c)) if w and h then local ch = string.char(c) cw[ch] = w @@ -151,20 +184,20 @@ local function build_char_db(font_size) end end - local cbw, cbh = read_image_size(TP.."/street_signs_color_"..font_size.."px_n.png") + local cbw, cbh = signs_lib.read_image_size(TP.."/signs_lib_color_"..font_size.."px_n.png") assert(cbw and cbh, "error reading bg dimensions") return cw, cbw, cbh, (total_width / char_count) end -street_signs.charwidth15, -street_signs.colorbgw15, -street_signs.lineheight15, -street_signs.avgwidth15 = build_char_db(15) +signs_lib.charwidth15, +signs_lib.colorbgw15, +signs_lib.lineheight15, +signs_lib.avgwidth15 = build_char_db(15) -street_signs.charwidth31, -street_signs.colorbgw31, -street_signs.lineheight31, -street_signs.avgwidth31 = build_char_db(31) +signs_lib.charwidth31, +signs_lib.colorbgw31, +signs_lib.lineheight31, +signs_lib.avgwidth31 = build_char_db(31) local sign_groups = {choppy=2, dig_immediate=2} local fences_with_sign = { } @@ -186,7 +219,7 @@ local function fill_line(x, y, w, c, font_size, colorbgw) c = c or "0" local tex = { } for xx = 0, math.max(0, w), colorbgw do - table.insert(tex, (":%d,%d=street_signs_color_"..font_size.."px_%s.png"):format(x + xx, y, c)) + table.insert(tex, (":%d,%d=signs_lib_color_"..font_size.."px_%s.png"):format(x + xx, y, c)) end return table.concat(tex) end @@ -212,7 +245,7 @@ end local function make_line_texture(line, lineno, pos, line_width, line_height, cwidth_tab, font_size, colorbgw) local width = 0 local maxw = 0 - local font_name = "street_signs_font_"..font_size.."px" + local font_name = "signs_lib_font_"..font_size.."px" local words = { } local node = minetest.get_node(pos) @@ -333,16 +366,16 @@ local function make_sign_texture(lines, pos) if def.font_size and def.font_size == 31 then font_size = 31 - line_width = math.floor(street_signs.avgwidth31 * def.chars_per_line) * def.horiz_scaling - line_height = street_signs.lineheight31 - char_width = street_signs.charwidth31 - colorbgw = street_signs.colorbgw31 + line_width = math.floor(signs_lib.avgwidth31 * def.chars_per_line) * def.horiz_scaling + line_height = signs_lib.lineheight31 + char_width = signs_lib.charwidth31 + colorbgw = signs_lib.colorbgw31 else font_size = 15 - line_width = math.floor(street_signs.avgwidth15 * def.chars_per_line) * def.horiz_scaling - line_height = street_signs.lineheight15 - char_width = street_signs.charwidth15 - colorbgw = street_signs.colorbgw15 + line_width = math.floor(signs_lib.avgwidth15 * def.chars_per_line) * def.horiz_scaling + line_height = signs_lib.lineheight15 + char_width = signs_lib.charwidth15 + colorbgw = signs_lib.colorbgw15 end local texture = { ("[combine:%dx%d"):format(line_width, (line_height + def.line_spacing) * def.number_of_lines * def.vert_scaling) } @@ -370,22 +403,22 @@ local function set_obj_text(obj, text, x, pos) }) end -street_signs.construct_sign = function(pos) +signs_lib.construct_sign = function(pos) local meta = minetest.get_meta(pos) meta:set_string( "formspec", - "size[5,2.25]".. - "textarea[0.55,0.1;4.5,1.5;text;;${text}]".. - "button_exit[1.5,1.65;2,1;ok;"..S("Write").."]".. - "background[-0.20,-0.25;5.41,2.98;street_signs_bg.png]") + "size[6,4]".. + "textarea[0,-0.3;6.5,3;text;;${text}]".. + "button_exit[2,3.4;2,1;ok;"..S("Write").."]".. + "background[-0.5,-0.5;7,5;signs_lib_sign_bg.jpg]") meta:set_string("infotext", "") end -street_signs.destruct_sign = function(pos) +function signs_lib.destruct_sign(pos) local objects = minetest.get_objects_inside_radius(pos, 0.5) for _, v in ipairs(objects) do local e = v:get_luaentity() - if e and e.name == "street_signs:text" then + if e and e.name == "signs_lib:text" then v:remove() end end @@ -401,20 +434,24 @@ local function make_infotext(text) return table.concat(lines2, "\n") end -street_signs.update_sign = function(pos, fields) +function signs_lib.update_sign(pos, fields) local meta = minetest.get_meta(pos) local text = fields and fields.text or meta:get_string("text") text = trim_input(text) - meta:set_string("infotext", make_infotext(text).." ") + local owner = meta:get_string("owner") + ownstr = "" + if owner ~= "" then ownstr = S("Locked sign, owned by @1\n", owner) end + meta:set_string("text", text) + meta:set_string("infotext", ownstr..make_infotext(text).." ") local objects = minetest.get_objects_inside_radius(pos, 0.5) local found for _, v in ipairs(objects) do local e = v:get_luaentity() - if e and e.name == "street_signs:text" then + if e and e.name == "signs_lib:text" then if found then v:remove() else @@ -432,7 +469,7 @@ street_signs.update_sign = function(pos, fields) local signname = signnode.name local def = minetest.registered_items[signname] if not def.entity_info or not def.entity_info.yaw[signnode.param2 + 1] then return end - local obj = minetest.add_entity(pos, "street_signs:text") + local obj = minetest.add_entity(pos, "signs_lib:text") obj:setyaw(def.entity_info.yaw[signnode.param2 + 1]) obj:set_properties({ @@ -440,25 +477,38 @@ street_signs.update_sign = function(pos, fields) }) end -function street_signs.receive_fields(pos, formname, fields, sender) - if minetest.is_protected(pos, sender:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return - end - if fields and fields.text and fields.ok then +function signs_lib.receive_fields(pos, formname, fields, sender) + if fields and fields.text and fields.ok and signs_lib.can_modify(pos, sender) then minetest.log("action", S("@1 wrote \"@2\" to sign at @3", (sender:get_player_name() or ""), fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), minetest.pos_to_string(pos) )) - street_signs.update_sign(pos, fields) + signs_lib.update_sign(pos, fields) end end -local signs_text_on_activate +function signs_lib.can_modify(pos, player) + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local playername = player:get_player_name() -signs_text_on_activate = function(self) + if minetest.is_protected(pos, playername) then + minetest.record_protection_violation(pos, playername) + return false + end + + if owner == "" + or playername == owner + or (minetest.check_player_privs(playername, {sign_editor=true})) + or (playername == minetest.settings:get("name")) then + return true + end + minetest.record_protection_violation(pos, playername) + return false +end + +local signs_text_on_activate = function(self) local pos = self.object:getpos() local meta = minetest.get_meta(pos) local signnode = minetest.get_node(pos) @@ -474,10 +524,10 @@ signs_text_on_activate = function(self) end end -minetest.register_entity("street_signs:text", { +minetest.register_entity("signs_lib:text", { collisionbox = { 0, 0, 0, 0, 0, 0 }, visual = "mesh", - mesh = "street_signs_basic_entity.obj", + mesh = "signs_lib_basic_entity.obj", textures = {}, on_activate = signs_text_on_activate, }) @@ -485,45 +535,129 @@ minetest.register_entity("street_signs:text", { -- make selection boxes -- sizex/sizey specified in inches because that's what MUTCD uses. -function street_signs.make_selection_boxes(sizex, sizey, onpole, xoffs, yoffs, zoffs) +function signs_lib.make_selection_boxes(sizex, sizey, onpole, xoffs, yoffs, zoffs, fdir) + local tx = (sizex * 0.0254 ) / 2 local ty = (sizey * 0.0254 ) / 2 local xo = xoffs and xoffs * 0.0254 or 0 local yo = yoffs and yoffs * 0.0254 or 0 local zo = zoffs and zoffs * 0.0254 or 0 - - local t = { -0.5, -ty + yo, -tx + xo, -0.4375, ty + yo, tx + xo } - if onpole == "_onpole" then - return { - type = "wallmounted", - wall_side = { t[1] - 0.3125 + zo, t[2], t[3], t[4] - 0.3125 + zo, t[5], t[6] }, - wall_top = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - wall_bottom = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - } + if not fdir then + return { + type = "wallmounted", + wall_side = { -0.5 - 0.3125 + zo, -ty + yo, -tx + xo, -0.4375 - 0.3125 + zo, ty + yo , tx + xo }, + wall_top = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + wall_bottom = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + } + else + return { + type = "fixed", + fixed = { -tx + xo, -ty + yo, 0.5 + 0.3125 + zo, tx + xo, ty + yo, 0.4375 + 0.3125 + zo } + } + end else - return { - type = "wallmounted", - wall_side = t, - wall_top = { t[3] - xo, -t[1], t[2] + yo, t[6] - xo, -t[4], t[5] + yo}, - wall_bottom = { t[3] - xo, t[1], t[2] + yo, t[6] - xo, t[4], t[5] + yo } - } + if not fdir then + return { + type = "wallmounted", + wall_side = { -0.5, -ty, -tx, -0.4375, ty, tx }, + wall_top = { -tx - xo, 0.5 + zo, -ty + yo, tx - xo, 0.4375 + zo, ty + yo}, + wall_bottom = { -tx - xo, -0.5 + zo, -ty + yo, tx - xo, -0.4375 + zo, ty + yo } + } + else + return { + type = "fixed", + fixed = { -tx + xo, -ty + yo, 0.5 + zo, tx + xo, ty + yo, 0.4375 + zo} + } + end end end --- switch models to pole-mounted if appropriate - -street_signs.after_place_node = function(pos, placer, itemstack, pointed_thing) +function signs_lib.check_for_pole(pos, pointed_thing) local ppos = minetest.get_pointed_thing_position(pointed_thing) local pnode = minetest.get_node(ppos) local pdef = minetest.registered_items[pnode.name] - if (pdef and pdef.drawtype == "fencelike") - or string.find(pnode.name, "default:fence_") - or pnode.name == "coloredwood:fence" - or (pnode.name == "streets:bigpole" and pnode.param2 < 4) - or (pnode.name == "streets:bigpole" and pnode.param2 > 19 and pnode.param2 < 24) then + + if signs_lib.allowed_poles[pnode.name] + or (pdef and pdef.drawtype == "fencelike") + or string.find(pnode.name, "default:fence_") + or string.find(pnode.name, "_post") + or string.find(pnode.name, "fencepost") + or (pnode.name == "streets:bigpole" and pnode.param2 < 4) + or (pnode.name == "streets:bigpole" and pnode.param2 > 19 and pnode.param2 < 24) then + return true + end +end + +function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locked) + local ppos = minetest.get_pointed_thing_position(pointed_thing) + local pnode = minetest.get_node(ppos) + local pdef = minetest.registered_items[pnode.name] + local playername = placer:get_player_name() + + if signs_lib.check_for_pole(pos, pointed_thing) then local node = minetest.get_node(pos) minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = node.param2}) end + if locked then + local meta = minetest.get_meta(pos) + meta:set_string("owner", playername) + meta:set_string("infotext", S("Locked sign, owned by @1\n", playername)) + end end + +function signs_lib.register_fence_with_sign() + minetest.log("warning", "[signs_lib] ".."Attempt to call no longer used function signs_lib.register_fence_with_sign()") +end + +-- restore signs' text after /clearobjects and the like, the next time +-- a block is reloaded by the server. + +minetest.register_lbm({ + nodenames = signs_lib.lbm_restore_nodes, + name = "signs_lib:restore_sign_text", + label = "Restore sign text", + run_at_every_load = true, + action = function(pos, node) + signs_lib.update_sign(pos,nil,nil,node) + end +}) + +-- Convert old signs on fenceposts into signs on.. um.. fence posts :P + +minetest.register_lbm({ + nodenames = signs_lib.old_fenceposts_with_signs, + name = "signs_lib:fix_fencepost_signs", + label = "Change single-node signs on fences into normal", + run_at_every_load = true, + action = function(pos, node) + + local fdir = node.param2 % 8 + local signpos = { + x = pos.x + signs_lib.fdir_to_back[fdir+1][1], + y = pos.y, + z = pos.z + signs_lib.fdir_to_back[fdir+1][2] + } + + if minetest.get_node(signpos).name == "air" then + local new_wmdir = minetest.dir_to_wallmounted(minetest.facedir_to_dir(fdir)) + local oldfence = signs_lib.old_fenceposts[node.name] + local newsign = signs_lib.old_fenceposts_replacement_signs[node.name] + + for _, v in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + local e = v:get_luaentity() + if e and e.name == "signs_lib:text" then + v:remove() + end + end + + local oldmeta = minetest.get_meta(pos):to_table() + minetest.set_node(pos, {name = oldfence}) + minetest.set_node(signpos, { name = newsign, param2 = new_wmdir }) + local newmeta = minetest.get_meta(signpos) + newmeta:from_table(oldmeta) + signs_lib.update_sign(signpos) + end + end +}) diff --git a/signs_lib/depends.txt b/signs_lib/depends.txt index 6937007b..c0dd3b07 100644 --- a/signs_lib/depends.txt +++ b/signs_lib/depends.txt @@ -1,6 +1,3 @@ default -basic_materials intllib? screwdriver? -keyword_interact? -craft_guide? diff --git a/signs_lib/encoding.lua b/signs_lib/encoding.lua index 16e35feb..b398c464 100644 --- a/signs_lib/encoding.lua +++ b/signs_lib/encoding.lua @@ -1,4 +1,4 @@ --- encoding borrowed from signs_lib mod of https://github.com/lord-server/lord +-- encoding borrowed from signs_lib fork at https://github.com/lord-server/lord local ansi_decode = { [128] = "\208\130", diff --git a/signs_lib/init.lua b/signs_lib/init.lua index b399d07b..152cf1fd 100644 --- a/signs_lib/init.lua +++ b/signs_lib/init.lua @@ -3,1279 +3,13 @@ -- PilzAdam's original text-on-signs mod and rewritten by Vanessa Ezekowitz -- and Diego Martinez --- textpos = { --- { delta = {entity position for 0° yaw}, exact yaw expression } --- { delta = {entity position for 180° yaw}, exact yaw expression } --- { delta = {entity position for 270° yaw}, exact yaw expression } --- { delta = {entity position for 90° yaw}, exact yaw expression } --- } --- Made colored metal signs optionals -local enable_colored_metal_signs = true - --- CWz's keyword interact mod uses this setting. -local current_keyword = minetest.settings:get("interact_keyword") or "iaccept" - signs_lib = {} -signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) -screwdriver = screwdriver or {} --- Load support for intllib. +signs_lib.path = minetest.get_modpath(minetest.get_current_modname()) + local S, NS = dofile(signs_lib.path .. "/intllib.lua") signs_lib.gettext = S --- text encoding -dofile(signs_lib.path .. "/encoding.lua"); - --- Initialize character texture cache -local ctexcache = {} - - -local wall_dir_change = { - [0] = 4, - 0, - 5, - 1, - 2, - 3, - 0 -} - -signs_lib.wallmounted_rotate = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - minetest.swap_node(pos, { name = node.name, param2 = wall_dir_change[node.param2 % 6] }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - -signs_lib.facedir_rotate = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - local newparam2 = (node.param2 %8) + 1 - if newparam2 == 5 then - newparam2 = 6 - elseif newparam2 > 6 then - newparam2 = 0 - end - minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - -signs_lib.facedir_rotate_simple = function(pos, node, user, mode) - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return false - end - if mode ~= screwdriver.ROTATE_FACE then return false end - local newparam2 = (node.param2 %8) + 1 - if newparam2 > 3 then newparam2 = 0 end - minetest.swap_node(pos, { name = node.name, param2 = newparam2 }) - signs_lib.update_sign(pos,nil,nil,node) - return true -end - - -signs_lib.modpath = minetest.get_modpath("signs_lib") - -local DEFAULT_TEXT_SCALE = {x=0.8, y=0.5} - -signs_lib.regular_wall_sign_model = { - nodebox = { - type = "wallmounted", - wall_side = { -0.5, -0.25, -0.4375, -0.4375, 0.375, 0.4375 }, - wall_bottom = { -0.4375, -0.5, -0.25, 0.4375, -0.4375, 0.375 }, - wall_top = { -0.4375, 0.4375, -0.375, 0.4375, 0.5, 0.25 } - }, - textpos = { - nil, - nil, - {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, - {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, - {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, - } -} - -signs_lib.metal_wall_sign_model = { - nodebox = { - type = "fixed", - fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5} - }, - textpos = { - {delta = { x = 0, y = 0.07, z = 0.41 }, yaw = 0}, - {delta = { x = 0.41, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = -0.41 }, yaw = math.pi}, - {delta = { x = -0.41, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - -signs_lib.yard_sign_model = { - nodebox = { - type = "fixed", - fixed = { - {-0.4375, -0.25, -0.0625, 0.4375, 0.375, 0}, - {-0.0625, -0.5, -0.0625, 0.0625, -0.1875, 0}, - } - }, - textpos = { - {delta = { x = 0, y = 0.07, z = -0.08 }, yaw = 0}, - {delta = { x = -0.08, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = 0.08 }, yaw = math.pi}, - {delta = { x = 0.08, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - -signs_lib.hanging_sign_model = { - nodebox = { - type = "fixed", - fixed = { - {-0.4375, -0.3125, -0.0625, 0.4375, 0.3125, 0}, - {-0.4375, 0.25, -0.03125, 0.4375, 0.5, -0.03125}, - } - }, - textpos = { - {delta = { x = 0, y = -0.02, z = -0.08 }, yaw = 0}, - {delta = { x = -0.08, y = -0.02, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = -0.02, z = 0.08 }, yaw = math.pi}, - {delta = { x = 0.08, y = -0.02, z = 0 }, yaw = math.pi / 2}, - } -} - -signs_lib.sign_post_model = { - nodebox = { - type = "fixed", - fixed = { - {-0.4375, -0.25, -0.1875, 0.4375, 0.375, -0.125}, - {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, - } - }, - textpos = { - {delta = { x = 0, y = 0.07, z = -0.2 }, yaw = 0}, - {delta = { x = -0.2, y = 0.07, z = 0 }, yaw = math.pi / -2}, - {delta = { x = 0, y = 0.07, z = 0.2 }, yaw = math.pi}, - {delta = { x = 0.2, y = 0.07, z = 0 }, yaw = math.pi / 2}, - } -} - --- the list of standard sign nodes - -local default_sign = "default:sign_wall_wood" -local default_sign_image = "default_sign_wood.png" - -local default_sign_metal = "default:sign_wall_steel" -local default_sign_metal_image = "default_sign_steel.png" - -signs_lib.sign_node_list = { - default_sign, - default_sign_metal, - "signs:sign_yard", - "signs:sign_hanging", - "signs:sign_wall_green", - "signs:sign_wall_yellow", - "signs:sign_wall_red", - "signs:sign_wall_white_red", - "signs:sign_wall_white_black", - "signs:sign_wall_orange", - "signs:sign_wall_blue", - "signs:sign_wall_brown", - "locked_sign:sign_wall_locked" -} - ---table copy - -function signs_lib.table_copy(t) - local nt = { } - for k, v in pairs(t) do - if type(v) == "table" then - nt[k] = signs_lib.table_copy(v) - else - nt[k] = v - end - end - return nt -end - --- infinite stacks - -if not minetest.settings:get_bool("creative_mode") then - signs_lib.expect_infinite_stacks = false -else - signs_lib.expect_infinite_stacks = true -end - --- CONSTANTS - --- Path to the textures. -local TP = signs_lib.path .. "/textures" --- Font file formatter -local CHAR_FILE = "%s_%02x.png" --- Fonts path -local CHAR_PATH = TP .. "/" .. CHAR_FILE - --- Font name. -local font_name = "hdf" - --- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza - -local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) - --- check if a file does exist --- to avoid reopening file after checking again --- pass TRUE as second argument -function file_exists(name, return_handle, mode) - mode = mode or "r"; - local f = io.open(name, mode) - if f ~= nil then - if (return_handle) then - return f - end - io.close(f) - return true - else - return false - end -end - --- Read the image size from a PNG file. --- Returns image_w, image_h. --- Only the LSB is read from each field! -local function read_image_size(filename) - local f = file_exists(filename, true, "rb") - -- file might not exist (don't crash the game) - if (not f) then - return 0, 0 - end - f:seek("set", 0x0) - local hdr = f:read(string.len(PNG_HDR)) - if hdr ~= PNG_HDR then - f:close() - return - end - f:seek("set", 0x13) - local ws = f:read(1) - f:seek("set", 0x17) - local hs = f:read(1) - f:close() - return ws:byte(), hs:byte() -end - --- Set by build_char_db() -local LINE_HEIGHT -local SIGN_WIDTH -local COLORBGW, COLORBGH - --- Size of the canvas, in characters. --- Please note that CHARS_PER_LINE is multiplied by the average character --- width to get the total width of the canvas, so for proportional fonts, --- either more or fewer characters may fit on a line. -local CHARS_PER_LINE = 30 -local NUMBER_OF_LINES = 6 - --- 6 rows, max 80 chars per, plus a bit of fudge to --- avoid excess trimming (e.g. due to color codes) - -local MAX_INPUT_CHARS = 600 - --- This holds the individual character widths. --- Indexed by the actual character (e.g. charwidth["A"]) -local charwidth - --- helper functions to trim sign text input/output - -local function trim_input(text) - return text:sub(1, math.min(MAX_INPUT_CHARS, text:len())) -end - -local function build_char_db() - - charwidth = { } - - -- To calculate average char width. - local total_width = 0 - local char_count = 0 - - for c = 32, 255 do - local w, h = read_image_size(CHAR_PATH:format(font_name, c)) - if w and h then - local ch = string.char(c) - charwidth[ch] = w - total_width = total_width + w - char_count = char_count + 1 - end - end - - COLORBGW, COLORBGH = read_image_size(TP.."/slc_n.png") - assert(COLORBGW and COLORBGH, "error reading bg dimensions") - LINE_HEIGHT = COLORBGH - - -- XXX: Is there a better way to calc this? - SIGN_WIDTH = math.floor((total_width / char_count) * CHARS_PER_LINE) - -end - -local sign_groups = {choppy=2, dig_immediate=2} - -local fences_with_sign = { } - --- some local helper functions - -local function split_lines_and_words_old(text) - local lines = { } - local line = { } - if not text then return end - for word in text:gmatch("%S+") do - if word == "|" then - table.insert(lines, line) - if #lines >= NUMBER_OF_LINES then break end - line = { } - elseif word == "\\|" then - table.insert(line, "|") - else - table.insert(line, word) - end - end - table.insert(lines, line) - return lines -end - -local function split_lines_and_words(text) - if not text then return end - text = string.gsub(text, "@KEYWORD", current_keyword) - local lines = { } - for _, line in ipairs(text:split("\n")) do - table.insert(lines, line:split(" ")) - end - return lines -end - -local math_max = math.max - -local function fill_line(x, y, w, c) - c = c or "0" - local tex = { } - for xx = 0, math.max(0, w), COLORBGW do - table.insert(tex, (":%d,%d=slc_%s.png"):format(x + xx, y, c)) - end - return table.concat(tex) -end - --- make char texture file name --- if texture file does not exist use fallback texture instead -local function char_tex(font_name, ch) - if ctexcache[font_name..ch] then - return ctexcache[font_name..ch], true - else - local c = ch:byte() - local exists, tex = file_exists(CHAR_PATH:format(font_name, c)) - if exists and c ~= 14 then - tex = CHAR_FILE:format(font_name, c) - else - tex = CHAR_FILE:format(font_name, 0x0) - end - ctexcache[font_name..ch] = tex - return tex, exists - end -end - -local function make_line_texture(line, lineno, pos) - - local width = 0 - local maxw = 0 - - local words = { } - local n = minetest.registered_nodes[minetest.get_node(pos).name] - local default_color = n.default_color or 0 - - local cur_color = tonumber(default_color, 16) - - -- We check which chars are available here. - for word_i, word in ipairs(line) do - local chars = { } - local ch_offs = 0 - word = string.gsub(word, "%^[12345678abcdefgh]", { - ["^1"] = string.char(0x81), - ["^2"] = string.char(0x82), - ["^3"] = string.char(0x83), - ["^4"] = string.char(0x84), - ["^5"] = string.char(0x85), - ["^6"] = string.char(0x86), - ["^7"] = string.char(0x87), - ["^8"] = string.char(0x88), - ["^a"] = string.char(0x8a), - ["^b"] = string.char(0x8b), - ["^c"] = string.char(0x8c), - ["^d"] = string.char(0x8d), - ["^e"] = string.char(0x8e), - ["^f"] = string.char(0x8f), - ["^g"] = string.char(0x90), - ["^h"] = string.char(0x91) - }) - local word_l = #word - local i = 1 - while i <= word_l do - local c = word:sub(i, i) - if c == "#" then - local cc = tonumber(word:sub(i+1, i+1), 16) - if cc then - i = i + 1 - cur_color = cc - end - else - local w = charwidth[c] - if w then - width = width + w + 1 - if width >= (SIGN_WIDTH - charwidth[" "]) then - width = 0 - else - maxw = math_max(width, maxw) - end - if #chars < MAX_INPUT_CHARS then - table.insert(chars, { - off = ch_offs, - tex = char_tex(font_name, c), - col = ("%X"):format(cur_color), - }) - end - ch_offs = ch_offs + w - end - end - i = i + 1 - end - width = width + charwidth[" "] + 1 - maxw = math_max(width, maxw) - table.insert(words, { chars=chars, w=ch_offs }) - end - - -- Okay, we actually build the "line texture" here. - - local texture = { } - - local start_xpos = math.floor((SIGN_WIDTH - maxw) / 2) - - local xpos = start_xpos - local ypos = (LINE_HEIGHT * lineno) - - cur_color = nil - - for word_i, word in ipairs(words) do - local xoffs = (xpos - start_xpos) - if (xoffs > 0) and ((xoffs + word.w) > maxw) then - table.insert(texture, fill_line(xpos, ypos, maxw, "n")) - xpos = start_xpos - ypos = ypos + LINE_HEIGHT - lineno = lineno + 1 - if lineno >= NUMBER_OF_LINES then break end - table.insert(texture, fill_line(xpos, ypos, maxw, cur_color)) - end - for ch_i, ch in ipairs(word.chars) do - if ch.col ~= cur_color then - cur_color = ch.col - table.insert(texture, fill_line(xpos + ch.off, ypos, maxw, cur_color)) - end - table.insert(texture, (":%d,%d=%s"):format(xpos + ch.off, ypos, ch.tex)) - end - table.insert( - texture, - (":%d,%d="):format(xpos + word.w, ypos) .. char_tex(font_name, " ") - ) - xpos = xpos + word.w + charwidth[" "] - if xpos >= (SIGN_WIDTH + charwidth[" "]) then break end - end - - table.insert(texture, fill_line(xpos, ypos, maxw, "n")) - table.insert(texture, fill_line(start_xpos, ypos + LINE_HEIGHT, maxw, "n")) - - return table.concat(texture), lineno -end - -local function make_sign_texture(lines, pos) - local texture = { ("[combine:%dx%d"):format(SIGN_WIDTH, LINE_HEIGHT * NUMBER_OF_LINES) } - local lineno = 0 - for i = 1, #lines do - if lineno >= NUMBER_OF_LINES then break end - local linetex, ln = make_line_texture(lines[i], lineno, pos) - table.insert(texture, linetex) - lineno = ln + 1 - end - table.insert(texture, "^[makealpha:0,0,0") - return table.concat(texture, "") -end - -local function set_obj_text(obj, text, new, pos) - local split = new and split_lines_and_words or split_lines_and_words_old - local text_ansi = Utf8ToAnsi(text) - local n = minetest.registered_nodes[minetest.get_node(pos).name] - local text_scale = (n and n.text_scale) or DEFAULT_TEXT_SCALE - obj:set_properties({ - textures={make_sign_texture(split(text_ansi), pos)}, - visual_size = text_scale, - }) -end - -signs_lib.construct_sign = function(pos, locked) - local meta = minetest.get_meta(pos) - meta:set_string( - "formspec", - "size[6,4]".. - "textarea[0,-0.3;6.5,3;text;;${text}]".. - "button_exit[2,3.4;2,1;ok;"..S("Write").."]".. - "background[-0.5,-0.5;7,5;bg_signs_lib.jpg]") - meta:set_string("infotext", "") -end - -signs_lib.destruct_sign = function(pos) - local objects = minetest.get_objects_inside_radius(pos, 0.5) - for _, v in ipairs(objects) do - local e = v:get_luaentity() - if e and e.name == "signs:text" then - v:remove() - end - end -end - -local function make_infotext(text) - text = trim_input(text) - local lines = split_lines_and_words(text) or {} - local lines2 = { } - for _, line in ipairs(lines) do - table.insert(lines2, (table.concat(line, " "):gsub("#[0-9a-fA-F]", ""):gsub("##", "#"))) - end - return table.concat(lines2, "\n") -end - -signs_lib.update_sign = function(pos, fields, owner, node) - - -- First, check if the interact keyword from CWz's mod is being set, - -- or has been changed since the last restart... - - local meta = minetest.get_meta(pos) - local stored_text = meta:get_string("text") or "" - current_keyword = rawget(_G, "mki_interact_keyword") or current_keyword - - if fields then -- ...we're editing the sign. - if fields.text and string.find(dump(fields.text), "@KEYWORD") then - meta:set_string("keyword", current_keyword) - else - meta:set_string("keyword", nil) - end - elseif string.find(dump(stored_text), "@KEYWORD") then -- we need to check if the password is being set/changed - - local stored_keyword = meta:get_string("keyword") - if stored_keyword and stored_keyword ~= "" and stored_keyword ~= current_keyword then - signs_lib.destruct_sign(pos) - meta:set_string("keyword", current_keyword) - local ownstr = "" - if owner then ownstr = S("Locked sign, owned by @1\n", owner) end - meta:set_string("infotext", ownstr..string.gsub(make_infotext(stored_text), "@KEYWORD", current_keyword).." ") - end - end - - local new - - if fields then - - fields.text = trim_input(fields.text) - - local ownstr = "" - if owner then ownstr = S("Locked sign, owned by @1\n", owner) end - - meta:set_string("infotext", ownstr..string.gsub(make_infotext(fields.text), "@KEYWORD", current_keyword).." ") - meta:set_string("text", fields.text) - - meta:set_int("__signslib_new_format", 1) - new = true - else - new = (meta:get_int("__signslib_new_format") ~= 0) - end - signs_lib.destruct_sign(pos) - local text = meta:get_string("text") - if text == nil or text == "" then return end - local sign_info - local signnode = node or minetest.get_node(pos) - local signname = signnode.name - local textpos = minetest.registered_nodes[signname].textpos - if textpos then - sign_info = textpos[minetest.get_node(pos).param2 + 1] - elseif signnode.name == "signs:sign_yard" then - sign_info = signs_lib.yard_sign_model.textpos[minetest.get_node(pos).param2 + 1] - elseif signnode.name == "signs:sign_hanging" then - sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1] - elseif string.find(signnode.name, "sign_wall") then - if signnode.name == default_sign - or signnode.name == default_sign_metal - or signnode.name == "locked_sign:sign_wall_locked" then - sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] - else - sign_info = signs_lib.metal_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1] - end - else -- ...it must be a sign on a fence post. - sign_info = signs_lib.sign_post_model.textpos[minetest.get_node(pos).param2 + 1] - end - if sign_info == nil then - return - end - local text = minetest.add_entity({x = pos.x + sign_info.delta.x, - y = pos.y + sign_info.delta.y, - z = pos.z + sign_info.delta.z}, "signs:text") - text:setyaw(sign_info.yaw) -end - --- What kind of sign do we need to place, anyway? - -function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked) - local name - name = minetest.get_node(pointed_thing.under).name - if fences_with_sign[name] then - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - minetest.record_protection_violation(pointed_thing.under, - placer:get_player_name()) - return itemstack - end - else - name = minetest.get_node(pointed_thing.above).name - local def = minetest.registered_nodes[name] - if not def.buildable_to then - return itemstack - end - if minetest.is_protected(pointed_thing.above, placer:get_player_name()) then - minetest.record_protection_violation(pointed_thing.above, - placer:get_player_name()) - return itemstack - end - end - - local node=minetest.get_node(pointed_thing.under) - - if minetest.registered_nodes[node.name] and - minetest.registered_nodes[node.name].on_rightclick and - not placer:get_player_control().sneak then - return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) - else - local above = pointed_thing.above - local under = pointed_thing.under - local dir = {x = under.x - above.x, - y = under.y - above.y, - z = under.z - above.z} - - local wdir = minetest.dir_to_wallmounted(dir) - - local placer_pos = placer:getpos() - if placer_pos then - dir = { - x = above.x - placer_pos.x, - y = above.y - placer_pos.y, - z = above.z - placer_pos.z - } - end - local finalpos = above - - local fdir = minetest.dir_to_facedir(dir) - local pt_name = minetest.get_node(under).name - local signname = itemstack:get_name() - - if fences_with_sign[pt_name] and signname == default_sign then - minetest.add_node(under, {name = fences_with_sign[pt_name], param2 = fdir}) - finalpos = under - elseif wdir == 0 and signname == default_sign then - minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir}) - elseif wdir == 1 and signname == default_sign then - minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir}) - elseif signname == default_sign - or signname == default_sign_metal - or signname == "locked_sign:sign_wall_locked" then - minetest.add_node(above, {name = signname, param2 = wdir }) - else - minetest.add_node(above, {name = signname, param2 = fdir}) -- it must be a colored metal sign - end - - if locked then - local meta = minetest.get_meta(finalpos) - local owner = placer:get_player_name() - meta:set_string("owner", owner) - end - - if not signs_lib.expect_infinite_stacks then - itemstack:take_item() - end - return itemstack - end -end - -function signs_lib.receive_fields(pos, formname, fields, sender, lock) - if minetest.is_protected(pos, sender:get_player_name()) then - minetest.record_protection_violation(pos, - sender:get_player_name()) - return - end - local lockstr = lock and S("locked ") or "" - if fields and fields.text and fields.ok then - minetest.log("action", S("@1 wrote \"@2\" to @3sign at @4", - (sender:get_player_name() or ""), - fields.text:gsub('\\', '\\\\'):gsub("\n", "\\n"), - lockstr, - minetest.pos_to_string(pos) - )) - if lock then - signs_lib.update_sign(pos, fields, sender:get_player_name()) - else - signs_lib.update_sign(pos, fields) - end - end -end - -minetest.register_node(":"..default_sign, { - description = S("Sign"), - inventory_image = default_sign_image, - wield_image = default_sign_image, - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = {"signs_wall_sign.png"}, - groups = sign_groups, - - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.wallmounted_rotate -}) - -minetest.register_node(":signs:sign_yard", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.yard_sign_model.nodebox, - selection_box = { - type = "fixed", - fixed = {-0.4375, -0.5, -0.0625, 0.4375, 0.375, 0} - }, - tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"}, - groups = {choppy=2, dig_immediate=2}, - drop = default_sign, - - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate_simple - -}) - -minetest.register_node(":signs:sign_hanging", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.hanging_sign_model.nodebox, - selection_box = { - type = "fixed", - fixed = {-0.45, -0.275, -0.049, 0.45, 0.5, 0.049} - }, - tiles = { - "signs_hanging_top.png", - "signs_hanging_bottom.png", - "signs_hanging_side.png", - "signs_hanging_side.png", - "signs_hanging_back.png", - "signs_hanging_front.png" - }, - groups = {choppy=2, dig_immediate=2}, - drop = default_sign, - - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate_simple -}) - -minetest.register_node(":signs:sign_post", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.sign_post_model.nodebox, - tiles = { - "signs_post_top.png", - "signs_post_bottom.png", - "signs_post_side.png", - "signs_post_side.png", - "signs_post_back.png", - "signs_post_front.png", - }, - groups = {choppy=2, dig_immediate=2}, - drop = { - max_items = 2, - items = { - { items = { default_sign }}, - { items = { "default:fence_wood" }}, - }, - }, - on_rotate = signs_lib.facedir_rotate_simple -}) - --- Locked wall sign - -minetest.register_privilege("sign_editor", S("Can edit all locked signs")) - -minetest.register_node(":locked_sign:sign_wall_locked", { - description = S("Locked Sign"), - inventory_image = "signs_locked_inv.png", - wield_image = "signs_locked_inv.png", - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = { "signs_wall_sign_locked.png" }, - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos, true) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = sender:get_player_name() or "" - if pname ~= owner and pname ~= minetest.settings:get("name") - and not minetest.check_player_privs(pname, {sign_editor=true}) then - return - end - signs_lib.receive_fields(pos, formname, fields, sender, true) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - can_dig = function(pos, player) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = player:get_player_name() - return pname == owner or pname == minetest.settings:get("name") - or minetest.check_player_privs(pname, {sign_editor=true}) - end, - on_rotate = function(pos, node, user, mode) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - if owner == user:get_player_name() then - signs_lib.wallmounted_rotate(pos, node, user, mode) - else - return false - end - end -}) - --- default metal sign - -minetest.register_node(":"..default_sign_metal, { - description = S("Sign"), - inventory_image = default_sign_metal_image, - wield_image = default_sign_metal_image, - node_placement_prediction = "", - sunlight_propagates = true, - paramtype = "light", - paramtype2 = "wallmounted", - drawtype = "nodebox", - node_box = signs_lib.regular_wall_sign_model.nodebox, - tiles = {"signs_wall_sign_metal.png"}, - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos, true) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = sender:get_player_name() or "" - if pname ~= owner and pname ~= minetest.settings:get("name") - and not minetest.check_player_privs(pname, {sign_editor=true}) then - return - end - signs_lib.receive_fields(pos, formname, fields, sender, true) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - can_dig = function(pos, player) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = player:get_player_name() - return pname == owner or pname == minetest.settings:get("name") - or minetest.check_player_privs(pname, {sign_editor=true}) - end, - on_rotate = function(pos, node, user, mode) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - if owner == user:get_player_name() then - signs_lib.wallmounted_rotate(pos, node, user, mode) - else - return false - end - end -}) - --- metal, colored signs -if enable_colored_metal_signs then - -- array : color, translated color, default text color - local sign_colors = { - {"green", S("green"), "f"}, - {"yellow", S("yellow"), "0"}, - {"red", S("red"), "f"}, - {"white_red", S("white_red"), "4"}, - {"white_black", S("white_black"), "0"}, - {"orange", S("orange"), "0"}, - {"blue", S("blue"), "f"}, - {"brown", S("brown"), "f"}, - } - - for i, color in ipairs(sign_colors) do - minetest.register_node(":signs:sign_wall_"..color[1], { - description = S("Sign (@1, metal)", color[2]), - inventory_image = "signs_"..color[1].."_inv.png", - wield_image = "signs_"..color[1].."_inv.png", - node_placement_prediction = "", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - drawtype = "nodebox", - node_box = signs_lib.metal_wall_sign_model.nodebox, - tiles = { - "signs_metal_tb.png", - "signs_metal_tb.png", - "signs_metal_sides.png", - "signs_metal_sides.png", - "signs_metal_back.png", - "signs_"..color[1].."_front.png" - }, - default_color = color[3], - groups = sign_groups, - on_place = function(itemstack, placer, pointed_thing) - return signs_lib.determine_sign_type(itemstack, placer, pointed_thing) - end, - on_construct = function(pos) - signs_lib.construct_sign(pos) - end, - on_destruct = function(pos) - signs_lib.destruct_sign(pos) - end, - on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end, - on_punch = function(pos, node, puncher) - signs_lib.update_sign(pos,nil,nil,node) - end, - on_rotate = signs_lib.facedir_rotate - }) - end -end - -local signs_text_on_activate - -signs_text_on_activate = function(self) - local pos = self.object:getpos() - local meta = minetest.get_meta(pos) - local text = meta:get_string("text") - local new = (meta:get_int("__signslib_new_format") ~= 0) - if text and minetest.registered_nodes[minetest.get_node(pos).name] then - text = trim_input(text) - set_obj_text(self.object, text, new, pos) - end -end - -minetest.register_entity(":signs:text", { - collisionbox = { 0, 0, 0, 0, 0, 0 }, - visual = "upright_sprite", - textures = {}, - - on_activate = signs_text_on_activate, -}) - --- And the good stuff here! :-) - -function signs_lib.register_fence_with_sign(fencename, fencewithsignname) - local def = minetest.registered_nodes[fencename] - local def_sign = minetest.registered_nodes[fencewithsignname] - if not (def and def_sign) then - minetest.log("warning", "[signs_lib] "..S("Attempt to register unknown node as fence")) - return - end - def = signs_lib.table_copy(def) - def_sign = signs_lib.table_copy(def_sign) - fences_with_sign[fencename] = fencewithsignname - - def_sign.on_place = function(itemstack, placer, pointed_thing, ...) - local node_above = minetest.get_node_or_nil(pointed_thing.above) - local node_under = minetest.get_node_or_nil(pointed_thing.under) - local def_above = node_above and minetest.registered_nodes[node_above.name] - local def_under = node_under and minetest.registered_nodes[node_under.name] - local fdir = minetest.dir_to_facedir(placer:get_look_dir()) - local playername = placer:get_player_name() - - if minetest.is_protected(pointed_thing.under, playername) then - minetest.record_protection_violation(pointed_thing.under, playername) - return itemstack - end - - if minetest.is_protected(pointed_thing.above, playername) then - minetest.record_protection_violation(pointed_thing.above, playername) - return itemstack - end - - if def_under and def_under.on_rightclick then - return def_under.on_rightclick(pointed_thing.under, node_under, placer, itemstack, pointed_thing) or itemstack - elseif def_under and def_under.buildable_to then - minetest.add_node(pointed_thing.under, {name = fencename, param2 = fdir}) - if not signs_lib.expect_infinite_stacks then - itemstack:take_item() - end - placer:set_wielded_item(itemstack) - elseif def_above and def_above.buildable_to then - minetest.add_node(pointed_thing.above, {name = fencename, param2 = fdir}) - if not signs_lib.expect_infinite_stacks then - itemstack:take_item() - end - placer:set_wielded_item(itemstack) - end - return itemstack - end - def_sign.on_construct = function(pos, ...) - signs_lib.construct_sign(pos) - end - def_sign.on_destruct = function(pos, ...) - signs_lib.destruct_sign(pos) - end - def_sign.on_receive_fields = function(pos, formname, fields, sender) - signs_lib.receive_fields(pos, formname, fields, sender) - end - def_sign.on_punch = function(pos, node, puncher, ...) - signs_lib.update_sign(pos,nil,nil,node) - end - local fencename = fencename - def_sign.after_dig_node = function(pos, node, ...) - node.name = fencename - minetest.add_node(pos, node) - end - def_sign.on_rotate = signs_lib.facedir_rotate_simple - - def_sign.drop = default_sign - minetest.register_node(":"..fencewithsignname, def_sign) - table.insert(signs_lib.sign_node_list, fencewithsignname) - minetest.log("verbose", S("Registered @1 and @2", fencename, fencewithsignname)) -end - -build_char_db() - -minetest.register_alias("homedecor:fence_wood_with_sign", "signs:sign_post") -minetest.register_alias("sign_wall_locked", "locked_sign:sign_wall_locked") - -signs_lib.register_fence_with_sign("default:fence_wood", "signs:sign_post") - --- restore signs' text after /clearobjects and the like, the next time --- a block is reloaded by the server. - -minetest.register_lbm({ - nodenames = signs_lib.sign_node_list, - name = "signs_lib:restore_sign_text", - label = "Restore sign text", - run_at_every_load = true, - action = function(pos, node) - signs_lib.update_sign(pos,nil,nil,node) - end -}) - --- locked sign - -minetest.register_craft({ - output = "locked_sign:sign_wall_locked", - recipe = { - {default_sign}, - {"basic_materials:padlock"}, - }, -}) - --- craft recipes for the metal signs -if enable_colored_metal_signs then - - minetest.register_craft( { - output = "signs:sign_wall_green", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_green 2", - recipe = { - { "dye:dark_green", "dye:white", "dye:dark_green" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_yellow", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_yellow 2", - recipe = { - { "dye:yellow", "dye:black", "dye:yellow" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_red", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_red 2", - recipe = { - { "dye:red", "dye:white", "dye:red" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_red", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_red 2", - recipe = { - { "dye:white", "dye:red", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_black", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_white_black 2", - recipe = { - { "dye:white", "dye:black", "dye:white" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_orange", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_orange 2", - recipe = { - { "dye:orange", "dye:black", "dye:orange" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_blue", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_blue 2", - recipe = { - { "dye:blue", "dye:white", "dye:blue" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_brown", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "", default_sign_metal, "" } - }, - }) - - minetest.register_craft( { - output = "signs:sign_wall_brown 2", - recipe = { - { "dye:brown", "dye:white", "dye:brown" }, - { "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" } - }, - }) -end - -if minetest.settings:get("log_mods") then - minetest.log("action", S("[MOD] signs loaded")) -end +dofile(signs_lib.path.."/api.lua") +dofile(signs_lib.path.."/encoding.lua") +dofile(signs_lib.path.."/standard_signs.lua") diff --git a/signs_lib/models/signs_lib_standard_wall_sign.obj b/signs_lib/models/signs_lib_standard_wall_sign.obj new file mode 100644 index 00000000..639444ff --- /dev/null +++ b/signs_lib/models/signs_lib_standard_wall_sign.obj @@ -0,0 +1,52 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.500000 -0.312500 +v 0.437500 -0.437500 -0.312500 +v 0.437500 -0.500000 0.312500 +v 0.437500 -0.437500 0.312500 +v -0.437500 -0.500000 -0.312500 +v -0.437500 -0.437500 -0.312500 +v -0.437500 -0.500000 0.312500 +v -0.437500 -0.437500 0.312500 +v 0.437500 -0.500000 -0.312500 +v 0.437500 -0.437500 -0.312500 +v 0.437500 -0.500000 0.312500 +v 0.437500 -0.437500 0.312500 +v -0.437500 -0.500000 -0.312500 +v -0.437500 -0.437500 -0.312500 +v -0.437500 -0.500000 0.312500 +v -0.437500 -0.437500 0.312500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 diff --git a/signs_lib/models/signs_lib_standard_wall_sign_entity.obj b/signs_lib/models/signs_lib_standard_wall_sign_entity.obj new file mode 100644 index 00000000..ca7eddb5 --- /dev/null +++ b/signs_lib/models/signs_lib_standard_wall_sign_entity.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--entity.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 0.429687 +v 0.406250 0.281250 0.429688 +v -0.406250 -0.281250 0.429687 +v -0.406250 0.281250 0.429688 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/signs_lib/models/signs_lib_standard_wall_sign_entity_onpole.obj b/signs_lib/models/signs_lib_standard_wall_sign_entity_onpole.obj new file mode 100644 index 00000000..2be0885f --- /dev/null +++ b/signs_lib/models/signs_lib_standard_wall_sign_entity_onpole.obj @@ -0,0 +1,15 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.406250 -0.281250 0.742188 +v 0.406250 0.281250 0.742188 +v -0.406250 -0.281250 0.742188 +v -0.406250 0.281250 0.742188 +vt 0.906250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.218750 +vt 0.906250 0.218750 +vn 0.0000 0.0000 -1.0000 +g Cube_Cube_None +s off +f 4/1/1 2/2/1 1/3/1 3/4/1 diff --git a/signs_lib/models/signs_lib_standard_wall_sign_facedir.obj b/signs_lib/models/signs_lib_standard_wall_sign_facedir.obj new file mode 100644 index 00000000..90dbeee9 --- /dev/null +++ b/signs_lib/models/signs_lib_standard_wall_sign_facedir.obj @@ -0,0 +1,52 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--facedir.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.500000 +v 0.437500 -0.312500 0.437500 +v 0.437500 0.312500 0.500000 +v 0.437500 0.312500 0.437500 +v -0.437500 -0.312500 0.500000 +v -0.437500 -0.312500 0.437500 +v -0.437500 0.312500 0.500000 +v -0.437500 0.312500 0.437500 +v 0.437500 -0.312500 0.500000 +v 0.437500 -0.312500 0.437500 +v 0.437500 0.312500 0.500000 +v 0.437500 0.312500 0.437500 +v -0.437500 -0.312500 0.500000 +v -0.437500 -0.312500 0.437500 +v -0.437500 0.312500 0.500000 +v -0.437500 0.312500 0.437500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 diff --git a/signs_lib/models/signs_lib_standard_wall_sign_facedir_onpole.obj b/signs_lib/models/signs_lib_standard_wall_sign_facedir_onpole.obj new file mode 100644 index 00000000..264ceb7e --- /dev/null +++ b/signs_lib/models/signs_lib_standard_wall_sign_facedir_onpole.obj @@ -0,0 +1,254 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign--facedir.blend' +# www.blender.org +o Cube +v 0.437500 -0.312500 0.812500 +v 0.437500 -0.312500 0.750000 +v 0.437500 0.312500 0.812500 +v 0.437500 0.312500 0.750000 +v -0.437500 -0.312500 0.812500 +v -0.437500 -0.312500 0.750000 +v -0.437500 0.312500 0.812500 +v -0.437500 0.312500 0.750000 +v 0.437500 -0.312500 0.812500 +v 0.437500 -0.312500 0.750000 +v 0.437500 0.312500 0.812500 +v 0.437500 0.312500 0.750000 +v -0.437500 -0.312500 0.812500 +v -0.437500 -0.312500 0.750000 +v -0.437500 0.312500 0.812500 +v -0.437500 0.312500 0.750000 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +o Cube.001 +v -0.125000 -0.187500 0.812500 +v -0.125000 -0.187500 0.875000 +v -0.125000 0.187500 0.812500 +v -0.125000 0.187500 0.875000 +v 0.125000 0.187500 0.812500 +v 0.125000 -0.187500 0.812500 +v 0.125000 -0.187500 0.875000 +v 0.125000 0.187500 0.875000 +v -0.125000 -0.187500 1.125000 +v -0.125000 -0.187500 0.812500 +v -0.125000 -0.125000 1.125000 +v -0.125000 -0.125000 0.812500 +v -0.164063 -0.187500 1.125000 +v -0.164063 -0.187500 0.812500 +v -0.164063 -0.125000 1.125000 +v -0.164063 -0.125000 0.812500 +v -0.125000 0.125000 1.125000 +v -0.125000 0.125000 0.812500 +v -0.125000 0.187500 1.125000 +v -0.125000 0.187500 0.812500 +v -0.164063 0.125000 1.125000 +v -0.164063 0.125000 0.812500 +v -0.164063 0.187500 1.125000 +v -0.164063 0.187500 0.812500 +v 0.164062 -0.187500 1.125000 +v 0.164062 -0.187500 0.812500 +v 0.164062 -0.125000 1.125000 +v 0.164062 -0.125000 0.812500 +v 0.125000 -0.187500 1.125000 +v 0.125000 -0.187500 0.812500 +v 0.125000 -0.125000 1.125000 +v 0.125000 -0.125000 0.812500 +v 0.164062 0.125000 1.125000 +v 0.164062 0.125000 0.812500 +v 0.164062 0.187500 1.125000 +v 0.164062 0.187500 0.812500 +v 0.125000 0.125000 1.125000 +v 0.125000 0.125000 0.812500 +v 0.125000 0.187500 1.125000 +v 0.125000 0.187500 0.812500 +v -0.164063 -0.187500 1.164063 +v 0.164062 -0.187500 1.164063 +v -0.164063 -0.125000 1.164063 +v 0.164062 -0.125000 1.164063 +v -0.164063 -0.187500 1.125000 +v 0.164062 -0.187500 1.125000 +v -0.164063 -0.125000 1.125000 +v 0.164062 -0.125000 1.125000 +v -0.164063 0.125000 1.164063 +v 0.164062 0.125000 1.164063 +v -0.164063 0.187500 1.164063 +v 0.164062 0.187500 1.164063 +v -0.164063 0.125000 1.125000 +v 0.164062 0.125000 1.125000 +v -0.164063 0.187500 1.125000 +v 0.164062 0.187500 1.125000 +vt 0.843750 0.507812 +vt 0.703125 0.507812 +vt 0.703125 0.093750 +vt 0.843750 0.093750 +vt 0.015625 0.507812 +vt 0.015625 0.093750 +vt 0.156250 0.093750 +vt 0.156250 0.507812 +vt 0.156250 0.031250 +vt 0.703125 0.031250 +vt 0.703125 0.578125 +vt 0.156250 0.578125 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +g Cube.001_Cube.001_pole_mount +s off +f 17/19/7 18/20/7 20/21/7 19/22/7 +f 22/23/8 21/24/8 24/25/8 23/26/8 +f 20/21/9 24/25/9 21/27/9 19/28/9 +f 17/29/10 22/30/10 23/26/10 18/20/10 +f 18/20/11 23/26/11 24/25/11 20/21/11 +f 25/31/8 26/32/8 28/33/8 27/34/8 +f 27/35/9 28/36/9 32/37/9 31/38/9 +f 31/39/7 32/40/7 30/41/7 29/42/7 +f 29/42/10 30/41/10 26/43/10 25/44/10 +f 33/45/8 34/46/8 36/47/8 35/48/8 +f 35/49/9 36/50/9 40/51/9 39/52/9 +f 39/53/7 40/54/7 38/55/7 37/56/7 +f 37/56/10 38/55/10 34/57/10 33/58/10 +f 41/59/8 42/60/8 44/61/8 43/62/8 +f 43/63/9 44/64/9 48/65/9 47/66/9 +f 47/67/7 48/68/7 46/69/7 45/70/7 +f 45/70/10 46/69/10 42/71/10 41/72/10 +f 49/73/8 50/74/8 52/75/8 51/76/8 +f 51/77/9 52/78/9 56/79/9 55/80/9 +f 55/81/7 56/82/7 54/83/7 53/84/7 +f 53/84/10 54/83/10 50/85/10 49/86/10 +f 57/87/11 58/88/11 60/89/11 59/90/11 +f 59/91/9 60/92/9 64/93/9 63/94/9 +f 63/94/12 64/93/12 62/95/12 61/96/12 +f 61/96/10 62/95/10 58/88/10 57/87/10 +f 59/97/7 63/98/7 61/99/7 57/100/7 +f 64/101/8 60/102/8 58/103/8 62/104/8 +f 65/105/11 66/106/11 68/107/11 67/108/11 +f 67/109/9 68/110/9 72/111/9 71/112/9 +f 71/112/12 72/111/12 70/113/12 69/114/12 +f 69/114/10 70/113/10 66/106/10 65/105/10 +f 67/115/7 71/116/7 69/117/7 65/118/7 +f 72/119/8 68/120/8 66/121/8 70/122/8 diff --git a/signs_lib/models/signs_lib_standard_wall_sign_onpole.obj b/signs_lib/models/signs_lib_standard_wall_sign_onpole.obj new file mode 100644 index 00000000..31b73ef0 --- /dev/null +++ b/signs_lib/models/signs_lib_standard_wall_sign_onpole.obj @@ -0,0 +1,254 @@ +# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' +# www.blender.org +o Cube +v 0.437500 -0.812500 -0.312500 +v 0.437500 -0.750000 -0.312500 +v 0.437500 -0.812500 0.312500 +v 0.437500 -0.750000 0.312500 +v -0.437500 -0.812500 -0.312500 +v -0.437500 -0.750000 -0.312500 +v -0.437500 -0.812500 0.312500 +v -0.437500 -0.750000 0.312500 +v 0.437500 -0.812500 -0.312500 +v 0.437500 -0.750000 -0.312500 +v 0.437500 -0.812500 0.312500 +v 0.437500 -0.750000 0.312500 +v -0.437500 -0.812500 -0.312500 +v -0.437500 -0.750000 -0.312500 +v -0.437500 -0.812500 0.312500 +v -0.437500 -0.750000 0.312500 +vt 0.468750 0.812500 +vt 0.031250 0.812500 +vt 0.031250 0.187500 +vt 0.468750 0.187500 +vt 0.531250 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.187500 +vt 0.531250 0.187500 +vt 0.234375 0.000000 +vt 0.234375 1.000000 +vt 0.015625 1.000000 +vt 0.015625 -0.000000 +vt 0.609375 -0.000000 +vt 0.609375 1.000000 +vt 0.390625 1.000000 +vt 0.390625 -0.000000 +vt 0.765625 0.000000 +vt 0.765625 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +g Cube_Cube_front-back +s off +f 8/1/1 4/2/1 2/3/1 6/4/1 +f 3/5/2 7/6/2 5/7/2 1/8/2 +g Cube_Cube_edges +f 13/9/3 14/10/3 10/11/3 9/12/3 +f 11/13/4 12/14/4 16/15/4 15/16/4 +f 11/13/5 9/17/5 10/18/5 12/14/5 +f 13/9/6 15/16/6 16/15/6 14/10/6 +o Cube.001 +v -0.125000 -0.812500 -0.187500 +v -0.125000 -0.875000 -0.187500 +v -0.125000 -0.812500 0.187500 +v -0.125000 -0.875000 0.187500 +v 0.125000 -0.812500 0.187500 +v 0.125000 -0.812500 -0.187500 +v 0.125000 -0.875000 -0.187500 +v 0.125000 -0.875000 0.187500 +v -0.125000 -1.125000 -0.187500 +v -0.125000 -0.812500 -0.187500 +v -0.125000 -1.125000 -0.125000 +v -0.125000 -0.812500 -0.125000 +v -0.164063 -1.125000 -0.187500 +v -0.164063 -0.812500 -0.187500 +v -0.164063 -1.125000 -0.125000 +v -0.164063 -0.812500 -0.125000 +v -0.125000 -1.125000 0.125000 +v -0.125000 -0.812500 0.125000 +v -0.125000 -1.125000 0.187500 +v -0.125000 -0.812500 0.187500 +v -0.164063 -1.125000 0.125000 +v -0.164063 -0.812500 0.125000 +v -0.164063 -1.125000 0.187500 +v -0.164063 -0.812500 0.187500 +v 0.164062 -1.125000 -0.187500 +v 0.164062 -0.812500 -0.187500 +v 0.164062 -1.125000 -0.125000 +v 0.164062 -0.812500 -0.125000 +v 0.125000 -1.125000 -0.187500 +v 0.125000 -0.812500 -0.187500 +v 0.125000 -1.125000 -0.125000 +v 0.125000 -0.812500 -0.125000 +v 0.164062 -1.125000 0.125000 +v 0.164062 -0.812500 0.125000 +v 0.164062 -1.125000 0.187500 +v 0.164062 -0.812500 0.187500 +v 0.125000 -1.125000 0.125000 +v 0.125000 -0.812500 0.125000 +v 0.125000 -1.125000 0.187500 +v 0.125000 -0.812500 0.187500 +v -0.164063 -1.164063 -0.187500 +v 0.164062 -1.164063 -0.187500 +v -0.164063 -1.164063 -0.125000 +v 0.164062 -1.164063 -0.125000 +v -0.164063 -1.125000 -0.187500 +v 0.164062 -1.125000 -0.187500 +v -0.164063 -1.125000 -0.125000 +v 0.164062 -1.125000 -0.125000 +v -0.164063 -1.164063 0.125000 +v 0.164062 -1.164063 0.125000 +v -0.164063 -1.164063 0.187500 +v 0.164062 -1.164063 0.187500 +v -0.164063 -1.125000 0.125000 +v 0.164062 -1.125000 0.125000 +v -0.164063 -1.125000 0.187500 +v 0.164062 -1.125000 0.187500 +vt 0.843750 0.507812 +vt 0.703125 0.507812 +vt 0.703125 0.093750 +vt 0.843750 0.093750 +vt 0.015625 0.507812 +vt 0.015625 0.093750 +vt 0.156250 0.093750 +vt 0.156250 0.507812 +vt 0.156250 0.031250 +vt 0.703125 0.031250 +vt 0.703125 0.578125 +vt 0.156250 0.578125 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.312500 0.640625 +vt 0.312500 0.992188 +vt 0.453125 0.992188 +vt 0.453125 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.312500 0.992188 +vt 0.312500 0.640625 +vt 0.234375 0.640625 +vt 0.234375 0.992188 +vt 0.093750 0.992188 +vt 0.093750 0.640625 +vt 0.015625 0.992188 +vt 0.015625 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vt 0.781250 0.664062 +vt 0.781250 0.992188 +vt 0.921875 0.992188 +vt 0.921875 0.664062 +vt 0.484375 0.664062 +vt 0.484375 0.992188 +vt 0.562500 0.992188 +vt 0.562500 0.664062 +vt 0.703125 0.992188 +vt 0.703125 0.664062 +vt 0.234375 0.593750 +vt 0.234375 0.640625 +vt 0.093750 0.640625 +vt 0.093750 0.593750 +vt 0.453125 0.640625 +vt 0.453125 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.640625 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +g Cube.001_Cube.001_pole_mount +s off +f 17/19/7 18/20/7 20/21/7 19/22/7 +f 22/23/8 21/24/8 24/25/8 23/26/8 +f 20/21/9 24/25/9 21/27/9 19/28/9 +f 17/29/10 22/30/10 23/26/10 18/20/10 +f 18/20/11 23/26/11 24/25/11 20/21/11 +f 25/31/8 26/32/8 28/33/8 27/34/8 +f 27/35/9 28/36/9 32/37/9 31/38/9 +f 31/39/7 32/40/7 30/41/7 29/42/7 +f 29/42/10 30/41/10 26/43/10 25/44/10 +f 33/45/8 34/46/8 36/47/8 35/48/8 +f 35/49/9 36/50/9 40/51/9 39/52/9 +f 39/53/7 40/54/7 38/55/7 37/56/7 +f 37/56/10 38/55/10 34/57/10 33/58/10 +f 41/59/8 42/60/8 44/61/8 43/62/8 +f 43/63/9 44/64/9 48/65/9 47/66/9 +f 47/67/7 48/68/7 46/69/7 45/70/7 +f 45/70/10 46/69/10 42/71/10 41/72/10 +f 49/73/8 50/74/8 52/75/8 51/76/8 +f 51/77/9 52/78/9 56/79/9 55/80/9 +f 55/81/7 56/82/7 54/83/7 53/84/7 +f 53/84/10 54/83/10 50/85/10 49/86/10 +f 57/87/11 58/88/11 60/89/11 59/90/11 +f 59/91/9 60/92/9 64/93/9 63/94/9 +f 63/94/12 64/93/12 62/95/12 61/96/12 +f 61/96/10 62/95/10 58/88/10 57/87/10 +f 59/97/7 63/98/7 61/99/7 57/100/7 +f 64/101/8 60/102/8 58/103/8 62/104/8 +f 65/105/11 66/106/11 68/107/11 67/108/11 +f 67/109/9 68/110/9 72/111/9 71/112/9 +f 71/112/12 72/111/12 70/113/12 69/114/12 +f 69/114/10 70/113/10 66/106/10 65/105/10 +f 67/115/7 71/116/7 69/117/7 65/118/7 +f 72/119/8 68/120/8 66/121/8 70/122/8 diff --git a/signs_lib/screenshot.png b/signs_lib/screenshot.png deleted file mode 100644 index 17229a35..00000000 Binary files a/signs_lib/screenshot.png and /dev/null differ diff --git a/signs_lib/standard_signs.lua b/signs_lib/standard_signs.lua new file mode 100644 index 00000000..2cbe18d3 --- /dev/null +++ b/signs_lib/standard_signs.lua @@ -0,0 +1,103 @@ +-- Definitions for standard minetest_game wooden and steel wall signs + +for _, onpole in ipairs({"", "_onpole"}) do + + local nci = nil + local on_rotate = signs_lib.wallmounted_rotate + local pole_mount_tex = nil + + if onpole == "_onpole" then + nci = 1 + on_rotate = nil + pole_mount_tex = "signs_lib_pole_mount.png" -- the metal straps on back, if needed + end + + local wood_groups = table.copy(signs_lib.standard_wood_groups) + wood_groups.not_in_creative_inventory = nci + local steel_groups = table.copy(signs_lib.standard_steel_groups) + steel_groups.not_in_creative_inventory = nci + + cbox = signs_lib.make_selection_boxes(35, 25, onpole) + + minetest.register_node(":default:sign_wall_wood"..onpole, { + description = "Wooden wall sign", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign"..onpole..".obj", + tiles = { + "signs_lib_sign_wall_wooden.png", + "signs_lib_sign_wall_wooden_edges.png", + pole_mount_tex + }, + inventory_image = "signs_lib_sign_wall_wooden_inv.png", + wield_image = "signs_lib_sign_wall_wooden_inv.png", + groups = wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.wallmounted_yaw + }, + drop = "default:sign_wall_wood" + }) + table.insert(signs_lib.lbm_restore_nodes, "default:sign_wall_wood"..onpole) + + minetest.register_node(":default:sign_wall_steel"..onpole, { + description = "Steel wall sign", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "wallmounted", + drawtype = "mesh", + node_box = cbox, + selection_box = cbox, + mesh = "signs_lib_standard_wall_sign"..onpole..".obj", + tiles = { + "signs_lib_sign_wall_steel.png", + "signs_lib_sign_wall_steel_edges.png", + pole_mount_tex + }, + inventory_image = "signs_lib_sign_wall_steel_inv.png", + wield_image = "signs_lib_sign_wall_steel_inv.png", + groups = wood_groups, + default_color = "0", + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = function(pos, placer, itemstack, pointed_thing) + signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, true) + end, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + can_dig = signs_lib.can_modify, + on_rotate = on_rotate, + number_of_lines = signs_lib.standard_lines, + horiz_scaling = signs_lib.standard_hscale, + vert_scaling = signs_lib.standard_vscale, + line_spacing = signs_lib.standard_lspace, + font_size = signs_lib.standard_fsize, + x_offset = signs_lib.standard_xoffs, + y_offset = signs_lib.standard_yoffs, + chars_per_line = signs_lib.standard_cpl, + entity_info = { + mesh = "signs_lib_standard_wall_sign_entity"..onpole..".obj", + yaw = signs_lib.wallmounted_yaw + }, + drop = "default:sign_wall_steel" + }) + table.insert(signs_lib.lbm_restore_nodes, "default:sign_wall_steel"..onpole) +end diff --git a/signs_lib/textures/signs_back.png b/signs_lib/textures/signs_back.png deleted file mode 100644 index db33dee5..00000000 Binary files a/signs_lib/textures/signs_back.png and /dev/null differ diff --git a/signs_lib/textures/signs_blue_front.png b/signs_lib/textures/signs_blue_front.png deleted file mode 100644 index 65ed6ea1..00000000 Binary files a/signs_lib/textures/signs_blue_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_blue_inv.png b/signs_lib/textures/signs_blue_inv.png deleted file mode 100644 index 3f5a0cee..00000000 Binary files a/signs_lib/textures/signs_blue_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_bottom.png b/signs_lib/textures/signs_bottom.png deleted file mode 100644 index 38961f0c..00000000 Binary files a/signs_lib/textures/signs_bottom.png and /dev/null differ diff --git a/signs_lib/textures/signs_brown_front.png b/signs_lib/textures/signs_brown_front.png deleted file mode 100644 index 2ed26406..00000000 Binary files a/signs_lib/textures/signs_brown_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_brown_inv.png b/signs_lib/textures/signs_brown_inv.png deleted file mode 100644 index 5ba92838..00000000 Binary files a/signs_lib/textures/signs_brown_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_front.png b/signs_lib/textures/signs_front.png deleted file mode 100644 index 2e614355..00000000 Binary files a/signs_lib/textures/signs_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_green_front.png b/signs_lib/textures/signs_green_front.png deleted file mode 100644 index 45c6e0f0..00000000 Binary files a/signs_lib/textures/signs_green_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_green_inv.png b/signs_lib/textures/signs_green_inv.png deleted file mode 100644 index 24ca5a8f..00000000 Binary files a/signs_lib/textures/signs_green_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_hanging_back.png b/signs_lib/textures/signs_hanging_back.png deleted file mode 100644 index 7cf39a24..00000000 Binary files a/signs_lib/textures/signs_hanging_back.png and /dev/null differ diff --git a/signs_lib/textures/signs_hanging_bottom.png b/signs_lib/textures/signs_hanging_bottom.png deleted file mode 100644 index 7b2af4dd..00000000 Binary files a/signs_lib/textures/signs_hanging_bottom.png and /dev/null differ diff --git a/signs_lib/textures/signs_hanging_front.png b/signs_lib/textures/signs_hanging_front.png deleted file mode 100644 index bdc745e7..00000000 Binary files a/signs_lib/textures/signs_hanging_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_hanging_side.png b/signs_lib/textures/signs_hanging_side.png deleted file mode 100644 index 8498d67f..00000000 Binary files a/signs_lib/textures/signs_hanging_side.png and /dev/null differ diff --git a/signs_lib/textures/signs_hanging_top.png b/signs_lib/textures/signs_hanging_top.png deleted file mode 100644 index 1c08f911..00000000 Binary files a/signs_lib/textures/signs_hanging_top.png and /dev/null differ diff --git a/street_signs/textures/street_signs_color_15px_0.png b/signs_lib/textures/signs_lib_color_15px_0.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_0.png rename to signs_lib/textures/signs_lib_color_15px_0.png diff --git a/street_signs/textures/street_signs_color_15px_1.png b/signs_lib/textures/signs_lib_color_15px_1.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_1.png rename to signs_lib/textures/signs_lib_color_15px_1.png diff --git a/street_signs/textures/street_signs_color_15px_2.png b/signs_lib/textures/signs_lib_color_15px_2.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_2.png rename to signs_lib/textures/signs_lib_color_15px_2.png diff --git a/street_signs/textures/street_signs_color_15px_3.png b/signs_lib/textures/signs_lib_color_15px_3.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_3.png rename to signs_lib/textures/signs_lib_color_15px_3.png diff --git a/street_signs/textures/street_signs_color_15px_4.png b/signs_lib/textures/signs_lib_color_15px_4.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_4.png rename to signs_lib/textures/signs_lib_color_15px_4.png diff --git a/street_signs/textures/street_signs_color_15px_5.png b/signs_lib/textures/signs_lib_color_15px_5.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_5.png rename to signs_lib/textures/signs_lib_color_15px_5.png diff --git a/street_signs/textures/street_signs_color_15px_6.png b/signs_lib/textures/signs_lib_color_15px_6.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_6.png rename to signs_lib/textures/signs_lib_color_15px_6.png diff --git a/street_signs/textures/street_signs_color_15px_7.png b/signs_lib/textures/signs_lib_color_15px_7.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_7.png rename to signs_lib/textures/signs_lib_color_15px_7.png diff --git a/street_signs/textures/street_signs_color_15px_8.png b/signs_lib/textures/signs_lib_color_15px_8.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_8.png rename to signs_lib/textures/signs_lib_color_15px_8.png diff --git a/street_signs/textures/street_signs_color_15px_9.png b/signs_lib/textures/signs_lib_color_15px_9.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_9.png rename to signs_lib/textures/signs_lib_color_15px_9.png diff --git a/street_signs/textures/street_signs_color_15px_A.png b/signs_lib/textures/signs_lib_color_15px_A.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_A.png rename to signs_lib/textures/signs_lib_color_15px_A.png diff --git a/street_signs/textures/street_signs_color_15px_B.png b/signs_lib/textures/signs_lib_color_15px_B.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_B.png rename to signs_lib/textures/signs_lib_color_15px_B.png diff --git a/street_signs/textures/street_signs_color_15px_C.png b/signs_lib/textures/signs_lib_color_15px_C.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_C.png rename to signs_lib/textures/signs_lib_color_15px_C.png diff --git a/street_signs/textures/street_signs_color_15px_D.png b/signs_lib/textures/signs_lib_color_15px_D.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_D.png rename to signs_lib/textures/signs_lib_color_15px_D.png diff --git a/street_signs/textures/street_signs_color_15px_E.png b/signs_lib/textures/signs_lib_color_15px_E.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_E.png rename to signs_lib/textures/signs_lib_color_15px_E.png diff --git a/street_signs/textures/street_signs_color_15px_F.png b/signs_lib/textures/signs_lib_color_15px_F.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_F.png rename to signs_lib/textures/signs_lib_color_15px_F.png diff --git a/street_signs/textures/street_signs_color_15px_n.png b/signs_lib/textures/signs_lib_color_15px_n.png similarity index 100% rename from street_signs/textures/street_signs_color_15px_n.png rename to signs_lib/textures/signs_lib_color_15px_n.png diff --git a/street_signs/textures/street_signs_color_31px_0.png b/signs_lib/textures/signs_lib_color_31px_0.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_0.png rename to signs_lib/textures/signs_lib_color_31px_0.png diff --git a/street_signs/textures/street_signs_color_31px_1.png b/signs_lib/textures/signs_lib_color_31px_1.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_1.png rename to signs_lib/textures/signs_lib_color_31px_1.png diff --git a/street_signs/textures/street_signs_color_31px_2.png b/signs_lib/textures/signs_lib_color_31px_2.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_2.png rename to signs_lib/textures/signs_lib_color_31px_2.png diff --git a/street_signs/textures/street_signs_color_31px_3.png b/signs_lib/textures/signs_lib_color_31px_3.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_3.png rename to signs_lib/textures/signs_lib_color_31px_3.png diff --git a/street_signs/textures/street_signs_color_31px_4.png b/signs_lib/textures/signs_lib_color_31px_4.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_4.png rename to signs_lib/textures/signs_lib_color_31px_4.png diff --git a/street_signs/textures/street_signs_color_31px_5.png b/signs_lib/textures/signs_lib_color_31px_5.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_5.png rename to signs_lib/textures/signs_lib_color_31px_5.png diff --git a/street_signs/textures/street_signs_color_31px_6.png b/signs_lib/textures/signs_lib_color_31px_6.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_6.png rename to signs_lib/textures/signs_lib_color_31px_6.png diff --git a/street_signs/textures/street_signs_color_31px_7.png b/signs_lib/textures/signs_lib_color_31px_7.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_7.png rename to signs_lib/textures/signs_lib_color_31px_7.png diff --git a/street_signs/textures/street_signs_color_31px_8.png b/signs_lib/textures/signs_lib_color_31px_8.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_8.png rename to signs_lib/textures/signs_lib_color_31px_8.png diff --git a/street_signs/textures/street_signs_color_31px_9.png b/signs_lib/textures/signs_lib_color_31px_9.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_9.png rename to signs_lib/textures/signs_lib_color_31px_9.png diff --git a/street_signs/textures/street_signs_color_31px_A.png b/signs_lib/textures/signs_lib_color_31px_A.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_A.png rename to signs_lib/textures/signs_lib_color_31px_A.png diff --git a/street_signs/textures/street_signs_color_31px_B.png b/signs_lib/textures/signs_lib_color_31px_B.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_B.png rename to signs_lib/textures/signs_lib_color_31px_B.png diff --git a/street_signs/textures/street_signs_color_31px_C.png b/signs_lib/textures/signs_lib_color_31px_C.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_C.png rename to signs_lib/textures/signs_lib_color_31px_C.png diff --git a/street_signs/textures/street_signs_color_31px_D.png b/signs_lib/textures/signs_lib_color_31px_D.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_D.png rename to signs_lib/textures/signs_lib_color_31px_D.png diff --git a/street_signs/textures/street_signs_color_31px_E.png b/signs_lib/textures/signs_lib_color_31px_E.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_E.png rename to signs_lib/textures/signs_lib_color_31px_E.png diff --git a/street_signs/textures/street_signs_color_31px_F.png b/signs_lib/textures/signs_lib_color_31px_F.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_F.png rename to signs_lib/textures/signs_lib_color_31px_F.png diff --git a/street_signs/textures/street_signs_color_31px_n.png b/signs_lib/textures/signs_lib_color_31px_n.png similarity index 100% rename from street_signs/textures/street_signs_color_31px_n.png rename to signs_lib/textures/signs_lib_color_31px_n.png diff --git a/signs_lib/textures/hdf_00.png b/signs_lib/textures/signs_lib_font_15px_00.png similarity index 100% rename from signs_lib/textures/hdf_00.png rename to signs_lib/textures/signs_lib_font_15px_00.png diff --git a/signs_lib/textures/hdf_20.png b/signs_lib/textures/signs_lib_font_15px_20.png similarity index 100% rename from signs_lib/textures/hdf_20.png rename to signs_lib/textures/signs_lib_font_15px_20.png diff --git a/signs_lib/textures/hdf_21.png b/signs_lib/textures/signs_lib_font_15px_21.png similarity index 100% rename from signs_lib/textures/hdf_21.png rename to signs_lib/textures/signs_lib_font_15px_21.png diff --git a/signs_lib/textures/hdf_22.png b/signs_lib/textures/signs_lib_font_15px_22.png similarity index 100% rename from signs_lib/textures/hdf_22.png rename to signs_lib/textures/signs_lib_font_15px_22.png diff --git a/signs_lib/textures/hdf_23.png b/signs_lib/textures/signs_lib_font_15px_23.png similarity index 100% rename from signs_lib/textures/hdf_23.png rename to signs_lib/textures/signs_lib_font_15px_23.png diff --git a/signs_lib/textures/hdf_24.png b/signs_lib/textures/signs_lib_font_15px_24.png similarity index 100% rename from signs_lib/textures/hdf_24.png rename to signs_lib/textures/signs_lib_font_15px_24.png diff --git a/signs_lib/textures/hdf_25.png b/signs_lib/textures/signs_lib_font_15px_25.png similarity index 100% rename from signs_lib/textures/hdf_25.png rename to signs_lib/textures/signs_lib_font_15px_25.png diff --git a/signs_lib/textures/hdf_26.png b/signs_lib/textures/signs_lib_font_15px_26.png similarity index 100% rename from signs_lib/textures/hdf_26.png rename to signs_lib/textures/signs_lib_font_15px_26.png diff --git a/signs_lib/textures/hdf_27.png b/signs_lib/textures/signs_lib_font_15px_27.png similarity index 100% rename from signs_lib/textures/hdf_27.png rename to signs_lib/textures/signs_lib_font_15px_27.png diff --git a/signs_lib/textures/hdf_28.png b/signs_lib/textures/signs_lib_font_15px_28.png similarity index 100% rename from signs_lib/textures/hdf_28.png rename to signs_lib/textures/signs_lib_font_15px_28.png diff --git a/signs_lib/textures/hdf_29.png b/signs_lib/textures/signs_lib_font_15px_29.png similarity index 100% rename from signs_lib/textures/hdf_29.png rename to signs_lib/textures/signs_lib_font_15px_29.png diff --git a/signs_lib/textures/hdf_2a.png b/signs_lib/textures/signs_lib_font_15px_2a.png similarity index 100% rename from signs_lib/textures/hdf_2a.png rename to signs_lib/textures/signs_lib_font_15px_2a.png diff --git a/signs_lib/textures/hdf_2b.png b/signs_lib/textures/signs_lib_font_15px_2b.png similarity index 100% rename from signs_lib/textures/hdf_2b.png rename to signs_lib/textures/signs_lib_font_15px_2b.png diff --git a/signs_lib/textures/hdf_2c.png b/signs_lib/textures/signs_lib_font_15px_2c.png similarity index 100% rename from signs_lib/textures/hdf_2c.png rename to signs_lib/textures/signs_lib_font_15px_2c.png diff --git a/signs_lib/textures/hdf_2d.png b/signs_lib/textures/signs_lib_font_15px_2d.png similarity index 100% rename from signs_lib/textures/hdf_2d.png rename to signs_lib/textures/signs_lib_font_15px_2d.png diff --git a/signs_lib/textures/hdf_2e.png b/signs_lib/textures/signs_lib_font_15px_2e.png similarity index 100% rename from signs_lib/textures/hdf_2e.png rename to signs_lib/textures/signs_lib_font_15px_2e.png diff --git a/signs_lib/textures/hdf_2f.png b/signs_lib/textures/signs_lib_font_15px_2f.png similarity index 100% rename from signs_lib/textures/hdf_2f.png rename to signs_lib/textures/signs_lib_font_15px_2f.png diff --git a/signs_lib/textures/hdf_30.png b/signs_lib/textures/signs_lib_font_15px_30.png similarity index 100% rename from signs_lib/textures/hdf_30.png rename to signs_lib/textures/signs_lib_font_15px_30.png diff --git a/signs_lib/textures/hdf_31.png b/signs_lib/textures/signs_lib_font_15px_31.png similarity index 100% rename from signs_lib/textures/hdf_31.png rename to signs_lib/textures/signs_lib_font_15px_31.png diff --git a/signs_lib/textures/hdf_32.png b/signs_lib/textures/signs_lib_font_15px_32.png similarity index 100% rename from signs_lib/textures/hdf_32.png rename to signs_lib/textures/signs_lib_font_15px_32.png diff --git a/signs_lib/textures/hdf_33.png b/signs_lib/textures/signs_lib_font_15px_33.png similarity index 100% rename from signs_lib/textures/hdf_33.png rename to signs_lib/textures/signs_lib_font_15px_33.png diff --git a/signs_lib/textures/hdf_34.png b/signs_lib/textures/signs_lib_font_15px_34.png similarity index 100% rename from signs_lib/textures/hdf_34.png rename to signs_lib/textures/signs_lib_font_15px_34.png diff --git a/signs_lib/textures/hdf_35.png b/signs_lib/textures/signs_lib_font_15px_35.png similarity index 100% rename from signs_lib/textures/hdf_35.png rename to signs_lib/textures/signs_lib_font_15px_35.png diff --git a/signs_lib/textures/hdf_36.png b/signs_lib/textures/signs_lib_font_15px_36.png similarity index 100% rename from signs_lib/textures/hdf_36.png rename to signs_lib/textures/signs_lib_font_15px_36.png diff --git a/signs_lib/textures/hdf_37.png b/signs_lib/textures/signs_lib_font_15px_37.png similarity index 100% rename from signs_lib/textures/hdf_37.png rename to signs_lib/textures/signs_lib_font_15px_37.png diff --git a/signs_lib/textures/hdf_38.png b/signs_lib/textures/signs_lib_font_15px_38.png similarity index 100% rename from signs_lib/textures/hdf_38.png rename to signs_lib/textures/signs_lib_font_15px_38.png diff --git a/signs_lib/textures/hdf_39.png b/signs_lib/textures/signs_lib_font_15px_39.png similarity index 100% rename from signs_lib/textures/hdf_39.png rename to signs_lib/textures/signs_lib_font_15px_39.png diff --git a/signs_lib/textures/hdf_3a.png b/signs_lib/textures/signs_lib_font_15px_3a.png similarity index 100% rename from signs_lib/textures/hdf_3a.png rename to signs_lib/textures/signs_lib_font_15px_3a.png diff --git a/signs_lib/textures/hdf_3b.png b/signs_lib/textures/signs_lib_font_15px_3b.png similarity index 100% rename from signs_lib/textures/hdf_3b.png rename to signs_lib/textures/signs_lib_font_15px_3b.png diff --git a/signs_lib/textures/hdf_3c.png b/signs_lib/textures/signs_lib_font_15px_3c.png similarity index 100% rename from signs_lib/textures/hdf_3c.png rename to signs_lib/textures/signs_lib_font_15px_3c.png diff --git a/signs_lib/textures/hdf_3d.png b/signs_lib/textures/signs_lib_font_15px_3d.png similarity index 100% rename from signs_lib/textures/hdf_3d.png rename to signs_lib/textures/signs_lib_font_15px_3d.png diff --git a/signs_lib/textures/hdf_3e.png b/signs_lib/textures/signs_lib_font_15px_3e.png similarity index 100% rename from signs_lib/textures/hdf_3e.png rename to signs_lib/textures/signs_lib_font_15px_3e.png diff --git a/signs_lib/textures/hdf_3f.png b/signs_lib/textures/signs_lib_font_15px_3f.png similarity index 100% rename from signs_lib/textures/hdf_3f.png rename to signs_lib/textures/signs_lib_font_15px_3f.png diff --git a/signs_lib/textures/hdf_40.png b/signs_lib/textures/signs_lib_font_15px_40.png similarity index 100% rename from signs_lib/textures/hdf_40.png rename to signs_lib/textures/signs_lib_font_15px_40.png diff --git a/signs_lib/textures/hdf_41.png b/signs_lib/textures/signs_lib_font_15px_41.png similarity index 100% rename from signs_lib/textures/hdf_41.png rename to signs_lib/textures/signs_lib_font_15px_41.png diff --git a/signs_lib/textures/hdf_42.png b/signs_lib/textures/signs_lib_font_15px_42.png similarity index 100% rename from signs_lib/textures/hdf_42.png rename to signs_lib/textures/signs_lib_font_15px_42.png diff --git a/signs_lib/textures/hdf_43.png b/signs_lib/textures/signs_lib_font_15px_43.png similarity index 100% rename from signs_lib/textures/hdf_43.png rename to signs_lib/textures/signs_lib_font_15px_43.png diff --git a/signs_lib/textures/hdf_44.png b/signs_lib/textures/signs_lib_font_15px_44.png similarity index 100% rename from signs_lib/textures/hdf_44.png rename to signs_lib/textures/signs_lib_font_15px_44.png diff --git a/signs_lib/textures/hdf_45.png b/signs_lib/textures/signs_lib_font_15px_45.png similarity index 100% rename from signs_lib/textures/hdf_45.png rename to signs_lib/textures/signs_lib_font_15px_45.png diff --git a/signs_lib/textures/hdf_46.png b/signs_lib/textures/signs_lib_font_15px_46.png similarity index 100% rename from signs_lib/textures/hdf_46.png rename to signs_lib/textures/signs_lib_font_15px_46.png diff --git a/signs_lib/textures/hdf_47.png b/signs_lib/textures/signs_lib_font_15px_47.png similarity index 100% rename from signs_lib/textures/hdf_47.png rename to signs_lib/textures/signs_lib_font_15px_47.png diff --git a/signs_lib/textures/hdf_48.png b/signs_lib/textures/signs_lib_font_15px_48.png similarity index 100% rename from signs_lib/textures/hdf_48.png rename to signs_lib/textures/signs_lib_font_15px_48.png diff --git a/signs_lib/textures/hdf_49.png b/signs_lib/textures/signs_lib_font_15px_49.png similarity index 100% rename from signs_lib/textures/hdf_49.png rename to signs_lib/textures/signs_lib_font_15px_49.png diff --git a/signs_lib/textures/hdf_4a.png b/signs_lib/textures/signs_lib_font_15px_4a.png similarity index 100% rename from signs_lib/textures/hdf_4a.png rename to signs_lib/textures/signs_lib_font_15px_4a.png diff --git a/signs_lib/textures/hdf_4b.png b/signs_lib/textures/signs_lib_font_15px_4b.png similarity index 100% rename from signs_lib/textures/hdf_4b.png rename to signs_lib/textures/signs_lib_font_15px_4b.png diff --git a/signs_lib/textures/hdf_4c.png b/signs_lib/textures/signs_lib_font_15px_4c.png similarity index 100% rename from signs_lib/textures/hdf_4c.png rename to signs_lib/textures/signs_lib_font_15px_4c.png diff --git a/signs_lib/textures/hdf_4d.png b/signs_lib/textures/signs_lib_font_15px_4d.png similarity index 100% rename from signs_lib/textures/hdf_4d.png rename to signs_lib/textures/signs_lib_font_15px_4d.png diff --git a/signs_lib/textures/hdf_4e.png b/signs_lib/textures/signs_lib_font_15px_4e.png similarity index 100% rename from signs_lib/textures/hdf_4e.png rename to signs_lib/textures/signs_lib_font_15px_4e.png diff --git a/signs_lib/textures/hdf_4f.png b/signs_lib/textures/signs_lib_font_15px_4f.png similarity index 100% rename from signs_lib/textures/hdf_4f.png rename to signs_lib/textures/signs_lib_font_15px_4f.png diff --git a/signs_lib/textures/hdf_50.png b/signs_lib/textures/signs_lib_font_15px_50.png similarity index 100% rename from signs_lib/textures/hdf_50.png rename to signs_lib/textures/signs_lib_font_15px_50.png diff --git a/signs_lib/textures/hdf_51.png b/signs_lib/textures/signs_lib_font_15px_51.png similarity index 100% rename from signs_lib/textures/hdf_51.png rename to signs_lib/textures/signs_lib_font_15px_51.png diff --git a/signs_lib/textures/hdf_52.png b/signs_lib/textures/signs_lib_font_15px_52.png similarity index 100% rename from signs_lib/textures/hdf_52.png rename to signs_lib/textures/signs_lib_font_15px_52.png diff --git a/signs_lib/textures/hdf_53.png b/signs_lib/textures/signs_lib_font_15px_53.png similarity index 100% rename from signs_lib/textures/hdf_53.png rename to signs_lib/textures/signs_lib_font_15px_53.png diff --git a/signs_lib/textures/hdf_54.png b/signs_lib/textures/signs_lib_font_15px_54.png similarity index 100% rename from signs_lib/textures/hdf_54.png rename to signs_lib/textures/signs_lib_font_15px_54.png diff --git a/signs_lib/textures/hdf_55.png b/signs_lib/textures/signs_lib_font_15px_55.png similarity index 100% rename from signs_lib/textures/hdf_55.png rename to signs_lib/textures/signs_lib_font_15px_55.png diff --git a/signs_lib/textures/hdf_56.png b/signs_lib/textures/signs_lib_font_15px_56.png similarity index 100% rename from signs_lib/textures/hdf_56.png rename to signs_lib/textures/signs_lib_font_15px_56.png diff --git a/signs_lib/textures/hdf_57.png b/signs_lib/textures/signs_lib_font_15px_57.png similarity index 100% rename from signs_lib/textures/hdf_57.png rename to signs_lib/textures/signs_lib_font_15px_57.png diff --git a/signs_lib/textures/hdf_58.png b/signs_lib/textures/signs_lib_font_15px_58.png similarity index 100% rename from signs_lib/textures/hdf_58.png rename to signs_lib/textures/signs_lib_font_15px_58.png diff --git a/signs_lib/textures/hdf_59.png b/signs_lib/textures/signs_lib_font_15px_59.png similarity index 100% rename from signs_lib/textures/hdf_59.png rename to signs_lib/textures/signs_lib_font_15px_59.png diff --git a/signs_lib/textures/hdf_5a.png b/signs_lib/textures/signs_lib_font_15px_5a.png similarity index 100% rename from signs_lib/textures/hdf_5a.png rename to signs_lib/textures/signs_lib_font_15px_5a.png diff --git a/signs_lib/textures/hdf_5b.png b/signs_lib/textures/signs_lib_font_15px_5b.png similarity index 100% rename from signs_lib/textures/hdf_5b.png rename to signs_lib/textures/signs_lib_font_15px_5b.png diff --git a/signs_lib/textures/hdf_5c.png b/signs_lib/textures/signs_lib_font_15px_5c.png similarity index 100% rename from signs_lib/textures/hdf_5c.png rename to signs_lib/textures/signs_lib_font_15px_5c.png diff --git a/signs_lib/textures/hdf_5d.png b/signs_lib/textures/signs_lib_font_15px_5d.png similarity index 100% rename from signs_lib/textures/hdf_5d.png rename to signs_lib/textures/signs_lib_font_15px_5d.png diff --git a/signs_lib/textures/hdf_5e.png b/signs_lib/textures/signs_lib_font_15px_5e.png similarity index 100% rename from signs_lib/textures/hdf_5e.png rename to signs_lib/textures/signs_lib_font_15px_5e.png diff --git a/signs_lib/textures/hdf_5f.png b/signs_lib/textures/signs_lib_font_15px_5f.png similarity index 100% rename from signs_lib/textures/hdf_5f.png rename to signs_lib/textures/signs_lib_font_15px_5f.png diff --git a/signs_lib/textures/hdf_60.png b/signs_lib/textures/signs_lib_font_15px_60.png similarity index 100% rename from signs_lib/textures/hdf_60.png rename to signs_lib/textures/signs_lib_font_15px_60.png diff --git a/signs_lib/textures/hdf_61.png b/signs_lib/textures/signs_lib_font_15px_61.png similarity index 100% rename from signs_lib/textures/hdf_61.png rename to signs_lib/textures/signs_lib_font_15px_61.png diff --git a/signs_lib/textures/hdf_62.png b/signs_lib/textures/signs_lib_font_15px_62.png similarity index 100% rename from signs_lib/textures/hdf_62.png rename to signs_lib/textures/signs_lib_font_15px_62.png diff --git a/signs_lib/textures/hdf_63.png b/signs_lib/textures/signs_lib_font_15px_63.png similarity index 100% rename from signs_lib/textures/hdf_63.png rename to signs_lib/textures/signs_lib_font_15px_63.png diff --git a/signs_lib/textures/hdf_64.png b/signs_lib/textures/signs_lib_font_15px_64.png similarity index 100% rename from signs_lib/textures/hdf_64.png rename to signs_lib/textures/signs_lib_font_15px_64.png diff --git a/signs_lib/textures/hdf_65.png b/signs_lib/textures/signs_lib_font_15px_65.png similarity index 100% rename from signs_lib/textures/hdf_65.png rename to signs_lib/textures/signs_lib_font_15px_65.png diff --git a/signs_lib/textures/hdf_66.png b/signs_lib/textures/signs_lib_font_15px_66.png similarity index 100% rename from signs_lib/textures/hdf_66.png rename to signs_lib/textures/signs_lib_font_15px_66.png diff --git a/signs_lib/textures/hdf_67.png b/signs_lib/textures/signs_lib_font_15px_67.png similarity index 100% rename from signs_lib/textures/hdf_67.png rename to signs_lib/textures/signs_lib_font_15px_67.png diff --git a/signs_lib/textures/hdf_68.png b/signs_lib/textures/signs_lib_font_15px_68.png similarity index 100% rename from signs_lib/textures/hdf_68.png rename to signs_lib/textures/signs_lib_font_15px_68.png diff --git a/signs_lib/textures/hdf_69.png b/signs_lib/textures/signs_lib_font_15px_69.png similarity index 100% rename from signs_lib/textures/hdf_69.png rename to signs_lib/textures/signs_lib_font_15px_69.png diff --git a/signs_lib/textures/hdf_6a.png b/signs_lib/textures/signs_lib_font_15px_6a.png similarity index 100% rename from signs_lib/textures/hdf_6a.png rename to signs_lib/textures/signs_lib_font_15px_6a.png diff --git a/signs_lib/textures/hdf_6b.png b/signs_lib/textures/signs_lib_font_15px_6b.png similarity index 100% rename from signs_lib/textures/hdf_6b.png rename to signs_lib/textures/signs_lib_font_15px_6b.png diff --git a/signs_lib/textures/hdf_6c.png b/signs_lib/textures/signs_lib_font_15px_6c.png similarity index 100% rename from signs_lib/textures/hdf_6c.png rename to signs_lib/textures/signs_lib_font_15px_6c.png diff --git a/signs_lib/textures/hdf_6d.png b/signs_lib/textures/signs_lib_font_15px_6d.png similarity index 100% rename from signs_lib/textures/hdf_6d.png rename to signs_lib/textures/signs_lib_font_15px_6d.png diff --git a/signs_lib/textures/hdf_6e.png b/signs_lib/textures/signs_lib_font_15px_6e.png similarity index 100% rename from signs_lib/textures/hdf_6e.png rename to signs_lib/textures/signs_lib_font_15px_6e.png diff --git a/signs_lib/textures/hdf_6f.png b/signs_lib/textures/signs_lib_font_15px_6f.png similarity index 100% rename from signs_lib/textures/hdf_6f.png rename to signs_lib/textures/signs_lib_font_15px_6f.png diff --git a/signs_lib/textures/hdf_70.png b/signs_lib/textures/signs_lib_font_15px_70.png similarity index 100% rename from signs_lib/textures/hdf_70.png rename to signs_lib/textures/signs_lib_font_15px_70.png diff --git a/signs_lib/textures/hdf_71.png b/signs_lib/textures/signs_lib_font_15px_71.png similarity index 100% rename from signs_lib/textures/hdf_71.png rename to signs_lib/textures/signs_lib_font_15px_71.png diff --git a/signs_lib/textures/hdf_72.png b/signs_lib/textures/signs_lib_font_15px_72.png similarity index 100% rename from signs_lib/textures/hdf_72.png rename to signs_lib/textures/signs_lib_font_15px_72.png diff --git a/signs_lib/textures/hdf_73.png b/signs_lib/textures/signs_lib_font_15px_73.png similarity index 100% rename from signs_lib/textures/hdf_73.png rename to signs_lib/textures/signs_lib_font_15px_73.png diff --git a/signs_lib/textures/hdf_74.png b/signs_lib/textures/signs_lib_font_15px_74.png similarity index 100% rename from signs_lib/textures/hdf_74.png rename to signs_lib/textures/signs_lib_font_15px_74.png diff --git a/signs_lib/textures/hdf_75.png b/signs_lib/textures/signs_lib_font_15px_75.png similarity index 100% rename from signs_lib/textures/hdf_75.png rename to signs_lib/textures/signs_lib_font_15px_75.png diff --git a/signs_lib/textures/hdf_76.png b/signs_lib/textures/signs_lib_font_15px_76.png similarity index 100% rename from signs_lib/textures/hdf_76.png rename to signs_lib/textures/signs_lib_font_15px_76.png diff --git a/signs_lib/textures/hdf_77.png b/signs_lib/textures/signs_lib_font_15px_77.png similarity index 100% rename from signs_lib/textures/hdf_77.png rename to signs_lib/textures/signs_lib_font_15px_77.png diff --git a/signs_lib/textures/hdf_78.png b/signs_lib/textures/signs_lib_font_15px_78.png similarity index 100% rename from signs_lib/textures/hdf_78.png rename to signs_lib/textures/signs_lib_font_15px_78.png diff --git a/signs_lib/textures/hdf_79.png b/signs_lib/textures/signs_lib_font_15px_79.png similarity index 100% rename from signs_lib/textures/hdf_79.png rename to signs_lib/textures/signs_lib_font_15px_79.png diff --git a/signs_lib/textures/hdf_7a.png b/signs_lib/textures/signs_lib_font_15px_7a.png similarity index 100% rename from signs_lib/textures/hdf_7a.png rename to signs_lib/textures/signs_lib_font_15px_7a.png diff --git a/signs_lib/textures/hdf_7b.png b/signs_lib/textures/signs_lib_font_15px_7b.png similarity index 100% rename from signs_lib/textures/hdf_7b.png rename to signs_lib/textures/signs_lib_font_15px_7b.png diff --git a/signs_lib/textures/hdf_7c.png b/signs_lib/textures/signs_lib_font_15px_7c.png similarity index 100% rename from signs_lib/textures/hdf_7c.png rename to signs_lib/textures/signs_lib_font_15px_7c.png diff --git a/signs_lib/textures/hdf_7d.png b/signs_lib/textures/signs_lib_font_15px_7d.png similarity index 100% rename from signs_lib/textures/hdf_7d.png rename to signs_lib/textures/signs_lib_font_15px_7d.png diff --git a/signs_lib/textures/hdf_7e.png b/signs_lib/textures/signs_lib_font_15px_7e.png similarity index 100% rename from signs_lib/textures/hdf_7e.png rename to signs_lib/textures/signs_lib_font_15px_7e.png diff --git a/signs_lib/textures/hdf_81.png b/signs_lib/textures/signs_lib_font_15px_81.png similarity index 100% rename from signs_lib/textures/hdf_81.png rename to signs_lib/textures/signs_lib_font_15px_81.png diff --git a/signs_lib/textures/hdf_82.png b/signs_lib/textures/signs_lib_font_15px_82.png similarity index 100% rename from signs_lib/textures/hdf_82.png rename to signs_lib/textures/signs_lib_font_15px_82.png diff --git a/signs_lib/textures/hdf_83.png b/signs_lib/textures/signs_lib_font_15px_83.png similarity index 100% rename from signs_lib/textures/hdf_83.png rename to signs_lib/textures/signs_lib_font_15px_83.png diff --git a/signs_lib/textures/hdf_84.png b/signs_lib/textures/signs_lib_font_15px_84.png similarity index 100% rename from signs_lib/textures/hdf_84.png rename to signs_lib/textures/signs_lib_font_15px_84.png diff --git a/signs_lib/textures/hdf_85.png b/signs_lib/textures/signs_lib_font_15px_85.png similarity index 100% rename from signs_lib/textures/hdf_85.png rename to signs_lib/textures/signs_lib_font_15px_85.png diff --git a/signs_lib/textures/hdf_86.png b/signs_lib/textures/signs_lib_font_15px_86.png similarity index 100% rename from signs_lib/textures/hdf_86.png rename to signs_lib/textures/signs_lib_font_15px_86.png diff --git a/signs_lib/textures/hdf_87.png b/signs_lib/textures/signs_lib_font_15px_87.png similarity index 100% rename from signs_lib/textures/hdf_87.png rename to signs_lib/textures/signs_lib_font_15px_87.png diff --git a/signs_lib/textures/hdf_88.png b/signs_lib/textures/signs_lib_font_15px_88.png similarity index 100% rename from signs_lib/textures/hdf_88.png rename to signs_lib/textures/signs_lib_font_15px_88.png diff --git a/signs_lib/textures/hdf_8a.png b/signs_lib/textures/signs_lib_font_15px_8a.png similarity index 100% rename from signs_lib/textures/hdf_8a.png rename to signs_lib/textures/signs_lib_font_15px_8a.png diff --git a/signs_lib/textures/hdf_8b.png b/signs_lib/textures/signs_lib_font_15px_8b.png similarity index 100% rename from signs_lib/textures/hdf_8b.png rename to signs_lib/textures/signs_lib_font_15px_8b.png diff --git a/signs_lib/textures/hdf_8c.png b/signs_lib/textures/signs_lib_font_15px_8c.png similarity index 100% rename from signs_lib/textures/hdf_8c.png rename to signs_lib/textures/signs_lib_font_15px_8c.png diff --git a/signs_lib/textures/hdf_8d.png b/signs_lib/textures/signs_lib_font_15px_8d.png similarity index 100% rename from signs_lib/textures/hdf_8d.png rename to signs_lib/textures/signs_lib_font_15px_8d.png diff --git a/signs_lib/textures/hdf_8e.png b/signs_lib/textures/signs_lib_font_15px_8e.png similarity index 100% rename from signs_lib/textures/hdf_8e.png rename to signs_lib/textures/signs_lib_font_15px_8e.png diff --git a/signs_lib/textures/hdf_8f.png b/signs_lib/textures/signs_lib_font_15px_8f.png similarity index 100% rename from signs_lib/textures/hdf_8f.png rename to signs_lib/textures/signs_lib_font_15px_8f.png diff --git a/signs_lib/textures/hdf_90.png b/signs_lib/textures/signs_lib_font_15px_90.png similarity index 100% rename from signs_lib/textures/hdf_90.png rename to signs_lib/textures/signs_lib_font_15px_90.png diff --git a/signs_lib/textures/hdf_91.png b/signs_lib/textures/signs_lib_font_15px_91.png similarity index 100% rename from signs_lib/textures/hdf_91.png rename to signs_lib/textures/signs_lib_font_15px_91.png diff --git a/signs_lib/textures/hdf_a8.png b/signs_lib/textures/signs_lib_font_15px_a8.png similarity index 100% rename from signs_lib/textures/hdf_a8.png rename to signs_lib/textures/signs_lib_font_15px_a8.png diff --git a/signs_lib/textures/hdf_b8.png b/signs_lib/textures/signs_lib_font_15px_b8.png similarity index 100% rename from signs_lib/textures/hdf_b8.png rename to signs_lib/textures/signs_lib_font_15px_b8.png diff --git a/signs_lib/textures/hdf_b9.png b/signs_lib/textures/signs_lib_font_15px_b9.png similarity index 100% rename from signs_lib/textures/hdf_b9.png rename to signs_lib/textures/signs_lib_font_15px_b9.png diff --git a/signs_lib/textures/hdf_c0.png b/signs_lib/textures/signs_lib_font_15px_c0.png similarity index 100% rename from signs_lib/textures/hdf_c0.png rename to signs_lib/textures/signs_lib_font_15px_c0.png diff --git a/signs_lib/textures/hdf_c1.png b/signs_lib/textures/signs_lib_font_15px_c1.png similarity index 100% rename from signs_lib/textures/hdf_c1.png rename to signs_lib/textures/signs_lib_font_15px_c1.png diff --git a/signs_lib/textures/hdf_c2.png b/signs_lib/textures/signs_lib_font_15px_c2.png similarity index 100% rename from signs_lib/textures/hdf_c2.png rename to signs_lib/textures/signs_lib_font_15px_c2.png diff --git a/signs_lib/textures/hdf_c3.png b/signs_lib/textures/signs_lib_font_15px_c3.png similarity index 100% rename from signs_lib/textures/hdf_c3.png rename to signs_lib/textures/signs_lib_font_15px_c3.png diff --git a/signs_lib/textures/hdf_c4.png b/signs_lib/textures/signs_lib_font_15px_c4.png similarity index 100% rename from signs_lib/textures/hdf_c4.png rename to signs_lib/textures/signs_lib_font_15px_c4.png diff --git a/signs_lib/textures/hdf_c5.png b/signs_lib/textures/signs_lib_font_15px_c5.png similarity index 100% rename from signs_lib/textures/hdf_c5.png rename to signs_lib/textures/signs_lib_font_15px_c5.png diff --git a/signs_lib/textures/hdf_c6.png b/signs_lib/textures/signs_lib_font_15px_c6.png similarity index 100% rename from signs_lib/textures/hdf_c6.png rename to signs_lib/textures/signs_lib_font_15px_c6.png diff --git a/signs_lib/textures/hdf_c7.png b/signs_lib/textures/signs_lib_font_15px_c7.png similarity index 100% rename from signs_lib/textures/hdf_c7.png rename to signs_lib/textures/signs_lib_font_15px_c7.png diff --git a/signs_lib/textures/hdf_c8.png b/signs_lib/textures/signs_lib_font_15px_c8.png similarity index 100% rename from signs_lib/textures/hdf_c8.png rename to signs_lib/textures/signs_lib_font_15px_c8.png diff --git a/signs_lib/textures/hdf_c9.png b/signs_lib/textures/signs_lib_font_15px_c9.png similarity index 100% rename from signs_lib/textures/hdf_c9.png rename to signs_lib/textures/signs_lib_font_15px_c9.png diff --git a/signs_lib/textures/hdf_ca.png b/signs_lib/textures/signs_lib_font_15px_ca.png similarity index 100% rename from signs_lib/textures/hdf_ca.png rename to signs_lib/textures/signs_lib_font_15px_ca.png diff --git a/signs_lib/textures/hdf_cb.png b/signs_lib/textures/signs_lib_font_15px_cb.png similarity index 100% rename from signs_lib/textures/hdf_cb.png rename to signs_lib/textures/signs_lib_font_15px_cb.png diff --git a/signs_lib/textures/hdf_cc.png b/signs_lib/textures/signs_lib_font_15px_cc.png similarity index 100% rename from signs_lib/textures/hdf_cc.png rename to signs_lib/textures/signs_lib_font_15px_cc.png diff --git a/signs_lib/textures/hdf_cd.png b/signs_lib/textures/signs_lib_font_15px_cd.png similarity index 100% rename from signs_lib/textures/hdf_cd.png rename to signs_lib/textures/signs_lib_font_15px_cd.png diff --git a/signs_lib/textures/hdf_ce.png b/signs_lib/textures/signs_lib_font_15px_ce.png similarity index 100% rename from signs_lib/textures/hdf_ce.png rename to signs_lib/textures/signs_lib_font_15px_ce.png diff --git a/signs_lib/textures/hdf_cf.png b/signs_lib/textures/signs_lib_font_15px_cf.png similarity index 100% rename from signs_lib/textures/hdf_cf.png rename to signs_lib/textures/signs_lib_font_15px_cf.png diff --git a/signs_lib/textures/hdf_d0.png b/signs_lib/textures/signs_lib_font_15px_d0.png similarity index 100% rename from signs_lib/textures/hdf_d0.png rename to signs_lib/textures/signs_lib_font_15px_d0.png diff --git a/signs_lib/textures/hdf_d1.png b/signs_lib/textures/signs_lib_font_15px_d1.png similarity index 100% rename from signs_lib/textures/hdf_d1.png rename to signs_lib/textures/signs_lib_font_15px_d1.png diff --git a/signs_lib/textures/hdf_d2.png b/signs_lib/textures/signs_lib_font_15px_d2.png similarity index 100% rename from signs_lib/textures/hdf_d2.png rename to signs_lib/textures/signs_lib_font_15px_d2.png diff --git a/signs_lib/textures/hdf_d3.png b/signs_lib/textures/signs_lib_font_15px_d3.png similarity index 100% rename from signs_lib/textures/hdf_d3.png rename to signs_lib/textures/signs_lib_font_15px_d3.png diff --git a/signs_lib/textures/hdf_d4.png b/signs_lib/textures/signs_lib_font_15px_d4.png similarity index 100% rename from signs_lib/textures/hdf_d4.png rename to signs_lib/textures/signs_lib_font_15px_d4.png diff --git a/signs_lib/textures/hdf_d5.png b/signs_lib/textures/signs_lib_font_15px_d5.png similarity index 100% rename from signs_lib/textures/hdf_d5.png rename to signs_lib/textures/signs_lib_font_15px_d5.png diff --git a/signs_lib/textures/hdf_d6.png b/signs_lib/textures/signs_lib_font_15px_d6.png similarity index 100% rename from signs_lib/textures/hdf_d6.png rename to signs_lib/textures/signs_lib_font_15px_d6.png diff --git a/signs_lib/textures/hdf_d7.png b/signs_lib/textures/signs_lib_font_15px_d7.png similarity index 100% rename from signs_lib/textures/hdf_d7.png rename to signs_lib/textures/signs_lib_font_15px_d7.png diff --git a/signs_lib/textures/hdf_d8.png b/signs_lib/textures/signs_lib_font_15px_d8.png similarity index 100% rename from signs_lib/textures/hdf_d8.png rename to signs_lib/textures/signs_lib_font_15px_d8.png diff --git a/signs_lib/textures/hdf_d9.png b/signs_lib/textures/signs_lib_font_15px_d9.png similarity index 100% rename from signs_lib/textures/hdf_d9.png rename to signs_lib/textures/signs_lib_font_15px_d9.png diff --git a/signs_lib/textures/hdf_da.png b/signs_lib/textures/signs_lib_font_15px_da.png similarity index 100% rename from signs_lib/textures/hdf_da.png rename to signs_lib/textures/signs_lib_font_15px_da.png diff --git a/signs_lib/textures/hdf_db.png b/signs_lib/textures/signs_lib_font_15px_db.png similarity index 100% rename from signs_lib/textures/hdf_db.png rename to signs_lib/textures/signs_lib_font_15px_db.png diff --git a/signs_lib/textures/hdf_dc.png b/signs_lib/textures/signs_lib_font_15px_dc.png similarity index 100% rename from signs_lib/textures/hdf_dc.png rename to signs_lib/textures/signs_lib_font_15px_dc.png diff --git a/signs_lib/textures/hdf_dd.png b/signs_lib/textures/signs_lib_font_15px_dd.png similarity index 100% rename from signs_lib/textures/hdf_dd.png rename to signs_lib/textures/signs_lib_font_15px_dd.png diff --git a/signs_lib/textures/hdf_de.png b/signs_lib/textures/signs_lib_font_15px_de.png similarity index 100% rename from signs_lib/textures/hdf_de.png rename to signs_lib/textures/signs_lib_font_15px_de.png diff --git a/signs_lib/textures/hdf_df.png b/signs_lib/textures/signs_lib_font_15px_df.png similarity index 100% rename from signs_lib/textures/hdf_df.png rename to signs_lib/textures/signs_lib_font_15px_df.png diff --git a/signs_lib/textures/hdf_e0.png b/signs_lib/textures/signs_lib_font_15px_e0.png similarity index 100% rename from signs_lib/textures/hdf_e0.png rename to signs_lib/textures/signs_lib_font_15px_e0.png diff --git a/signs_lib/textures/hdf_e1.png b/signs_lib/textures/signs_lib_font_15px_e1.png similarity index 100% rename from signs_lib/textures/hdf_e1.png rename to signs_lib/textures/signs_lib_font_15px_e1.png diff --git a/signs_lib/textures/hdf_e2.png b/signs_lib/textures/signs_lib_font_15px_e2.png similarity index 100% rename from signs_lib/textures/hdf_e2.png rename to signs_lib/textures/signs_lib_font_15px_e2.png diff --git a/signs_lib/textures/hdf_e3.png b/signs_lib/textures/signs_lib_font_15px_e3.png similarity index 100% rename from signs_lib/textures/hdf_e3.png rename to signs_lib/textures/signs_lib_font_15px_e3.png diff --git a/signs_lib/textures/hdf_e4.png b/signs_lib/textures/signs_lib_font_15px_e4.png similarity index 100% rename from signs_lib/textures/hdf_e4.png rename to signs_lib/textures/signs_lib_font_15px_e4.png diff --git a/signs_lib/textures/hdf_e5.png b/signs_lib/textures/signs_lib_font_15px_e5.png similarity index 100% rename from signs_lib/textures/hdf_e5.png rename to signs_lib/textures/signs_lib_font_15px_e5.png diff --git a/signs_lib/textures/hdf_e6.png b/signs_lib/textures/signs_lib_font_15px_e6.png similarity index 100% rename from signs_lib/textures/hdf_e6.png rename to signs_lib/textures/signs_lib_font_15px_e6.png diff --git a/signs_lib/textures/hdf_e7.png b/signs_lib/textures/signs_lib_font_15px_e7.png similarity index 100% rename from signs_lib/textures/hdf_e7.png rename to signs_lib/textures/signs_lib_font_15px_e7.png diff --git a/signs_lib/textures/hdf_e8.png b/signs_lib/textures/signs_lib_font_15px_e8.png similarity index 100% rename from signs_lib/textures/hdf_e8.png rename to signs_lib/textures/signs_lib_font_15px_e8.png diff --git a/signs_lib/textures/hdf_e9.png b/signs_lib/textures/signs_lib_font_15px_e9.png similarity index 100% rename from signs_lib/textures/hdf_e9.png rename to signs_lib/textures/signs_lib_font_15px_e9.png diff --git a/signs_lib/textures/hdf_ea.png b/signs_lib/textures/signs_lib_font_15px_ea.png similarity index 100% rename from signs_lib/textures/hdf_ea.png rename to signs_lib/textures/signs_lib_font_15px_ea.png diff --git a/signs_lib/textures/hdf_eb.png b/signs_lib/textures/signs_lib_font_15px_eb.png similarity index 100% rename from signs_lib/textures/hdf_eb.png rename to signs_lib/textures/signs_lib_font_15px_eb.png diff --git a/signs_lib/textures/hdf_ec.png b/signs_lib/textures/signs_lib_font_15px_ec.png similarity index 100% rename from signs_lib/textures/hdf_ec.png rename to signs_lib/textures/signs_lib_font_15px_ec.png diff --git a/signs_lib/textures/hdf_ed.png b/signs_lib/textures/signs_lib_font_15px_ed.png similarity index 100% rename from signs_lib/textures/hdf_ed.png rename to signs_lib/textures/signs_lib_font_15px_ed.png diff --git a/signs_lib/textures/hdf_ee.png b/signs_lib/textures/signs_lib_font_15px_ee.png similarity index 100% rename from signs_lib/textures/hdf_ee.png rename to signs_lib/textures/signs_lib_font_15px_ee.png diff --git a/signs_lib/textures/hdf_ef.png b/signs_lib/textures/signs_lib_font_15px_ef.png similarity index 100% rename from signs_lib/textures/hdf_ef.png rename to signs_lib/textures/signs_lib_font_15px_ef.png diff --git a/signs_lib/textures/hdf_f0.png b/signs_lib/textures/signs_lib_font_15px_f0.png similarity index 100% rename from signs_lib/textures/hdf_f0.png rename to signs_lib/textures/signs_lib_font_15px_f0.png diff --git a/signs_lib/textures/hdf_f1.png b/signs_lib/textures/signs_lib_font_15px_f1.png similarity index 100% rename from signs_lib/textures/hdf_f1.png rename to signs_lib/textures/signs_lib_font_15px_f1.png diff --git a/signs_lib/textures/hdf_f2.png b/signs_lib/textures/signs_lib_font_15px_f2.png similarity index 100% rename from signs_lib/textures/hdf_f2.png rename to signs_lib/textures/signs_lib_font_15px_f2.png diff --git a/signs_lib/textures/hdf_f3.png b/signs_lib/textures/signs_lib_font_15px_f3.png similarity index 100% rename from signs_lib/textures/hdf_f3.png rename to signs_lib/textures/signs_lib_font_15px_f3.png diff --git a/signs_lib/textures/hdf_f4.png b/signs_lib/textures/signs_lib_font_15px_f4.png similarity index 100% rename from signs_lib/textures/hdf_f4.png rename to signs_lib/textures/signs_lib_font_15px_f4.png diff --git a/signs_lib/textures/hdf_f5.png b/signs_lib/textures/signs_lib_font_15px_f5.png similarity index 100% rename from signs_lib/textures/hdf_f5.png rename to signs_lib/textures/signs_lib_font_15px_f5.png diff --git a/signs_lib/textures/hdf_f6.png b/signs_lib/textures/signs_lib_font_15px_f6.png similarity index 100% rename from signs_lib/textures/hdf_f6.png rename to signs_lib/textures/signs_lib_font_15px_f6.png diff --git a/signs_lib/textures/hdf_f7.png b/signs_lib/textures/signs_lib_font_15px_f7.png similarity index 100% rename from signs_lib/textures/hdf_f7.png rename to signs_lib/textures/signs_lib_font_15px_f7.png diff --git a/signs_lib/textures/hdf_f8.png b/signs_lib/textures/signs_lib_font_15px_f8.png similarity index 100% rename from signs_lib/textures/hdf_f8.png rename to signs_lib/textures/signs_lib_font_15px_f8.png diff --git a/signs_lib/textures/hdf_f9.png b/signs_lib/textures/signs_lib_font_15px_f9.png similarity index 100% rename from signs_lib/textures/hdf_f9.png rename to signs_lib/textures/signs_lib_font_15px_f9.png diff --git a/signs_lib/textures/hdf_fa.png b/signs_lib/textures/signs_lib_font_15px_fa.png similarity index 100% rename from signs_lib/textures/hdf_fa.png rename to signs_lib/textures/signs_lib_font_15px_fa.png diff --git a/signs_lib/textures/hdf_fb.png b/signs_lib/textures/signs_lib_font_15px_fb.png similarity index 100% rename from signs_lib/textures/hdf_fb.png rename to signs_lib/textures/signs_lib_font_15px_fb.png diff --git a/signs_lib/textures/hdf_fc.png b/signs_lib/textures/signs_lib_font_15px_fc.png similarity index 100% rename from signs_lib/textures/hdf_fc.png rename to signs_lib/textures/signs_lib_font_15px_fc.png diff --git a/signs_lib/textures/hdf_fd.png b/signs_lib/textures/signs_lib_font_15px_fd.png similarity index 100% rename from signs_lib/textures/hdf_fd.png rename to signs_lib/textures/signs_lib_font_15px_fd.png diff --git a/signs_lib/textures/hdf_fe.png b/signs_lib/textures/signs_lib_font_15px_fe.png similarity index 100% rename from signs_lib/textures/hdf_fe.png rename to signs_lib/textures/signs_lib_font_15px_fe.png diff --git a/signs_lib/textures/hdf_ff.png b/signs_lib/textures/signs_lib_font_15px_ff.png similarity index 100% rename from signs_lib/textures/hdf_ff.png rename to signs_lib/textures/signs_lib_font_15px_ff.png diff --git a/street_signs/textures/street_signs_font_31px_20.png b/signs_lib/textures/signs_lib_font_31px_20.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_20.png rename to signs_lib/textures/signs_lib_font_31px_20.png diff --git a/street_signs/textures/street_signs_font_31px_21.png b/signs_lib/textures/signs_lib_font_31px_21.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_21.png rename to signs_lib/textures/signs_lib_font_31px_21.png diff --git a/street_signs/textures/street_signs_font_31px_22.png b/signs_lib/textures/signs_lib_font_31px_22.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_22.png rename to signs_lib/textures/signs_lib_font_31px_22.png diff --git a/street_signs/textures/street_signs_font_31px_23.png b/signs_lib/textures/signs_lib_font_31px_23.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_23.png rename to signs_lib/textures/signs_lib_font_31px_23.png diff --git a/street_signs/textures/street_signs_font_31px_24.png b/signs_lib/textures/signs_lib_font_31px_24.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_24.png rename to signs_lib/textures/signs_lib_font_31px_24.png diff --git a/street_signs/textures/street_signs_font_31px_25.png b/signs_lib/textures/signs_lib_font_31px_25.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_25.png rename to signs_lib/textures/signs_lib_font_31px_25.png diff --git a/street_signs/textures/street_signs_font_31px_26.png b/signs_lib/textures/signs_lib_font_31px_26.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_26.png rename to signs_lib/textures/signs_lib_font_31px_26.png diff --git a/street_signs/textures/street_signs_font_31px_27.png b/signs_lib/textures/signs_lib_font_31px_27.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_27.png rename to signs_lib/textures/signs_lib_font_31px_27.png diff --git a/street_signs/textures/street_signs_font_31px_28.png b/signs_lib/textures/signs_lib_font_31px_28.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_28.png rename to signs_lib/textures/signs_lib_font_31px_28.png diff --git a/street_signs/textures/street_signs_font_31px_29.png b/signs_lib/textures/signs_lib_font_31px_29.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_29.png rename to signs_lib/textures/signs_lib_font_31px_29.png diff --git a/street_signs/textures/street_signs_font_31px_2a.png b/signs_lib/textures/signs_lib_font_31px_2a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_2a.png rename to signs_lib/textures/signs_lib_font_31px_2a.png diff --git a/street_signs/textures/street_signs_font_31px_2b.png b/signs_lib/textures/signs_lib_font_31px_2b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_2b.png rename to signs_lib/textures/signs_lib_font_31px_2b.png diff --git a/street_signs/textures/street_signs_font_31px_2c.png b/signs_lib/textures/signs_lib_font_31px_2c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_2c.png rename to signs_lib/textures/signs_lib_font_31px_2c.png diff --git a/street_signs/textures/street_signs_font_31px_2d.png b/signs_lib/textures/signs_lib_font_31px_2d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_2d.png rename to signs_lib/textures/signs_lib_font_31px_2d.png diff --git a/street_signs/textures/street_signs_font_31px_2e.png b/signs_lib/textures/signs_lib_font_31px_2e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_2e.png rename to signs_lib/textures/signs_lib_font_31px_2e.png diff --git a/street_signs/textures/street_signs_font_31px_2f.png b/signs_lib/textures/signs_lib_font_31px_2f.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_2f.png rename to signs_lib/textures/signs_lib_font_31px_2f.png diff --git a/street_signs/textures/street_signs_font_31px_30.png b/signs_lib/textures/signs_lib_font_31px_30.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_30.png rename to signs_lib/textures/signs_lib_font_31px_30.png diff --git a/street_signs/textures/street_signs_font_31px_31.png b/signs_lib/textures/signs_lib_font_31px_31.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_31.png rename to signs_lib/textures/signs_lib_font_31px_31.png diff --git a/street_signs/textures/street_signs_font_31px_32.png b/signs_lib/textures/signs_lib_font_31px_32.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_32.png rename to signs_lib/textures/signs_lib_font_31px_32.png diff --git a/street_signs/textures/street_signs_font_31px_33.png b/signs_lib/textures/signs_lib_font_31px_33.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_33.png rename to signs_lib/textures/signs_lib_font_31px_33.png diff --git a/street_signs/textures/street_signs_font_31px_34.png b/signs_lib/textures/signs_lib_font_31px_34.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_34.png rename to signs_lib/textures/signs_lib_font_31px_34.png diff --git a/street_signs/textures/street_signs_font_31px_35.png b/signs_lib/textures/signs_lib_font_31px_35.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_35.png rename to signs_lib/textures/signs_lib_font_31px_35.png diff --git a/street_signs/textures/street_signs_font_31px_36.png b/signs_lib/textures/signs_lib_font_31px_36.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_36.png rename to signs_lib/textures/signs_lib_font_31px_36.png diff --git a/street_signs/textures/street_signs_font_31px_37.png b/signs_lib/textures/signs_lib_font_31px_37.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_37.png rename to signs_lib/textures/signs_lib_font_31px_37.png diff --git a/street_signs/textures/street_signs_font_31px_38.png b/signs_lib/textures/signs_lib_font_31px_38.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_38.png rename to signs_lib/textures/signs_lib_font_31px_38.png diff --git a/street_signs/textures/street_signs_font_31px_39.png b/signs_lib/textures/signs_lib_font_31px_39.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_39.png rename to signs_lib/textures/signs_lib_font_31px_39.png diff --git a/street_signs/textures/street_signs_font_31px_3a.png b/signs_lib/textures/signs_lib_font_31px_3a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_3a.png rename to signs_lib/textures/signs_lib_font_31px_3a.png diff --git a/street_signs/textures/street_signs_font_31px_3b.png b/signs_lib/textures/signs_lib_font_31px_3b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_3b.png rename to signs_lib/textures/signs_lib_font_31px_3b.png diff --git a/street_signs/textures/street_signs_font_31px_3c.png b/signs_lib/textures/signs_lib_font_31px_3c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_3c.png rename to signs_lib/textures/signs_lib_font_31px_3c.png diff --git a/street_signs/textures/street_signs_font_31px_3d.png b/signs_lib/textures/signs_lib_font_31px_3d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_3d.png rename to signs_lib/textures/signs_lib_font_31px_3d.png diff --git a/street_signs/textures/street_signs_font_31px_3e.png b/signs_lib/textures/signs_lib_font_31px_3e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_3e.png rename to signs_lib/textures/signs_lib_font_31px_3e.png diff --git a/street_signs/textures/street_signs_font_31px_3f.png b/signs_lib/textures/signs_lib_font_31px_3f.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_3f.png rename to signs_lib/textures/signs_lib_font_31px_3f.png diff --git a/street_signs/textures/street_signs_font_31px_40.png b/signs_lib/textures/signs_lib_font_31px_40.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_40.png rename to signs_lib/textures/signs_lib_font_31px_40.png diff --git a/street_signs/textures/street_signs_font_31px_41.png b/signs_lib/textures/signs_lib_font_31px_41.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_41.png rename to signs_lib/textures/signs_lib_font_31px_41.png diff --git a/street_signs/textures/street_signs_font_31px_42.png b/signs_lib/textures/signs_lib_font_31px_42.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_42.png rename to signs_lib/textures/signs_lib_font_31px_42.png diff --git a/street_signs/textures/street_signs_font_31px_43.png b/signs_lib/textures/signs_lib_font_31px_43.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_43.png rename to signs_lib/textures/signs_lib_font_31px_43.png diff --git a/street_signs/textures/street_signs_font_31px_44.png b/signs_lib/textures/signs_lib_font_31px_44.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_44.png rename to signs_lib/textures/signs_lib_font_31px_44.png diff --git a/street_signs/textures/street_signs_font_31px_45.png b/signs_lib/textures/signs_lib_font_31px_45.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_45.png rename to signs_lib/textures/signs_lib_font_31px_45.png diff --git a/street_signs/textures/street_signs_font_31px_46.png b/signs_lib/textures/signs_lib_font_31px_46.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_46.png rename to signs_lib/textures/signs_lib_font_31px_46.png diff --git a/street_signs/textures/street_signs_font_31px_47.png b/signs_lib/textures/signs_lib_font_31px_47.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_47.png rename to signs_lib/textures/signs_lib_font_31px_47.png diff --git a/street_signs/textures/street_signs_font_31px_48.png b/signs_lib/textures/signs_lib_font_31px_48.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_48.png rename to signs_lib/textures/signs_lib_font_31px_48.png diff --git a/street_signs/textures/street_signs_font_31px_49.png b/signs_lib/textures/signs_lib_font_31px_49.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_49.png rename to signs_lib/textures/signs_lib_font_31px_49.png diff --git a/street_signs/textures/street_signs_font_31px_4a.png b/signs_lib/textures/signs_lib_font_31px_4a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_4a.png rename to signs_lib/textures/signs_lib_font_31px_4a.png diff --git a/street_signs/textures/street_signs_font_31px_4b.png b/signs_lib/textures/signs_lib_font_31px_4b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_4b.png rename to signs_lib/textures/signs_lib_font_31px_4b.png diff --git a/street_signs/textures/street_signs_font_31px_4c.png b/signs_lib/textures/signs_lib_font_31px_4c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_4c.png rename to signs_lib/textures/signs_lib_font_31px_4c.png diff --git a/street_signs/textures/street_signs_font_31px_4d.png b/signs_lib/textures/signs_lib_font_31px_4d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_4d.png rename to signs_lib/textures/signs_lib_font_31px_4d.png diff --git a/street_signs/textures/street_signs_font_31px_4e.png b/signs_lib/textures/signs_lib_font_31px_4e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_4e.png rename to signs_lib/textures/signs_lib_font_31px_4e.png diff --git a/street_signs/textures/street_signs_font_31px_4f.png b/signs_lib/textures/signs_lib_font_31px_4f.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_4f.png rename to signs_lib/textures/signs_lib_font_31px_4f.png diff --git a/street_signs/textures/street_signs_font_31px_50.png b/signs_lib/textures/signs_lib_font_31px_50.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_50.png rename to signs_lib/textures/signs_lib_font_31px_50.png diff --git a/street_signs/textures/street_signs_font_31px_51.png b/signs_lib/textures/signs_lib_font_31px_51.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_51.png rename to signs_lib/textures/signs_lib_font_31px_51.png diff --git a/street_signs/textures/street_signs_font_31px_52.png b/signs_lib/textures/signs_lib_font_31px_52.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_52.png rename to signs_lib/textures/signs_lib_font_31px_52.png diff --git a/street_signs/textures/street_signs_font_31px_53.png b/signs_lib/textures/signs_lib_font_31px_53.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_53.png rename to signs_lib/textures/signs_lib_font_31px_53.png diff --git a/street_signs/textures/street_signs_font_31px_54.png b/signs_lib/textures/signs_lib_font_31px_54.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_54.png rename to signs_lib/textures/signs_lib_font_31px_54.png diff --git a/street_signs/textures/street_signs_font_31px_55.png b/signs_lib/textures/signs_lib_font_31px_55.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_55.png rename to signs_lib/textures/signs_lib_font_31px_55.png diff --git a/street_signs/textures/street_signs_font_31px_56.png b/signs_lib/textures/signs_lib_font_31px_56.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_56.png rename to signs_lib/textures/signs_lib_font_31px_56.png diff --git a/street_signs/textures/street_signs_font_31px_57.png b/signs_lib/textures/signs_lib_font_31px_57.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_57.png rename to signs_lib/textures/signs_lib_font_31px_57.png diff --git a/street_signs/textures/street_signs_font_31px_58.png b/signs_lib/textures/signs_lib_font_31px_58.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_58.png rename to signs_lib/textures/signs_lib_font_31px_58.png diff --git a/street_signs/textures/street_signs_font_31px_59.png b/signs_lib/textures/signs_lib_font_31px_59.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_59.png rename to signs_lib/textures/signs_lib_font_31px_59.png diff --git a/street_signs/textures/street_signs_font_31px_5a.png b/signs_lib/textures/signs_lib_font_31px_5a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_5a.png rename to signs_lib/textures/signs_lib_font_31px_5a.png diff --git a/street_signs/textures/street_signs_font_31px_5b.png b/signs_lib/textures/signs_lib_font_31px_5b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_5b.png rename to signs_lib/textures/signs_lib_font_31px_5b.png diff --git a/street_signs/textures/street_signs_font_31px_5c.png b/signs_lib/textures/signs_lib_font_31px_5c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_5c.png rename to signs_lib/textures/signs_lib_font_31px_5c.png diff --git a/street_signs/textures/street_signs_font_31px_5d.png b/signs_lib/textures/signs_lib_font_31px_5d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_5d.png rename to signs_lib/textures/signs_lib_font_31px_5d.png diff --git a/street_signs/textures/street_signs_font_31px_5e.png b/signs_lib/textures/signs_lib_font_31px_5e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_5e.png rename to signs_lib/textures/signs_lib_font_31px_5e.png diff --git a/street_signs/textures/street_signs_font_31px_5f.png b/signs_lib/textures/signs_lib_font_31px_5f.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_5f.png rename to signs_lib/textures/signs_lib_font_31px_5f.png diff --git a/street_signs/textures/street_signs_font_31px_60.png b/signs_lib/textures/signs_lib_font_31px_60.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_60.png rename to signs_lib/textures/signs_lib_font_31px_60.png diff --git a/street_signs/textures/street_signs_font_31px_61.png b/signs_lib/textures/signs_lib_font_31px_61.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_61.png rename to signs_lib/textures/signs_lib_font_31px_61.png diff --git a/street_signs/textures/street_signs_font_31px_62.png b/signs_lib/textures/signs_lib_font_31px_62.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_62.png rename to signs_lib/textures/signs_lib_font_31px_62.png diff --git a/street_signs/textures/street_signs_font_31px_63.png b/signs_lib/textures/signs_lib_font_31px_63.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_63.png rename to signs_lib/textures/signs_lib_font_31px_63.png diff --git a/street_signs/textures/street_signs_font_31px_64.png b/signs_lib/textures/signs_lib_font_31px_64.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_64.png rename to signs_lib/textures/signs_lib_font_31px_64.png diff --git a/street_signs/textures/street_signs_font_31px_65.png b/signs_lib/textures/signs_lib_font_31px_65.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_65.png rename to signs_lib/textures/signs_lib_font_31px_65.png diff --git a/street_signs/textures/street_signs_font_31px_66.png b/signs_lib/textures/signs_lib_font_31px_66.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_66.png rename to signs_lib/textures/signs_lib_font_31px_66.png diff --git a/street_signs/textures/street_signs_font_31px_67.png b/signs_lib/textures/signs_lib_font_31px_67.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_67.png rename to signs_lib/textures/signs_lib_font_31px_67.png diff --git a/street_signs/textures/street_signs_font_31px_68.png b/signs_lib/textures/signs_lib_font_31px_68.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_68.png rename to signs_lib/textures/signs_lib_font_31px_68.png diff --git a/street_signs/textures/street_signs_font_31px_69.png b/signs_lib/textures/signs_lib_font_31px_69.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_69.png rename to signs_lib/textures/signs_lib_font_31px_69.png diff --git a/street_signs/textures/street_signs_font_31px_6a.png b/signs_lib/textures/signs_lib_font_31px_6a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_6a.png rename to signs_lib/textures/signs_lib_font_31px_6a.png diff --git a/street_signs/textures/street_signs_font_31px_6b.png b/signs_lib/textures/signs_lib_font_31px_6b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_6b.png rename to signs_lib/textures/signs_lib_font_31px_6b.png diff --git a/street_signs/textures/street_signs_font_31px_6c.png b/signs_lib/textures/signs_lib_font_31px_6c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_6c.png rename to signs_lib/textures/signs_lib_font_31px_6c.png diff --git a/street_signs/textures/street_signs_font_31px_6d.png b/signs_lib/textures/signs_lib_font_31px_6d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_6d.png rename to signs_lib/textures/signs_lib_font_31px_6d.png diff --git a/street_signs/textures/street_signs_font_31px_6e.png b/signs_lib/textures/signs_lib_font_31px_6e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_6e.png rename to signs_lib/textures/signs_lib_font_31px_6e.png diff --git a/street_signs/textures/street_signs_font_31px_6f.png b/signs_lib/textures/signs_lib_font_31px_6f.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_6f.png rename to signs_lib/textures/signs_lib_font_31px_6f.png diff --git a/street_signs/textures/street_signs_font_31px_70.png b/signs_lib/textures/signs_lib_font_31px_70.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_70.png rename to signs_lib/textures/signs_lib_font_31px_70.png diff --git a/street_signs/textures/street_signs_font_31px_71.png b/signs_lib/textures/signs_lib_font_31px_71.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_71.png rename to signs_lib/textures/signs_lib_font_31px_71.png diff --git a/street_signs/textures/street_signs_font_31px_72.png b/signs_lib/textures/signs_lib_font_31px_72.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_72.png rename to signs_lib/textures/signs_lib_font_31px_72.png diff --git a/street_signs/textures/street_signs_font_31px_73.png b/signs_lib/textures/signs_lib_font_31px_73.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_73.png rename to signs_lib/textures/signs_lib_font_31px_73.png diff --git a/street_signs/textures/street_signs_font_31px_74.png b/signs_lib/textures/signs_lib_font_31px_74.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_74.png rename to signs_lib/textures/signs_lib_font_31px_74.png diff --git a/street_signs/textures/street_signs_font_31px_75.png b/signs_lib/textures/signs_lib_font_31px_75.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_75.png rename to signs_lib/textures/signs_lib_font_31px_75.png diff --git a/street_signs/textures/street_signs_font_31px_76.png b/signs_lib/textures/signs_lib_font_31px_76.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_76.png rename to signs_lib/textures/signs_lib_font_31px_76.png diff --git a/street_signs/textures/street_signs_font_31px_77.png b/signs_lib/textures/signs_lib_font_31px_77.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_77.png rename to signs_lib/textures/signs_lib_font_31px_77.png diff --git a/street_signs/textures/street_signs_font_31px_78.png b/signs_lib/textures/signs_lib_font_31px_78.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_78.png rename to signs_lib/textures/signs_lib_font_31px_78.png diff --git a/street_signs/textures/street_signs_font_31px_79.png b/signs_lib/textures/signs_lib_font_31px_79.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_79.png rename to signs_lib/textures/signs_lib_font_31px_79.png diff --git a/street_signs/textures/street_signs_font_31px_7a.png b/signs_lib/textures/signs_lib_font_31px_7a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_7a.png rename to signs_lib/textures/signs_lib_font_31px_7a.png diff --git a/street_signs/textures/street_signs_font_31px_7b.png b/signs_lib/textures/signs_lib_font_31px_7b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_7b.png rename to signs_lib/textures/signs_lib_font_31px_7b.png diff --git a/street_signs/textures/street_signs_font_31px_7c.png b/signs_lib/textures/signs_lib_font_31px_7c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_7c.png rename to signs_lib/textures/signs_lib_font_31px_7c.png diff --git a/street_signs/textures/street_signs_font_31px_7d.png b/signs_lib/textures/signs_lib_font_31px_7d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_7d.png rename to signs_lib/textures/signs_lib_font_31px_7d.png diff --git a/street_signs/textures/street_signs_font_31px_7e.png b/signs_lib/textures/signs_lib_font_31px_7e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_7e.png rename to signs_lib/textures/signs_lib_font_31px_7e.png diff --git a/street_signs/textures/street_signs_font_31px_81.png b/signs_lib/textures/signs_lib_font_31px_81.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_81.png rename to signs_lib/textures/signs_lib_font_31px_81.png diff --git a/street_signs/textures/street_signs_font_31px_82.png b/signs_lib/textures/signs_lib_font_31px_82.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_82.png rename to signs_lib/textures/signs_lib_font_31px_82.png diff --git a/street_signs/textures/street_signs_font_31px_83.png b/signs_lib/textures/signs_lib_font_31px_83.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_83.png rename to signs_lib/textures/signs_lib_font_31px_83.png diff --git a/street_signs/textures/street_signs_font_31px_84.png b/signs_lib/textures/signs_lib_font_31px_84.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_84.png rename to signs_lib/textures/signs_lib_font_31px_84.png diff --git a/street_signs/textures/street_signs_font_31px_85.png b/signs_lib/textures/signs_lib_font_31px_85.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_85.png rename to signs_lib/textures/signs_lib_font_31px_85.png diff --git a/street_signs/textures/street_signs_font_31px_86.png b/signs_lib/textures/signs_lib_font_31px_86.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_86.png rename to signs_lib/textures/signs_lib_font_31px_86.png diff --git a/street_signs/textures/street_signs_font_31px_87.png b/signs_lib/textures/signs_lib_font_31px_87.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_87.png rename to signs_lib/textures/signs_lib_font_31px_87.png diff --git a/street_signs/textures/street_signs_font_31px_88.png b/signs_lib/textures/signs_lib_font_31px_88.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_88.png rename to signs_lib/textures/signs_lib_font_31px_88.png diff --git a/street_signs/textures/street_signs_font_31px_8a.png b/signs_lib/textures/signs_lib_font_31px_8a.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_8a.png rename to signs_lib/textures/signs_lib_font_31px_8a.png diff --git a/street_signs/textures/street_signs_font_31px_8b.png b/signs_lib/textures/signs_lib_font_31px_8b.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_8b.png rename to signs_lib/textures/signs_lib_font_31px_8b.png diff --git a/street_signs/textures/street_signs_font_31px_8c.png b/signs_lib/textures/signs_lib_font_31px_8c.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_8c.png rename to signs_lib/textures/signs_lib_font_31px_8c.png diff --git a/street_signs/textures/street_signs_font_31px_8d.png b/signs_lib/textures/signs_lib_font_31px_8d.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_8d.png rename to signs_lib/textures/signs_lib_font_31px_8d.png diff --git a/street_signs/textures/street_signs_font_31px_8e.png b/signs_lib/textures/signs_lib_font_31px_8e.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_8e.png rename to signs_lib/textures/signs_lib_font_31px_8e.png diff --git a/street_signs/textures/street_signs_font_31px_8f.png b/signs_lib/textures/signs_lib_font_31px_8f.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_8f.png rename to signs_lib/textures/signs_lib_font_31px_8f.png diff --git a/street_signs/textures/street_signs_font_31px_90.png b/signs_lib/textures/signs_lib_font_31px_90.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_90.png rename to signs_lib/textures/signs_lib_font_31px_90.png diff --git a/street_signs/textures/street_signs_font_31px_91.png b/signs_lib/textures/signs_lib_font_31px_91.png similarity index 100% rename from street_signs/textures/street_signs_font_31px_91.png rename to signs_lib/textures/signs_lib_font_31px_91.png diff --git a/street_signs/textures/street_signs_pole_mount.png b/signs_lib/textures/signs_lib_pole_mount.png similarity index 100% rename from street_signs/textures/street_signs_pole_mount.png rename to signs_lib/textures/signs_lib_pole_mount.png diff --git a/signs_lib/textures/bg_signs_lib.jpg b/signs_lib/textures/signs_lib_sign_bg.jpg similarity index 100% rename from signs_lib/textures/bg_signs_lib.jpg rename to signs_lib/textures/signs_lib_sign_bg.jpg diff --git a/signs_lib/textures/signs_lib_sign_wall_steel.png b/signs_lib/textures/signs_lib_sign_wall_steel.png new file mode 100644 index 00000000..eac6acd7 Binary files /dev/null and b/signs_lib/textures/signs_lib_sign_wall_steel.png differ diff --git a/signs_lib/textures/signs_lib_sign_wall_steel_edges.png b/signs_lib/textures/signs_lib_sign_wall_steel_edges.png new file mode 100644 index 00000000..791ec9f1 Binary files /dev/null and b/signs_lib/textures/signs_lib_sign_wall_steel_edges.png differ diff --git a/signs_lib/textures/signs_lib_sign_wall_steel_inv.png b/signs_lib/textures/signs_lib_sign_wall_steel_inv.png new file mode 100644 index 00000000..dfa25bf0 Binary files /dev/null and b/signs_lib/textures/signs_lib_sign_wall_steel_inv.png differ diff --git a/signs_lib/textures/signs_lib_sign_wall_wooden.png b/signs_lib/textures/signs_lib_sign_wall_wooden.png new file mode 100644 index 00000000..fd8fcbd9 Binary files /dev/null and b/signs_lib/textures/signs_lib_sign_wall_wooden.png differ diff --git a/signs_lib/textures/signs_lib_sign_wall_wooden_edges.png b/signs_lib/textures/signs_lib_sign_wall_wooden_edges.png new file mode 100644 index 00000000..9b0ac538 Binary files /dev/null and b/signs_lib/textures/signs_lib_sign_wall_wooden_edges.png differ diff --git a/signs_lib/textures/signs_lib_sign_wall_wooden_inv.png b/signs_lib/textures/signs_lib_sign_wall_wooden_inv.png new file mode 100644 index 00000000..3b1a078e Binary files /dev/null and b/signs_lib/textures/signs_lib_sign_wall_wooden_inv.png differ diff --git a/signs_lib/textures/signs_locked_inv.png b/signs_lib/textures/signs_locked_inv.png deleted file mode 100644 index 3c0554ab..00000000 Binary files a/signs_lib/textures/signs_locked_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_metal_back.png b/signs_lib/textures/signs_metal_back.png deleted file mode 100644 index 48420b2f..00000000 Binary files a/signs_lib/textures/signs_metal_back.png and /dev/null differ diff --git a/signs_lib/textures/signs_metal_sides.png b/signs_lib/textures/signs_metal_sides.png deleted file mode 100644 index b7b4526c..00000000 Binary files a/signs_lib/textures/signs_metal_sides.png and /dev/null differ diff --git a/signs_lib/textures/signs_metal_tb.png b/signs_lib/textures/signs_metal_tb.png deleted file mode 100644 index 9a264f0b..00000000 Binary files a/signs_lib/textures/signs_metal_tb.png and /dev/null differ diff --git a/signs_lib/textures/signs_orange_front.png b/signs_lib/textures/signs_orange_front.png deleted file mode 100644 index 6e814434..00000000 Binary files a/signs_lib/textures/signs_orange_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_post_back.png b/signs_lib/textures/signs_post_back.png deleted file mode 100644 index 829b8441..00000000 Binary files a/signs_lib/textures/signs_post_back.png and /dev/null differ diff --git a/signs_lib/textures/signs_post_bottom.png b/signs_lib/textures/signs_post_bottom.png deleted file mode 100644 index bea83e38..00000000 Binary files a/signs_lib/textures/signs_post_bottom.png and /dev/null differ diff --git a/signs_lib/textures/signs_post_front.png b/signs_lib/textures/signs_post_front.png deleted file mode 100644 index 02a0e593..00000000 Binary files a/signs_lib/textures/signs_post_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_post_side.png b/signs_lib/textures/signs_post_side.png deleted file mode 100644 index 95d7a69a..00000000 Binary files a/signs_lib/textures/signs_post_side.png and /dev/null differ diff --git a/signs_lib/textures/signs_post_top.png b/signs_lib/textures/signs_post_top.png deleted file mode 100644 index 6b251f63..00000000 Binary files a/signs_lib/textures/signs_post_top.png and /dev/null differ diff --git a/signs_lib/textures/signs_red_front.png b/signs_lib/textures/signs_red_front.png deleted file mode 100644 index 79862039..00000000 Binary files a/signs_lib/textures/signs_red_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_red_inv.png b/signs_lib/textures/signs_red_inv.png deleted file mode 100644 index af4597db..00000000 Binary files a/signs_lib/textures/signs_red_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_side.png b/signs_lib/textures/signs_side.png deleted file mode 100644 index ab6db9ea..00000000 Binary files a/signs_lib/textures/signs_side.png and /dev/null differ diff --git a/signs_lib/textures/signs_top.png b/signs_lib/textures/signs_top.png deleted file mode 100644 index aa86aa8a..00000000 Binary files a/signs_lib/textures/signs_top.png and /dev/null differ diff --git a/signs_lib/textures/signs_wall_sign.png b/signs_lib/textures/signs_wall_sign.png deleted file mode 100644 index 2f1c168e..00000000 Binary files a/signs_lib/textures/signs_wall_sign.png and /dev/null differ diff --git a/signs_lib/textures/signs_wall_sign_locked.png b/signs_lib/textures/signs_wall_sign_locked.png deleted file mode 100644 index 70611674..00000000 Binary files a/signs_lib/textures/signs_wall_sign_locked.png and /dev/null differ diff --git a/signs_lib/textures/signs_wall_sign_metal.png b/signs_lib/textures/signs_wall_sign_metal.png deleted file mode 100644 index 7eff1a68..00000000 Binary files a/signs_lib/textures/signs_wall_sign_metal.png and /dev/null differ diff --git a/signs_lib/textures/signs_white_black_front.png b/signs_lib/textures/signs_white_black_front.png deleted file mode 100644 index f4163f19..00000000 Binary files a/signs_lib/textures/signs_white_black_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_white_black_inv.png b/signs_lib/textures/signs_white_black_inv.png deleted file mode 100644 index 42bb0142..00000000 Binary files a/signs_lib/textures/signs_white_black_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_white_red_front.png b/signs_lib/textures/signs_white_red_front.png deleted file mode 100644 index 48216c9b..00000000 Binary files a/signs_lib/textures/signs_white_red_front.png and /dev/null differ diff --git a/signs_lib/textures/signs_white_red_inv.png b/signs_lib/textures/signs_white_red_inv.png deleted file mode 100644 index 52ac3c87..00000000 Binary files a/signs_lib/textures/signs_white_red_inv.png and /dev/null differ diff --git a/signs_lib/textures/signs_yellow_front.png b/signs_lib/textures/signs_yellow_front.png deleted file mode 100644 index b05b9a47..00000000 Binary files a/signs_lib/textures/signs_yellow_front.png and /dev/null differ diff --git a/signs_lib/textures/slc_0.png b/signs_lib/textures/slc_0.png deleted file mode 100644 index 17c66310..00000000 Binary files a/signs_lib/textures/slc_0.png and /dev/null differ diff --git a/signs_lib/textures/slc_1.png b/signs_lib/textures/slc_1.png deleted file mode 100644 index 3cbbbe6c..00000000 Binary files a/signs_lib/textures/slc_1.png and /dev/null differ diff --git a/signs_lib/textures/slc_2.png b/signs_lib/textures/slc_2.png deleted file mode 100644 index f86ae90a..00000000 Binary files a/signs_lib/textures/slc_2.png and /dev/null differ diff --git a/signs_lib/textures/slc_3.png b/signs_lib/textures/slc_3.png deleted file mode 100644 index 19389117..00000000 Binary files a/signs_lib/textures/slc_3.png and /dev/null differ diff --git a/signs_lib/textures/slc_4.png b/signs_lib/textures/slc_4.png deleted file mode 100644 index cdcb3026..00000000 Binary files a/signs_lib/textures/slc_4.png and /dev/null differ diff --git a/signs_lib/textures/slc_5.png b/signs_lib/textures/slc_5.png deleted file mode 100644 index 57ff7b59..00000000 Binary files a/signs_lib/textures/slc_5.png and /dev/null differ diff --git a/signs_lib/textures/slc_6.png b/signs_lib/textures/slc_6.png deleted file mode 100644 index de15f526..00000000 Binary files a/signs_lib/textures/slc_6.png and /dev/null differ diff --git a/signs_lib/textures/slc_7.png b/signs_lib/textures/slc_7.png deleted file mode 100644 index a38eb425..00000000 Binary files a/signs_lib/textures/slc_7.png and /dev/null differ diff --git a/signs_lib/textures/slc_8.png b/signs_lib/textures/slc_8.png deleted file mode 100644 index b0e59412..00000000 Binary files a/signs_lib/textures/slc_8.png and /dev/null differ diff --git a/signs_lib/textures/slc_9.png b/signs_lib/textures/slc_9.png deleted file mode 100644 index d2a0974c..00000000 Binary files a/signs_lib/textures/slc_9.png and /dev/null differ diff --git a/signs_lib/textures/slc_A.png b/signs_lib/textures/slc_A.png deleted file mode 100644 index bed719c3..00000000 Binary files a/signs_lib/textures/slc_A.png and /dev/null differ diff --git a/signs_lib/textures/slc_B.png b/signs_lib/textures/slc_B.png deleted file mode 100644 index f1f9d263..00000000 Binary files a/signs_lib/textures/slc_B.png and /dev/null differ diff --git a/signs_lib/textures/slc_C.png b/signs_lib/textures/slc_C.png deleted file mode 100644 index 1822a5d6..00000000 Binary files a/signs_lib/textures/slc_C.png and /dev/null differ diff --git a/signs_lib/textures/slc_D.png b/signs_lib/textures/slc_D.png deleted file mode 100644 index a9f06c4b..00000000 Binary files a/signs_lib/textures/slc_D.png and /dev/null differ diff --git a/signs_lib/textures/slc_E.png b/signs_lib/textures/slc_E.png deleted file mode 100644 index d73776b1..00000000 Binary files a/signs_lib/textures/slc_E.png and /dev/null differ diff --git a/signs_lib/textures/slc_F.png b/signs_lib/textures/slc_F.png deleted file mode 100644 index e59813b9..00000000 Binary files a/signs_lib/textures/slc_F.png and /dev/null differ diff --git a/signs_lib/textures/slc_n.png b/signs_lib/textures/slc_n.png deleted file mode 100644 index 8f59c9bf..00000000 Binary files a/signs_lib/textures/slc_n.png and /dev/null differ diff --git a/solidcolor/init.lua b/solidcolor/init.lua index 5fa78295..fa9e5f76 100644 --- a/solidcolor/init.lua +++ b/solidcolor/init.lua @@ -7,6 +7,7 @@ minetest.register_node("solidcolor:block", { paramtype2 = "color", palette = "unifieddyes_palette_extended.png", on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_craft( { diff --git a/stained_glass/init.lua b/stained_glass/init.lua index c71b6511..2727cf8a 100644 --- a/stained_glass/init.lua +++ b/stained_glass/init.lua @@ -59,6 +59,7 @@ minetest.register_node("stained_glass:stained_glass", { groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1, ud_param2_colorable = 1}, sounds = default.node_sound_glass_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.override_item("moreblocks:super_glow_glass", { @@ -84,6 +85,7 @@ minetest.register_node("stained_glass:stained_trap_glass", { groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, not_in_creative_inventory=1, ud_param2_colorable = 1}, sounds = default.node_sound_glass_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.override_item("moreblocks:trap_super_glow_glass", { diff --git a/steel/init.lua b/steel/init.lua index 80e93136..27389cc9 100644 --- a/steel/init.lua +++ b/steel/init.lua @@ -373,6 +373,7 @@ if minetest.get_modpath("unifieddyes") then groups = {cracky=1, level=2, ud_param2_colorable=1, not_in_creative_inventory=1}, on_construct = unifieddyes.on_construct, sounds = default.node_sound_metal_defaults(), + on_dig = unifieddyes.on_dig, }) minetest.override_item("default:steelblock", { @@ -380,7 +381,7 @@ if minetest.get_modpath("unifieddyes") then airbrush_replacement_node = "steel:steel_block", groups = {cracky=1, level=2, ud_param2_colorable=1}, }) - + unifieddyes.register_color_craft({ output = "steel:steel_block", palette = "extended", diff --git a/street_signs/depends.txt b/street_signs/depends.txt index 8920c30d..28fff5bd 100644 --- a/street_signs/depends.txt +++ b/street_signs/depends.txt @@ -1,5 +1,5 @@ default +signs_lib intllib? screwdriver? -signs_lib? infrastructure? diff --git a/street_signs/encoding.lua b/street_signs/encoding.lua deleted file mode 100644 index 16e35feb..00000000 --- a/street_signs/encoding.lua +++ /dev/null @@ -1,265 +0,0 @@ --- encoding borrowed from signs_lib mod of https://github.com/lord-server/lord - -local ansi_decode = { - [128] = "\208\130", - [129] = "\208\131", - [130] = "\226\128\154", - [131] = "\209\147", - [132] = "\226\128\158", - [133] = "\226\128\166", - [134] = "\226\128\160", - [135] = "\226\128\161", - [136] = "\226\130\172", - [137] = "\226\128\176", - [138] = "\208\137", - [139] = "\226\128\185", - [140] = "\208\138", - [141] = "\208\140", - [142] = "\208\139", - [143] = "\208\143", - [144] = "\209\146", - [145] = "\226\128\152", - [146] = "\226\128\153", - [147] = "\226\128\156", - [148] = "\226\128\157", - [149] = "\226\128\162", - [150] = "\226\128\147", - [151] = "\226\128\148", - [152] = "\194\152", - [153] = "\226\132\162", - [154] = "\209\153", - [155] = "\226\128\186", - [156] = "\209\154", - [157] = "\209\156", - [158] = "\209\155", - [159] = "\209\159", - [160] = "\194\160", - [161] = "\209\142", - [162] = "\209\158", - [163] = "\208\136", - [164] = "\194\164", - [165] = "\210\144", - [166] = "\194\166", - [167] = "\194\167", - [168] = "\208\129", - [169] = "\194\169", - [170] = "\208\132", - [171] = "\194\171", - [172] = "\194\172", - [173] = "\194\173", - [174] = "\194\174", - [175] = "\208\135", - [176] = "\194\176", - [177] = "\194\177", - [178] = "\208\134", - [179] = "\209\150", - [180] = "\210\145", - [181] = "\194\181", - [182] = "\194\182", - [183] = "\194\183", - [184] = "\209\145", - [185] = "\226\132\150", - [186] = "\209\148", - [187] = "\194\187", - [188] = "\209\152", - [189] = "\208\133", - [190] = "\209\149", - [191] = "\209\151" -} -local utf8_decode = { - [128] = { - [147] = "\150", - [148] = "\151", - [152] = "\145", - [153] = "\146", - [154] = "\130", - [156] = "\147", - [157] = "\148", - [158] = "\132", - [160] = "\134", - [161] = "\135", - [162] = "\149", - [166] = "\133", - [176] = "\137", - [185] = "\139", - [186] = "\155" - }, - [130] = {[172] = "\136"}, - [132] = {[150] = "\185", [162] = "\153"}, - [194] = { - [152] = "\152", - [160] = "\160", - [164] = "\164", - [166] = "\166", - [167] = "\167", - [169] = "\169", - [171] = "\171", - [172] = "\172", - [173] = "\173", - [174] = "\174", - [176] = "\176", - [177] = "\177", - [181] = "\181", - [182] = "\182", - [183] = "\183", - [187] = "\187" - }, - [208] = { - [129] = "\168", - [130] = "\128", - [131] = "\129", - [132] = "\170", - [133] = "\189", - [134] = "\178", - [135] = "\175", - [136] = "\163", - [137] = "\138", - [138] = "\140", - [139] = "\142", - [140] = "\141", - [143] = "\143", - [144] = "\192", - [145] = "\193", - [146] = "\194", - [147] = "\195", - [148] = "\196", - [149] = "\197", - [150] = "\198", - [151] = "\199", - [152] = "\200", - [153] = "\201", - [154] = "\202", - [155] = "\203", - [156] = "\204", - [157] = "\205", - [158] = "\206", - [159] = "\207", - [160] = "\208", - [161] = "\209", - [162] = "\210", - [163] = "\211", - [164] = "\212", - [165] = "\213", - [166] = "\214", - [167] = "\215", - [168] = "\216", - [169] = "\217", - [170] = "\218", - [171] = "\219", - [172] = "\220", - [173] = "\221", - [174] = "\222", - [175] = "\223", - [176] = "\224", - [177] = "\225", - [178] = "\226", - [179] = "\227", - [180] = "\228", - [181] = "\229", - [182] = "\230", - [183] = "\231", - [184] = "\232", - [185] = "\233", - [186] = "\234", - [187] = "\235", - [188] = "\236", - [189] = "\237", - [190] = "\238", - [191] = "\239" - }, - [209] = { - [128] = "\240", - [129] = "\241", - [130] = "\242", - [131] = "\243", - [132] = "\244", - [133] = "\245", - [134] = "\246", - [135] = "\247", - [136] = "\248", - [137] = "\249", - [138] = "\250", - [139] = "\251", - [140] = "\252", - [141] = "\253", - [142] = "\254", - [143] = "\255", - [144] = "\161", - [145] = "\184", - [146] = "\144", - [147] = "\131", - [148] = "\186", - [149] = "\190", - [150] = "\179", - [151] = "\191", - [152] = "\188", - [153] = "\154", - [154] = "\156", - [155] = "\158", - [156] = "\157", - [158] = "\162", - [159] = "\159" - }, - [210] = {[144] = "\165", [145] = "\180"} -} - -local nmdc = { - [36] = "$", - [124] = "|" -} - -function AnsiToUtf8(s) - local r, b = "" - for i = 1, s and s:len() or 0 do - b = s:byte(i) - if b < 128 then - r = r .. string.char(b) - else - if b > 239 then - r = r .. "\209" .. string.char(b - 112) - elseif b > 191 then - r = r .. "\208" .. string.char(b - 48) - elseif ansi_decode[b] then - r = r .. ansi_decode[b] - else - r = r .. "_" - end - end - end - return r -end - -function Utf8ToAnsi(s) - local a, j, r, b = 0, 0, "" - for i = 1, s and s:len() or 0 do - b = s:byte(i) - if b < 128 then - if nmdc[b] then - r = r .. nmdc[b] - else - r = r .. string.char(b) - end - elseif a == 2 then - a, j = a - 1, b - elseif a == 1 then - --if j == nil or b == nil then return r end - --print(j) - --print(b) - --local ansi = utf8_decode[j] - --if ansi == nil then return r end - --if ansi[b] == nil then return r end - if utf8_decode[j] then - if utf8_decode[j][b] then - a, r = a - 1, r .. utf8_decode[j][b] - end - end - elseif b == 226 then - a = 2 - elseif b == 194 or b == 208 or b == 209 or b == 210 then - j, a = b, 1 - else - r = r .. "_" - end - end - return r -end diff --git a/street_signs/init.lua b/street_signs/init.lua index bf04e863..95eaa87b 100644 --- a/street_signs/init.lua +++ b/street_signs/init.lua @@ -12,14 +12,8 @@ screwdriver = screwdriver or {} -- Load support for intllib. local S, NS = dofile(street_signs.path .. "/intllib.lua") -street_signs.gettext = S - -dofile(street_signs.path .. "/encoding.lua") -- text encoding - street_signs.lbm_restore_nodes = {} -dofile(street_signs.path.."/api.lua") - street_signs.big_sign_sizes = { -- "size", lines, chars, hscale, vscale, xoffs, yoffs, box { "small", 3, 50, 1.3, 1.05, 7, 5, { -0.5, -0.5, -0.5, -0.4, 0.5, 1.5 } }, diff --git a/street_signs/signs_class_d.lua b/street_signs/signs_class_d.lua index 517cb3a5..729eacc8 100644 --- a/street_signs/signs_class_d.lua +++ b/street_signs/signs_class_d.lua @@ -1,6 +1,6 @@ -- Class D signs -local S = street_signs.gettext +local S = signs_lib.gettext local cbox local cbox = { @@ -26,11 +26,11 @@ minetest.register_node("street_signs:sign_basic", { tiles = { "street_signs_basic.png" }, groups = {choppy=2, dig_immediate=2}, default_color = "f", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, - on_rotate = street_signs.facedir_rotate, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = signs_lib.facedir_rotate, number_of_lines = 2, horiz_scaling = 0.8, vert_scaling = 1, @@ -41,7 +41,7 @@ minetest.register_node("street_signs:sign_basic", { chars_per_line = 40, entity_info = { mesh = "street_signs_basic_entity.obj", - yaw = street_signs.standard_yaw + yaw = signs_lib.standard_yaw } }) @@ -69,11 +69,11 @@ minetest.register_node("street_signs:sign_basic_top_only", { tiles = { "street_signs_basic.png" }, groups = {choppy=2, dig_immediate=2}, default_color = "f", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, - on_rotate = street_signs.facedir_rotate, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = signs_lib.facedir_rotate, number_of_lines = 2, horiz_scaling = 0.8, vert_scaling = 1, @@ -84,26 +84,26 @@ minetest.register_node("street_signs:sign_basic_top_only", { chars_per_line = 40, entity_info = { mesh = "street_signs_basic_top_only_entity.obj", - yaw = street_signs.standard_yaw + yaw = signs_lib.standard_yaw } }) -table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_basic") -table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_basic_top_only") +table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_basic") +table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_basic_top_only") for _, onpole in ipairs({"", "_onpole"}) do local nci = nil - local on_rotate = street_signs.wallmounted_rotate + local on_rotate = signs_lib.wallmounted_rotate local pole_mount_tex = nil if onpole == "_onpole" then nci = 1 on_rotate = nil - pole_mount_tex = "street_signs_pole_mount.png" + pole_mount_tex = "signs_lib_pole_mount.png" end - cbox = street_signs.make_selection_boxes(24, 24, onpole) + cbox = signs_lib.make_selection_boxes(24, 24, onpole) minetest.register_node("street_signs:sign_service_hospital"..onpole, { description = "D9-2: General service: hospital", @@ -122,7 +122,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_service_hospital_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_service_hospital" }) @@ -144,7 +144,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_service_handicapped_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_service_handicapped" }) @@ -166,7 +166,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_service_fuel_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_service_fuel" }) @@ -188,7 +188,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_service_food_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_service_food" }) @@ -210,7 +210,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_service_lodging_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_service_lodging" }) @@ -232,7 +232,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_service_ev_charging_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_service_ev_charging" }) diff --git a/street_signs/signs_class_m.lua b/street_signs/signs_class_m.lua index 19aba00a..b184d4f0 100644 --- a/street_signs/signs_class_m.lua +++ b/street_signs/signs_class_m.lua @@ -1,21 +1,21 @@ -- Class-M signs -local S = street_signs.gettext +local S = signs_lib.gettext local cbox for _, onpole in ipairs({"", "_onpole"}) do local nci = nil - local on_rotate = street_signs.wallmounted_rotate + local on_rotate = signs_lib.wallmounted_rotate local pole_mount_tex = nil if onpole == "_onpole" then nci = 1 on_rotate = nil - pole_mount_tex = "street_signs_pole_mount.png" + pole_mount_tex = "signs_lib_pole_mount.png" end - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_us_route"..onpole, { description = "M1-4: Generic \"US Route\" sign", @@ -34,11 +34,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_us_route_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 3.5, @@ -50,7 +50,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 3, entity_info = { mesh = "street_signs_generic_sign_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_us_route" }) @@ -72,11 +72,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_us_interstate_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "f", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 4.3, @@ -88,12 +88,12 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 3, entity_info = { mesh = "street_signs_interstate_shield_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_us_interstate" }) - cbox = street_signs.make_selection_boxes(48, 18, onpole) + cbox = signs_lib.make_selection_boxes(48, 18, onpole) minetest.register_node("street_signs:sign_detour_right_m4_10"..onpole, { description = "M4-10: Detour sign (to right)", @@ -112,7 +112,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_detour_right_m4_10_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_detour_right_m4_10" }) @@ -134,11 +134,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_detour_left_m4_10_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_detour_left_m4_10" }) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_us_route"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_us_interstate"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_us_route"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_us_interstate"..onpole) end diff --git a/street_signs/signs_class_om.lua b/street_signs/signs_class_om.lua index 851c6a74..254ccffa 100644 --- a/street_signs/signs_class_om.lua +++ b/street_signs/signs_class_om.lua @@ -1,11 +1,11 @@ -- Class-OM signs -local S = street_signs.gettext +local S = signs_lib.gettext local cbox for _, d in ipairs({"l", "c", "r"}) do - cbox = street_signs.make_selection_boxes(12, 36, nil) + cbox = signs_lib.make_selection_boxes(12, 36, nil) minetest.register_node("street_signs:sign_object_marker_type3_"..d, { description = "OM3-"..string.upper(d)..": Type 3 object marker", diff --git a/street_signs/signs_class_r.lua b/street_signs/signs_class_r.lua index d4e0bea3..13b59606 100644 --- a/street_signs/signs_class_r.lua +++ b/street_signs/signs_class_r.lua @@ -1,21 +1,21 @@ -- Class-R signs -local S = street_signs.gettext +local S = signs_lib.gettext local cbox for _, onpole in ipairs({"", "_onpole"}) do local nci = nil - local on_rotate = street_signs.wallmounted_rotate + local on_rotate = signs_lib.wallmounted_rotate local pole_mount_tex = nil if onpole == "_onpole" then nci = 1 on_rotate = nil - pole_mount_tex = "street_signs_pole_mount.png" + pole_mount_tex = "signs_lib_pole_mount.png" end - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_stop"..onpole, { description = "R1-1: Stop sign", @@ -34,12 +34,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_stop_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_stop" }) - cbox = street_signs.make_selection_boxes(36, 43.1, onpole, 0, -3.55, 0) + cbox = signs_lib.make_selection_boxes(36, 43.1, onpole, 0, -3.55, 0) minetest.register_node("street_signs:sign_stop_all_way"..onpole, { description = "R1-1 + R1-3P: Stop sign with \"all way\" plaque", @@ -59,12 +59,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_stop_all_way_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_stop_all_way" }) - cbox = street_signs.make_selection_boxes(48, 48, onpole) + cbox = signs_lib.make_selection_boxes(48, 48, onpole) minetest.register_node("street_signs:sign_yield"..onpole, { description = "R1-2: Yield sign", @@ -83,12 +83,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_yield_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_yield" }) - cbox = street_signs.make_selection_boxes(30, 36, onpole) + cbox = signs_lib.make_selection_boxes(30, 36, onpole) minetest.register_node("street_signs:sign_speed_limit"..onpole, { description = "R2-1: Generic speed limit sign", @@ -107,11 +107,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_speed_limit_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 2.65, @@ -123,12 +123,12 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 4, entity_info = { mesh = "street_signs_generic_sign_30x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_speed_limit" }) - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_no_right_turn"..onpole, { description = "R3-1: No right turn", @@ -147,7 +147,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_no_right_turn_inv.png", wield_image = "street_signs_no_right_turn_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_no_right_turn" }) @@ -169,7 +169,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_no_left_turn_inv.png", wield_image = "street_signs_no_left_turn_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_no_left_turn" }) @@ -191,7 +191,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_no_u_turn_inv.png", wield_image = "street_signs_no_u_turn_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_no_u_turn" }) @@ -213,12 +213,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_u_turn_here_inv.png", wield_image = "street_signs_u_turn_here_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_u_turn_here" }) - cbox = street_signs.make_selection_boxes(30, 36, onpole) + cbox = signs_lib.make_selection_boxes(30, 36, onpole) minetest.register_node("street_signs:sign_left_turn_only"..onpole, { description = "R3-5: Left turn only", @@ -237,7 +237,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_left_turn_only_inv.png", wield_image = "street_signs_left_turn_only_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_left_turn_only" }) @@ -259,7 +259,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_right_turn_only_inv.png", wield_image = "street_signs_right_turn_only_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_right_turn_only" }) @@ -281,7 +281,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_straight_through_only_inv.png", wield_image = "street_signs_straight_through_only_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_straight_through_only" }) @@ -303,7 +303,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_left_turn_or_straight_inv.png", wield_image = "street_signs_left_turn_or_straight_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_left_turn_or_straight" }) @@ -325,13 +325,13 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_right_turn_or_straight_inv.png", wield_image = "street_signs_right_turn_or_straight_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_right_turn_or_straight" }) - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_left_lane_must_turn_left"..onpole, { description = "R3-7: Left lane must turn left", @@ -350,7 +350,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_left_lane_must_turn_left_inv.png", wield_image = "street_signs_left_lane_must_turn_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_left_lane_must_turn_left" }) @@ -372,7 +372,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_right_lane_must_turn_right_inv.png", wield_image = "street_signs_right_lane_must_turn_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_right_lane_must_turn_right" }) @@ -394,12 +394,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_no_straight_through_inv.png", wield_image = "street_signs_no_straight_through_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_no_straight_through" }) - cbox = street_signs.make_selection_boxes(36, 48, onpole) + cbox = signs_lib.make_selection_boxes(36, 48, onpole) minetest.register_node("street_signs:sign_keep_right"..onpole, { description = "R4-7: Keep right sign", @@ -417,7 +417,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_keep_right_inv.png", wield_image = "street_signs_keep_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_keep_right" }) @@ -438,12 +438,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_keep_left_inv.png", wield_image = "street_signs_keep_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_keep_left" }) - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_do_not_enter"..onpole, { description = "R5-1: Do not enter sign", @@ -462,12 +462,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_do_not_enter_inv.png", wield_image = "street_signs_do_not_enter_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_do_not_enter" }) - cbox = street_signs.make_selection_boxes(42, 30, onpole) + cbox = signs_lib.make_selection_boxes(42, 30, onpole) minetest.register_node("street_signs:sign_wrong_way"..onpole, { description = "R5-1a: Wrong way sign", @@ -485,12 +485,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_wrong_way_inv.png", wield_image = "street_signs_wrong_way_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_wrong_way" }) - cbox = street_signs.make_selection_boxes(54, 18, onpole) + cbox = signs_lib.make_selection_boxes(54, 18, onpole) minetest.register_node("street_signs:sign_one_way_left"..onpole, { description = "R6-1: One way (left)", @@ -508,7 +508,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_one_way_left_inv.png", wield_image = "street_signs_one_way_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_one_way_left" }) @@ -529,12 +529,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_one_way_right_inv.png", wield_image = "street_signs_one_way_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_one_way_right" }) - cbox = street_signs.make_selection_boxes(30, 24, onpole) + cbox = signs_lib.make_selection_boxes(30, 24, onpole) minetest.register_node("street_signs:sign_divided_highway_with_cross_road"..onpole, { description = "R6-3: divided highway with cross road", @@ -552,12 +552,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_divided_highway_with_cross_road_inv.png", wield_image = "street_signs_divided_highway_with_cross_road_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_divided_highway_with_cross_road" }) - cbox = street_signs.make_selection_boxes(60, 24, onpole) + cbox = signs_lib.make_selection_boxes(60, 24, onpole) minetest.register_node("street_signs:sign_roundabout_directional"..onpole, { description = "R6-4b: Roundabout direction (4 chevrons)", @@ -575,7 +575,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_roundabout_directional_inv.png", wield_image = "street_signs_roundabout_directional.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_roundabout_directional" }) @@ -596,12 +596,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_roundabout_directional_left_inv.png", wield_image = "street_signs_roundabout_directional_left.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_roundabout_directional_left" }) - cbox = street_signs.make_selection_boxes(30, 30, onpole) + cbox = signs_lib.make_selection_boxes(30, 30, onpole) minetest.register_node("street_signs:sign_roundabout_counter_clockwise"..onpole, { description = "R6-5P: Roundabout plaque (to the left/counter-clockwise)", @@ -619,7 +619,7 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_roundabout_counter_clockwise_inv.png", wield_image = "street_signs_roundabout_counter_clockwise.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_roundabout_counter_clockwise" }) @@ -640,12 +640,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_roundabout_clockwise_inv.png", wield_image = "street_signs_roundabout_clockwise.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_roundabout_clockwise" }) - cbox = street_signs.make_selection_boxes(24, 30, onpole) + cbox = signs_lib.make_selection_boxes(24, 30, onpole) minetest.register_node("street_signs:sign_do_not_stop_on_tracks"..onpole, { description = "R8-8: Do not stop on tracks", @@ -664,12 +664,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_do_not_stop_on_tracks.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_do_not_stop_on_tracks" }) - cbox = street_signs.make_selection_boxes(9, 15, onpole, 0, 0, -1.25) + cbox = signs_lib.make_selection_boxes(9, 15, onpole, 0, 0, -1.25) minetest.register_node("street_signs:sign_ped_push_button_to_cross_r10_3a"..onpole, { description = "R10-3a: Pedestrians, push button to cross (pointing left)", @@ -688,7 +688,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3a_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_ped_push_button_to_cross_r10_3a" }) @@ -710,7 +710,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3a_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_ped_push_button_to_cross_r10_3a_right" }) @@ -732,7 +732,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3a_both_ways_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_ped_push_button_to_cross_r10_3a_both_ways" }) @@ -754,7 +754,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3e_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_ped_push_button_to_cross_r10_3e" }) @@ -776,7 +776,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3e_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_ped_push_button_to_cross_r10_3e_left" }) @@ -798,11 +798,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3i_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 3, @@ -814,7 +814,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 25, entity_info = { mesh = "street_signs_generic_sign_9x15_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_ped_push_button_to_cross_r10_3i" }) @@ -836,11 +836,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_cross_r10_3i_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 3, @@ -852,12 +852,12 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 25, entity_info = { mesh = "street_signs_generic_sign_9x15_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_ped_push_button_to_cross_r10_3i_left" }) - cbox = street_signs.make_selection_boxes(30, 36, onpole) + cbox = signs_lib.make_selection_boxes(30, 36, onpole) minetest.register_node("street_signs:sign_left_on_green_arrow_only"..onpole, { description = "R10-5: Left on green arrow only sign", @@ -875,12 +875,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_left_on_green_arrow_only_inv.png", wield_image = "street_signs_left_on_green_arrow_only_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_left_on_green_arrow_only" }) - cbox = street_signs.make_selection_boxes(24, 36, onpole) + cbox = signs_lib.make_selection_boxes(24, 36, onpole) minetest.register_node("street_signs:sign_stop_here_on_red"..onpole, { description = "R10-6: Stop here on red sign", @@ -898,12 +898,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_stop_here_on_red_inv.png", wield_image = "street_signs_stop_here_on_red_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_stop_here_on_red" }) - cbox = street_signs.make_selection_boxes(36, 42, onpole) + cbox = signs_lib.make_selection_boxes(36, 42, onpole) minetest.register_node("street_signs:sign_use_lane_with_green_arrow"..onpole, { description = "R10-8: Use lane with green arrow", @@ -921,12 +921,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_use_lane_with_green_arrow_inv.png", wield_image = "street_signs_use_lane_with_green_arrow_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:use_lane_with_green_arrow" }) - cbox = street_signs.make_selection_boxes(36, 48, onpole) + cbox = signs_lib.make_selection_boxes(36, 48, onpole) minetest.register_node("street_signs:sign_no_turn_on_red_light"..onpole, { description = "R10-11: No turn on red light", @@ -944,12 +944,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_no_turn_on_red_light_inv.png", wield_image = "street_signs_no_turn_on_red_light_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:no_turn_on_red_light" }) - cbox = street_signs.make_selection_boxes(30, 36, onpole) + cbox = signs_lib.make_selection_boxes(30, 36, onpole) minetest.register_node("street_signs:sign_left_turn_yield_on_green_light"..onpole, { description = "R10-12: Left turn yield on green light", @@ -967,12 +967,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_left_turn_yield_on_green_light_inv.png", wield_image = "street_signs_left_turn_yield_on_green_light_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_left_turn_yield_on_green_light" }) - cbox = street_signs.make_selection_boxes(24, 30, onpole) + cbox = signs_lib.make_selection_boxes(24, 30, onpole) minetest.register_node("street_signs:sign_crosswalk_stop_on_red_light"..onpole, { description = "R10-23: Crosswalk: stop on red light", @@ -990,12 +990,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_crosswalk_stop_on_red_light_inv.png", wield_image = "street_signs_crosswalk_stop_on_red_light_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_crosswalk_stop_on_red_light" }) - cbox = street_signs.make_selection_boxes(9, 12, onpole, 0, 0, -1.25) + cbox = signs_lib.make_selection_boxes(9, 12, onpole, 0, 0, -1.25) minetest.register_node("street_signs:sign_ped_push_button_to_turn_on_warning_lights"..onpole, { description = "R10-25: Pedestrians, push button to turn on warning lights", @@ -1014,12 +1014,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_ped_push_button_to_turn_on_warning_lights_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_ped_push_button_to_turn_on_warning_lights" }) - cbox = street_signs.make_selection_boxes(41, 41, onpole) + cbox = signs_lib.make_selection_boxes(41, 41, onpole) minetest.register_node("street_signs:sign_rr_grade_crossbuck"..onpole, { description = "R15-1: Railroad grade crossing (crossbuck)", @@ -1037,12 +1037,12 @@ for _, onpole in ipairs({"", "_onpole"}) do inventory_image = "street_signs_rr_grade_crossbuck_inv.png", wield_image = "street_signs_rr_grade_crossbuck_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_rr_grade_crossbuck" }) - cbox = street_signs.make_selection_boxes(24, 12, onpole, 0, 12, 0) + cbox = signs_lib.make_selection_boxes(24, 12, onpole, 0, 12, 0) minetest.register_node("street_signs:sign_rr_exempt_r15_3p"..onpole, { description = "R15-3P: Railroad \"EXEMPT\" sign (white)", @@ -1061,15 +1061,15 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_rr_exempt_r15_3p_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_rr_exempt_r15_3p" }) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_ped_push_button_to_cross_r10_3i"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_ped_push_button_to_cross_r10_3i_left"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_speed_limit"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_ped_push_button_to_cross_r10_3i"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_ped_push_button_to_cross_r10_3i_left"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_speed_limit"..onpole) end cbox = { diff --git a/street_signs/signs_class_w.lua b/street_signs/signs_class_w.lua index 83022cb7..4288b016 100644 --- a/street_signs/signs_class_w.lua +++ b/street_signs/signs_class_w.lua @@ -1,21 +1,21 @@ -- Class-W signs -local S = street_signs.gettext +local S = signs_lib.gettext local cbox for _, onpole in ipairs({"", "_onpole"}) do local nci = nil - local on_rotate = street_signs.wallmounted_rotate + local on_rotate = signs_lib.wallmounted_rotate local pole_mount_tex = nil if onpole == "_onpole" then nci = 1 on_rotate = nil - pole_mount_tex = "street_signs_pole_mount.png" + pole_mount_tex = "signs_lib_pole_mount.png" end - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_road_turns_sharp_left"..onpole, { description = "W1-1: Road turns, sharp left ahead", @@ -34,7 +34,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_sharp_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_sharp_left" }) @@ -56,7 +56,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_sharp_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_sharp_right" }) @@ -78,7 +78,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_left" }) @@ -100,7 +100,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_right" }) @@ -122,7 +122,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_dog_leg_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_dog_leg_left" }) @@ -144,7 +144,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_dog_leg_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_dog_leg_right" }) @@ -166,7 +166,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_dog_leg_curve_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_dog_leg_curve_left" }) @@ -188,7 +188,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_dog_leg_curve_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_dog_leg_curve_right" }) @@ -210,7 +210,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_winding_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_winding" }) @@ -232,7 +232,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_hairpin_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_hairpin_left" }) @@ -254,7 +254,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_hairpin_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_hairpin_right" }) @@ -276,7 +276,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_270_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_270_left" }) @@ -298,12 +298,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_road_turns_270_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_road_turns_270_right" }) - cbox = street_signs.make_selection_boxes(48, 24, onpole) + cbox = signs_lib.make_selection_boxes(48, 24, onpole) minetest.register_node("street_signs:sign_large_arrow_left"..onpole, { description = "W1-6: Large arrow pointing left", @@ -322,7 +322,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_large_arrow_left_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_large_arrow_left" }) @@ -344,7 +344,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_large_arrow_right_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_large_arrow_right" }) @@ -366,12 +366,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_two_direction_large_arrow_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_two_direction_large_arrow" }) - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_cross_road_ahead"..onpole, { description = "W2-1: Cross-road ahead", @@ -390,7 +390,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_cross_road_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_cross_road_ahead" }) @@ -412,7 +412,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_side_road_right_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_side_road_right_ahead" }) @@ -434,7 +434,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_side_road_left_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_side_road_left_ahead" }) @@ -456,7 +456,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_t_junction_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_t_junction_ahead" }) @@ -478,7 +478,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_circular_intersection_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_circular_intersection_ahead" }) @@ -500,7 +500,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_offset_side_road_left_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_offset_side_road_left_ahead" }) @@ -522,7 +522,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_offset_side_road_right_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_offset_side_road_right_ahead" }) @@ -544,7 +544,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_stop_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_stop_ahead" }) @@ -566,7 +566,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_yield_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_yield_ahead" }) @@ -588,7 +588,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_signal_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_signal_ahead" }) @@ -610,7 +610,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_merging_traffic_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_merging_traffic" }) @@ -632,7 +632,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_left_lane_ends_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_left_lane_ends" }) @@ -654,7 +654,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_right_lane_ends_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_right_lane_ends" }) @@ -676,7 +676,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_divided_highway_begins_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_divided_highway_begins" }) @@ -698,7 +698,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_divided_highway_ends_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_divided_highway_ends" }) @@ -720,7 +720,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_two_way_traffic_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_two_way_traffic" }) @@ -742,11 +742,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_hill_with_grade_ahead_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 1.9, @@ -758,12 +758,12 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 15, entity_info = { mesh = "street_signs_warning_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_hill_with_grade_ahead" }) - cbox = street_signs.make_selection_boxes(24, 18, onpole, 0, 9.75, 0) + cbox = signs_lib.make_selection_boxes(24, 18, onpole, 0, 9.75, 0) minetest.register_node("street_signs:sign_distance_2_lines"..onpole, { description = "W7-3aP: Blank distance sign (like \"Next X Miles\", 2 lines, yellow)", @@ -782,11 +782,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_distance_2_lines_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 2, horiz_scaling = 1.8, @@ -798,7 +798,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 20, entity_info = { mesh = "street_signs_generic_sign_24x18_top_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_distance_2_lines" }) @@ -820,11 +820,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_distance_2_lines_orange_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 2, horiz_scaling = 1.8, @@ -836,13 +836,13 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 20, entity_info = { mesh = "street_signs_generic_sign_24x18_top_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_distance_2_lines_orange" }) - cbox = street_signs.make_selection_boxes(30, 30, onpole) + cbox = signs_lib.make_selection_boxes(30, 30, onpole) minetest.register_node("street_signs:sign_rr_grade_crossing_advance"..onpole, { description = "W10-1: Railroad grade crossing advance warning", @@ -861,12 +861,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_rr_grade_crossing_advance_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_rr_grade_crossing_advance" }) - cbox = street_signs.make_selection_boxes(24, 12, onpole, 0, 12, 0) + cbox = signs_lib.make_selection_boxes(24, 12, onpole, 0, 12, 0) minetest.register_node("street_signs:sign_rr_exempt_w10_1ap"..onpole, { description = "W10-1aP: Railroad \"EXEMPT\" sign (yellow)", @@ -885,12 +885,12 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_rr_exempt_w10_1ap_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_rr_exempt_w10_1ap" }) - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_pedestrian_crossing"..onpole, { description = "W11-2: Pedestrian crossing sign", @@ -909,7 +909,7 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_pedestrian_crossing_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - after_place_node = street_signs.after_place_node, + after_place_node = signs_lib.after_place_node, on_rotate = on_rotate, drop = "street_signs:sign_pedestrian_crossing" }) @@ -931,11 +931,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_low_clearance_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 1.3, @@ -947,12 +947,12 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 15, entity_info = { mesh = "street_signs_warning_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_low_clearance" }) - cbox = street_signs.make_selection_boxes(18, 18, onpole, 0, 10, 0) + cbox = signs_lib.make_selection_boxes(18, 18, onpole, 0, 10, 0) minetest.register_node("street_signs:sign_advisory_speed_mph"..onpole, { description = "W13-1P: Advisory speed (MPH)", @@ -971,11 +971,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_advisory_speed_mph_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 1.25, @@ -987,7 +987,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 8, entity_info = { mesh = "street_signs_generic_sign_18x18_top_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_advisory_speed_mph" }) @@ -1009,11 +1009,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_advisory_speed_kmh_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 1.25, @@ -1025,7 +1025,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 8, entity_info = { mesh = "street_signs_generic_sign_18x18_top_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_advisory_speed_kmh" }) @@ -1047,11 +1047,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_advisory_speed_ms_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 1, horiz_scaling = 1.25, @@ -1063,15 +1063,15 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 8, entity_info = { mesh = "street_signs_generic_sign_18x18_top_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_advisory_speed_ms" }) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_hill_with_grade_ahead"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_low_clearance"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_distance_2_lines"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_advisory_speed_mph"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_advisory_speed_kmh"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_advisory_speed_ms"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_hill_with_grade_ahead"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_low_clearance"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_distance_2_lines"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_advisory_speed_mph"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_advisory_speed_kmh"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_advisory_speed_ms"..onpole) end diff --git a/street_signs/signs_misc_generic.lua b/street_signs/signs_misc_generic.lua index 9e7edc6a..a33ec250 100644 --- a/street_signs/signs_misc_generic.lua +++ b/street_signs/signs_misc_generic.lua @@ -1,21 +1,21 @@ -- Misc./Generic signs -local S = street_signs.gettext +local S = signs_lib.gettext local cbox for _, onpole in ipairs({"", "_onpole"}) do local nci = nil - local on_rotate = street_signs.wallmounted_rotate + local on_rotate = signs_lib.wallmounted_rotate local pole_mount_tex = nil if onpole == "_onpole" then nci = 1 on_rotate = nil - pole_mount_tex = "street_signs_pole_mount.png" + pole_mount_tex = "signs_lib_pole_mount.png" end - cbox = street_signs.make_selection_boxes(36, 36, onpole) + cbox = signs_lib.make_selection_boxes(36, 36, onpole) minetest.register_node("street_signs:sign_warning_3_line"..onpole, { description = "W3-4: Generic US diamond \"warning\" sign (3-line, yellow)", @@ -34,11 +34,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_warning_3_line_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 3, horiz_scaling = 1.75, @@ -50,7 +50,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 15, entity_info = { mesh = "street_signs_warning_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_warning_3_line" }) @@ -72,11 +72,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_warning_4_line_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 4, horiz_scaling = 1.75, @@ -88,7 +88,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 15, entity_info = { mesh = "street_signs_warning_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_warning_4_line" }) @@ -110,11 +110,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_warning_orange_3_line_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 3, horiz_scaling = 1.75, @@ -126,7 +126,7 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 15, entity_info = { mesh = "street_signs_warning_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_warning_orange_3_line" }) @@ -148,11 +148,11 @@ for _, onpole in ipairs({"", "_onpole"}) do wield_image = "street_signs_warning_orange_4_line_inv.png", groups = {choppy=2, dig_immediate=2, not_in_creative_inventory = nci}, default_color = "0", - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - after_place_node = street_signs.after_place_node, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + after_place_node = signs_lib.after_place_node, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, on_rotate = on_rotate, number_of_lines = 4, horiz_scaling = 1.75, @@ -164,15 +164,15 @@ for _, onpole in ipairs({"", "_onpole"}) do chars_per_line = 15, entity_info = { mesh = "street_signs_warning_36x36_entity"..onpole..".obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw }, drop = "street_signs:sign_warning_orange_4_line" }) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_warning_3_line"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_warning_4_line"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_warning_orange_3_line"..onpole) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_warning_orange_4_line"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_warning_3_line"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_warning_4_line"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_warning_orange_3_line"..onpole) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_warning_orange_4_line"..onpole) end for _, s in ipairs(street_signs.big_sign_sizes) do @@ -211,11 +211,11 @@ for _, s in ipairs(street_signs.big_sign_sizes) do }, default_color = defc, groups = {choppy=2, dig_immediate=2}, - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, - on_rotate = street_signs.wallmounted_rotate, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = signs_lib.wallmounted_rotate, number_of_lines = nlines, chars_per_line = nchars, horiz_scaling = hscale, @@ -226,7 +226,7 @@ for _, s in ipairs(street_signs.big_sign_sizes) do y_offset = yoffs, entity_info = { mesh = "street_signs_generic_highway_"..size.."_entity.obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw } }) @@ -248,11 +248,11 @@ for _, s in ipairs(street_signs.big_sign_sizes) do }, default_color = defc, groups = {choppy=2, dig_immediate=2}, - on_construct = street_signs.construct_sign, - on_destruct = street_signs.destruct_sign, - on_receive_fields = street_signs.receive_fields, - on_punch = street_signs.update_sign, - on_rotate = street_signs.wallmounted_rotate, + on_construct = signs_lib.construct_sign, + on_destruct = signs_lib.destruct_sign, + on_receive_fields = signs_lib.receive_fields, + on_punch = signs_lib.update_sign, + on_rotate = signs_lib.wallmounted_rotate, number_of_lines = nlines, chars_per_line = math.ceil(nchars/1.4), horiz_scaling = hscale/1.4, @@ -263,12 +263,12 @@ for _, s in ipairs(street_signs.big_sign_sizes) do y_offset = yoffs, entity_info = { mesh = "street_signs_generic_highway_"..size.."_entity.obj", - yaw = street_signs.wallmounted_yaw + yaw = signs_lib.wallmounted_yaw } }) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_highway_"..size.."_"..color) - table.insert(street_signs.lbm_restore_nodes, "street_signs:sign_highway_widefont_"..size.."_"..color) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_highway_"..size.."_"..color) + table.insert(signs_lib.lbm_restore_nodes, "street_signs:sign_highway_widefont_"..size.."_"..color) end end diff --git a/street_signs/textures/street_signs_font_15px_00.png b/street_signs/textures/street_signs_font_15px_00.png deleted file mode 100644 index ec762d55..00000000 Binary files a/street_signs/textures/street_signs_font_15px_00.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_20.png b/street_signs/textures/street_signs_font_15px_20.png deleted file mode 100644 index 465982d6..00000000 Binary files a/street_signs/textures/street_signs_font_15px_20.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_21.png b/street_signs/textures/street_signs_font_15px_21.png deleted file mode 100644 index 01929d48..00000000 Binary files a/street_signs/textures/street_signs_font_15px_21.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_22.png b/street_signs/textures/street_signs_font_15px_22.png deleted file mode 100644 index 2acde25d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_22.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_23.png b/street_signs/textures/street_signs_font_15px_23.png deleted file mode 100644 index ace14376..00000000 Binary files a/street_signs/textures/street_signs_font_15px_23.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_24.png b/street_signs/textures/street_signs_font_15px_24.png deleted file mode 100644 index 909b015e..00000000 Binary files a/street_signs/textures/street_signs_font_15px_24.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_25.png b/street_signs/textures/street_signs_font_15px_25.png deleted file mode 100644 index 30a78295..00000000 Binary files a/street_signs/textures/street_signs_font_15px_25.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_26.png b/street_signs/textures/street_signs_font_15px_26.png deleted file mode 100644 index d29936c7..00000000 Binary files a/street_signs/textures/street_signs_font_15px_26.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_27.png b/street_signs/textures/street_signs_font_15px_27.png deleted file mode 100644 index 9844e922..00000000 Binary files a/street_signs/textures/street_signs_font_15px_27.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_28.png b/street_signs/textures/street_signs_font_15px_28.png deleted file mode 100644 index 4810d75a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_28.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_29.png b/street_signs/textures/street_signs_font_15px_29.png deleted file mode 100644 index e5ff2b76..00000000 Binary files a/street_signs/textures/street_signs_font_15px_29.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_2a.png b/street_signs/textures/street_signs_font_15px_2a.png deleted file mode 100644 index 54088977..00000000 Binary files a/street_signs/textures/street_signs_font_15px_2a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_2b.png b/street_signs/textures/street_signs_font_15px_2b.png deleted file mode 100644 index 9ad7d9ef..00000000 Binary files a/street_signs/textures/street_signs_font_15px_2b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_2c.png b/street_signs/textures/street_signs_font_15px_2c.png deleted file mode 100644 index cb3eae05..00000000 Binary files a/street_signs/textures/street_signs_font_15px_2c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_2d.png b/street_signs/textures/street_signs_font_15px_2d.png deleted file mode 100644 index c252f37d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_2d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_2e.png b/street_signs/textures/street_signs_font_15px_2e.png deleted file mode 100644 index d3aab5be..00000000 Binary files a/street_signs/textures/street_signs_font_15px_2e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_2f.png b/street_signs/textures/street_signs_font_15px_2f.png deleted file mode 100644 index 48c25f2e..00000000 Binary files a/street_signs/textures/street_signs_font_15px_2f.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_30.png b/street_signs/textures/street_signs_font_15px_30.png deleted file mode 100644 index 56ec3e79..00000000 Binary files a/street_signs/textures/street_signs_font_15px_30.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_31.png b/street_signs/textures/street_signs_font_15px_31.png deleted file mode 100644 index c526e867..00000000 Binary files a/street_signs/textures/street_signs_font_15px_31.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_32.png b/street_signs/textures/street_signs_font_15px_32.png deleted file mode 100644 index 339d9332..00000000 Binary files a/street_signs/textures/street_signs_font_15px_32.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_33.png b/street_signs/textures/street_signs_font_15px_33.png deleted file mode 100644 index aba5466e..00000000 Binary files a/street_signs/textures/street_signs_font_15px_33.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_34.png b/street_signs/textures/street_signs_font_15px_34.png deleted file mode 100644 index 9e71d102..00000000 Binary files a/street_signs/textures/street_signs_font_15px_34.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_35.png b/street_signs/textures/street_signs_font_15px_35.png deleted file mode 100644 index c12370ff..00000000 Binary files a/street_signs/textures/street_signs_font_15px_35.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_36.png b/street_signs/textures/street_signs_font_15px_36.png deleted file mode 100644 index bebb32a8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_36.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_37.png b/street_signs/textures/street_signs_font_15px_37.png deleted file mode 100644 index 73d9bb98..00000000 Binary files a/street_signs/textures/street_signs_font_15px_37.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_38.png b/street_signs/textures/street_signs_font_15px_38.png deleted file mode 100644 index baf7f6f8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_38.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_39.png b/street_signs/textures/street_signs_font_15px_39.png deleted file mode 100644 index 95729472..00000000 Binary files a/street_signs/textures/street_signs_font_15px_39.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_3a.png b/street_signs/textures/street_signs_font_15px_3a.png deleted file mode 100644 index 23ba0cd0..00000000 Binary files a/street_signs/textures/street_signs_font_15px_3a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_3b.png b/street_signs/textures/street_signs_font_15px_3b.png deleted file mode 100644 index c4b467fa..00000000 Binary files a/street_signs/textures/street_signs_font_15px_3b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_3c.png b/street_signs/textures/street_signs_font_15px_3c.png deleted file mode 100644 index 566ba496..00000000 Binary files a/street_signs/textures/street_signs_font_15px_3c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_3d.png b/street_signs/textures/street_signs_font_15px_3d.png deleted file mode 100644 index 50e6c6f0..00000000 Binary files a/street_signs/textures/street_signs_font_15px_3d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_3e.png b/street_signs/textures/street_signs_font_15px_3e.png deleted file mode 100644 index 090f8ca3..00000000 Binary files a/street_signs/textures/street_signs_font_15px_3e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_3f.png b/street_signs/textures/street_signs_font_15px_3f.png deleted file mode 100644 index dce47276..00000000 Binary files a/street_signs/textures/street_signs_font_15px_3f.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_40.png b/street_signs/textures/street_signs_font_15px_40.png deleted file mode 100644 index 65533fdc..00000000 Binary files a/street_signs/textures/street_signs_font_15px_40.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_41.png b/street_signs/textures/street_signs_font_15px_41.png deleted file mode 100644 index e30c27ca..00000000 Binary files a/street_signs/textures/street_signs_font_15px_41.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_42.png b/street_signs/textures/street_signs_font_15px_42.png deleted file mode 100644 index 28d480b7..00000000 Binary files a/street_signs/textures/street_signs_font_15px_42.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_43.png b/street_signs/textures/street_signs_font_15px_43.png deleted file mode 100644 index db57d8dc..00000000 Binary files a/street_signs/textures/street_signs_font_15px_43.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_44.png b/street_signs/textures/street_signs_font_15px_44.png deleted file mode 100644 index cca9575b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_44.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_45.png b/street_signs/textures/street_signs_font_15px_45.png deleted file mode 100644 index 07e772b8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_45.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_46.png b/street_signs/textures/street_signs_font_15px_46.png deleted file mode 100644 index 24de187a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_46.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_47.png b/street_signs/textures/street_signs_font_15px_47.png deleted file mode 100644 index 0deef839..00000000 Binary files a/street_signs/textures/street_signs_font_15px_47.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_48.png b/street_signs/textures/street_signs_font_15px_48.png deleted file mode 100644 index f85b4aec..00000000 Binary files a/street_signs/textures/street_signs_font_15px_48.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_49.png b/street_signs/textures/street_signs_font_15px_49.png deleted file mode 100644 index 1f027283..00000000 Binary files a/street_signs/textures/street_signs_font_15px_49.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_4a.png b/street_signs/textures/street_signs_font_15px_4a.png deleted file mode 100644 index b2f7befc..00000000 Binary files a/street_signs/textures/street_signs_font_15px_4a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_4b.png b/street_signs/textures/street_signs_font_15px_4b.png deleted file mode 100644 index e8d52d60..00000000 Binary files a/street_signs/textures/street_signs_font_15px_4b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_4c.png b/street_signs/textures/street_signs_font_15px_4c.png deleted file mode 100644 index 94d7d480..00000000 Binary files a/street_signs/textures/street_signs_font_15px_4c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_4d.png b/street_signs/textures/street_signs_font_15px_4d.png deleted file mode 100644 index 0ee8eb4b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_4d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_4e.png b/street_signs/textures/street_signs_font_15px_4e.png deleted file mode 100644 index 8ff83d66..00000000 Binary files a/street_signs/textures/street_signs_font_15px_4e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_4f.png b/street_signs/textures/street_signs_font_15px_4f.png deleted file mode 100644 index b278ccc5..00000000 Binary files a/street_signs/textures/street_signs_font_15px_4f.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_50.png b/street_signs/textures/street_signs_font_15px_50.png deleted file mode 100644 index 33b52fd6..00000000 Binary files a/street_signs/textures/street_signs_font_15px_50.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_51.png b/street_signs/textures/street_signs_font_15px_51.png deleted file mode 100644 index 892747c7..00000000 Binary files a/street_signs/textures/street_signs_font_15px_51.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_52.png b/street_signs/textures/street_signs_font_15px_52.png deleted file mode 100644 index acb395ed..00000000 Binary files a/street_signs/textures/street_signs_font_15px_52.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_53.png b/street_signs/textures/street_signs_font_15px_53.png deleted file mode 100644 index 028f2841..00000000 Binary files a/street_signs/textures/street_signs_font_15px_53.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_54.png b/street_signs/textures/street_signs_font_15px_54.png deleted file mode 100644 index 3bd0a2b9..00000000 Binary files a/street_signs/textures/street_signs_font_15px_54.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_55.png b/street_signs/textures/street_signs_font_15px_55.png deleted file mode 100644 index 81643f94..00000000 Binary files a/street_signs/textures/street_signs_font_15px_55.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_56.png b/street_signs/textures/street_signs_font_15px_56.png deleted file mode 100644 index 8726f5bc..00000000 Binary files a/street_signs/textures/street_signs_font_15px_56.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_57.png b/street_signs/textures/street_signs_font_15px_57.png deleted file mode 100644 index 5e8d9d0f..00000000 Binary files a/street_signs/textures/street_signs_font_15px_57.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_58.png b/street_signs/textures/street_signs_font_15px_58.png deleted file mode 100644 index 2abbda39..00000000 Binary files a/street_signs/textures/street_signs_font_15px_58.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_59.png b/street_signs/textures/street_signs_font_15px_59.png deleted file mode 100644 index ff450930..00000000 Binary files a/street_signs/textures/street_signs_font_15px_59.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_5a.png b/street_signs/textures/street_signs_font_15px_5a.png deleted file mode 100644 index 5c706ce1..00000000 Binary files a/street_signs/textures/street_signs_font_15px_5a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_5b.png b/street_signs/textures/street_signs_font_15px_5b.png deleted file mode 100644 index 2592f1ff..00000000 Binary files a/street_signs/textures/street_signs_font_15px_5b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_5c.png b/street_signs/textures/street_signs_font_15px_5c.png deleted file mode 100644 index 406d6342..00000000 Binary files a/street_signs/textures/street_signs_font_15px_5c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_5d.png b/street_signs/textures/street_signs_font_15px_5d.png deleted file mode 100644 index a5efa37d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_5d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_5e.png b/street_signs/textures/street_signs_font_15px_5e.png deleted file mode 100644 index 7f610d87..00000000 Binary files a/street_signs/textures/street_signs_font_15px_5e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_5f.png b/street_signs/textures/street_signs_font_15px_5f.png deleted file mode 100644 index 07cce5a1..00000000 Binary files a/street_signs/textures/street_signs_font_15px_5f.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_60.png b/street_signs/textures/street_signs_font_15px_60.png deleted file mode 100644 index cd4e0fb3..00000000 Binary files a/street_signs/textures/street_signs_font_15px_60.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_61.png b/street_signs/textures/street_signs_font_15px_61.png deleted file mode 100644 index dc019ba5..00000000 Binary files a/street_signs/textures/street_signs_font_15px_61.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_62.png b/street_signs/textures/street_signs_font_15px_62.png deleted file mode 100644 index 285d0b2f..00000000 Binary files a/street_signs/textures/street_signs_font_15px_62.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_63.png b/street_signs/textures/street_signs_font_15px_63.png deleted file mode 100644 index 8781b8a8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_63.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_64.png b/street_signs/textures/street_signs_font_15px_64.png deleted file mode 100644 index 16c9a286..00000000 Binary files a/street_signs/textures/street_signs_font_15px_64.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_65.png b/street_signs/textures/street_signs_font_15px_65.png deleted file mode 100644 index 810d9c93..00000000 Binary files a/street_signs/textures/street_signs_font_15px_65.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_66.png b/street_signs/textures/street_signs_font_15px_66.png deleted file mode 100644 index 411ca573..00000000 Binary files a/street_signs/textures/street_signs_font_15px_66.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_67.png b/street_signs/textures/street_signs_font_15px_67.png deleted file mode 100644 index d8820dd1..00000000 Binary files a/street_signs/textures/street_signs_font_15px_67.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_68.png b/street_signs/textures/street_signs_font_15px_68.png deleted file mode 100644 index 5b51d05a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_68.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_69.png b/street_signs/textures/street_signs_font_15px_69.png deleted file mode 100644 index 55f1a229..00000000 Binary files a/street_signs/textures/street_signs_font_15px_69.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_6a.png b/street_signs/textures/street_signs_font_15px_6a.png deleted file mode 100644 index c20e222f..00000000 Binary files a/street_signs/textures/street_signs_font_15px_6a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_6b.png b/street_signs/textures/street_signs_font_15px_6b.png deleted file mode 100644 index fc34fc50..00000000 Binary files a/street_signs/textures/street_signs_font_15px_6b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_6c.png b/street_signs/textures/street_signs_font_15px_6c.png deleted file mode 100644 index 1f027283..00000000 Binary files a/street_signs/textures/street_signs_font_15px_6c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_6d.png b/street_signs/textures/street_signs_font_15px_6d.png deleted file mode 100644 index 6c0ae93f..00000000 Binary files a/street_signs/textures/street_signs_font_15px_6d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_6e.png b/street_signs/textures/street_signs_font_15px_6e.png deleted file mode 100644 index 4f4dec70..00000000 Binary files a/street_signs/textures/street_signs_font_15px_6e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_6f.png b/street_signs/textures/street_signs_font_15px_6f.png deleted file mode 100644 index 921c6119..00000000 Binary files a/street_signs/textures/street_signs_font_15px_6f.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_70.png b/street_signs/textures/street_signs_font_15px_70.png deleted file mode 100644 index 8202199d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_70.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_71.png b/street_signs/textures/street_signs_font_15px_71.png deleted file mode 100644 index c02171f0..00000000 Binary files a/street_signs/textures/street_signs_font_15px_71.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_72.png b/street_signs/textures/street_signs_font_15px_72.png deleted file mode 100644 index 757b9c85..00000000 Binary files a/street_signs/textures/street_signs_font_15px_72.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_73.png b/street_signs/textures/street_signs_font_15px_73.png deleted file mode 100644 index e38497d9..00000000 Binary files a/street_signs/textures/street_signs_font_15px_73.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_74.png b/street_signs/textures/street_signs_font_15px_74.png deleted file mode 100644 index 10f9cfa9..00000000 Binary files a/street_signs/textures/street_signs_font_15px_74.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_75.png b/street_signs/textures/street_signs_font_15px_75.png deleted file mode 100644 index 377416ba..00000000 Binary files a/street_signs/textures/street_signs_font_15px_75.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_76.png b/street_signs/textures/street_signs_font_15px_76.png deleted file mode 100644 index dc558d3a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_76.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_77.png b/street_signs/textures/street_signs_font_15px_77.png deleted file mode 100644 index 6a142984..00000000 Binary files a/street_signs/textures/street_signs_font_15px_77.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_78.png b/street_signs/textures/street_signs_font_15px_78.png deleted file mode 100644 index 38b4be03..00000000 Binary files a/street_signs/textures/street_signs_font_15px_78.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_79.png b/street_signs/textures/street_signs_font_15px_79.png deleted file mode 100644 index 8859fb41..00000000 Binary files a/street_signs/textures/street_signs_font_15px_79.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_7a.png b/street_signs/textures/street_signs_font_15px_7a.png deleted file mode 100644 index c42c84a3..00000000 Binary files a/street_signs/textures/street_signs_font_15px_7a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_7b.png b/street_signs/textures/street_signs_font_15px_7b.png deleted file mode 100644 index c0ee072c..00000000 Binary files a/street_signs/textures/street_signs_font_15px_7b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_7c.png b/street_signs/textures/street_signs_font_15px_7c.png deleted file mode 100644 index 6e9949de..00000000 Binary files a/street_signs/textures/street_signs_font_15px_7c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_7d.png b/street_signs/textures/street_signs_font_15px_7d.png deleted file mode 100644 index 6162caa2..00000000 Binary files a/street_signs/textures/street_signs_font_15px_7d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_7e.png b/street_signs/textures/street_signs_font_15px_7e.png deleted file mode 100644 index ec762d55..00000000 Binary files a/street_signs/textures/street_signs_font_15px_7e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_81.png b/street_signs/textures/street_signs_font_15px_81.png deleted file mode 100644 index df38787a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_81.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_82.png b/street_signs/textures/street_signs_font_15px_82.png deleted file mode 100644 index e769d353..00000000 Binary files a/street_signs/textures/street_signs_font_15px_82.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_83.png b/street_signs/textures/street_signs_font_15px_83.png deleted file mode 100644 index 7c8c59a8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_83.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_84.png b/street_signs/textures/street_signs_font_15px_84.png deleted file mode 100644 index 9af1a9b3..00000000 Binary files a/street_signs/textures/street_signs_font_15px_84.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_85.png b/street_signs/textures/street_signs_font_15px_85.png deleted file mode 100644 index a83d4c31..00000000 Binary files a/street_signs/textures/street_signs_font_15px_85.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_86.png b/street_signs/textures/street_signs_font_15px_86.png deleted file mode 100644 index 7ca6698f..00000000 Binary files a/street_signs/textures/street_signs_font_15px_86.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_87.png b/street_signs/textures/street_signs_font_15px_87.png deleted file mode 100644 index 2b0eba0a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_87.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_88.png b/street_signs/textures/street_signs_font_15px_88.png deleted file mode 100644 index ebab3365..00000000 Binary files a/street_signs/textures/street_signs_font_15px_88.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_8a.png b/street_signs/textures/street_signs_font_15px_8a.png deleted file mode 100644 index eeac2a1c..00000000 Binary files a/street_signs/textures/street_signs_font_15px_8a.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_8b.png b/street_signs/textures/street_signs_font_15px_8b.png deleted file mode 100644 index 35681f06..00000000 Binary files a/street_signs/textures/street_signs_font_15px_8b.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_8c.png b/street_signs/textures/street_signs_font_15px_8c.png deleted file mode 100644 index bbcd1002..00000000 Binary files a/street_signs/textures/street_signs_font_15px_8c.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_8d.png b/street_signs/textures/street_signs_font_15px_8d.png deleted file mode 100644 index e280cd95..00000000 Binary files a/street_signs/textures/street_signs_font_15px_8d.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_8e.png b/street_signs/textures/street_signs_font_15px_8e.png deleted file mode 100644 index c97a758b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_8e.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_8f.png b/street_signs/textures/street_signs_font_15px_8f.png deleted file mode 100644 index 845f51cc..00000000 Binary files a/street_signs/textures/street_signs_font_15px_8f.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_90.png b/street_signs/textures/street_signs_font_15px_90.png deleted file mode 100644 index bafc8512..00000000 Binary files a/street_signs/textures/street_signs_font_15px_90.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_91.png b/street_signs/textures/street_signs_font_15px_91.png deleted file mode 100644 index f5d2462b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_91.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_a8.png b/street_signs/textures/street_signs_font_15px_a8.png deleted file mode 100644 index 75d14951..00000000 Binary files a/street_signs/textures/street_signs_font_15px_a8.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_b8.png b/street_signs/textures/street_signs_font_15px_b8.png deleted file mode 100644 index c8215a18..00000000 Binary files a/street_signs/textures/street_signs_font_15px_b8.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_b9.png b/street_signs/textures/street_signs_font_15px_b9.png deleted file mode 100644 index 765437a3..00000000 Binary files a/street_signs/textures/street_signs_font_15px_b9.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c0.png b/street_signs/textures/street_signs_font_15px_c0.png deleted file mode 100644 index fe3e3803..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c0.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c1.png b/street_signs/textures/street_signs_font_15px_c1.png deleted file mode 100644 index f589c1cf..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c1.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c2.png b/street_signs/textures/street_signs_font_15px_c2.png deleted file mode 100644 index ea6043ad..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c2.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c3.png b/street_signs/textures/street_signs_font_15px_c3.png deleted file mode 100644 index 1cc88a86..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c3.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c4.png b/street_signs/textures/street_signs_font_15px_c4.png deleted file mode 100644 index 1006dff7..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c4.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c5.png b/street_signs/textures/street_signs_font_15px_c5.png deleted file mode 100644 index 85c9b92b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c5.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c6.png b/street_signs/textures/street_signs_font_15px_c6.png deleted file mode 100644 index 7e5b16c1..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c6.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c7.png b/street_signs/textures/street_signs_font_15px_c7.png deleted file mode 100644 index 6303b0e8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c7.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c8.png b/street_signs/textures/street_signs_font_15px_c8.png deleted file mode 100644 index e8ece15d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c8.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_c9.png b/street_signs/textures/street_signs_font_15px_c9.png deleted file mode 100644 index d3dc073d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_c9.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ca.png b/street_signs/textures/street_signs_font_15px_ca.png deleted file mode 100644 index a9400654..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ca.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_cb.png b/street_signs/textures/street_signs_font_15px_cb.png deleted file mode 100644 index fa96d938..00000000 Binary files a/street_signs/textures/street_signs_font_15px_cb.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_cc.png b/street_signs/textures/street_signs_font_15px_cc.png deleted file mode 100644 index 0c661426..00000000 Binary files a/street_signs/textures/street_signs_font_15px_cc.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_cd.png b/street_signs/textures/street_signs_font_15px_cd.png deleted file mode 100644 index 5677f033..00000000 Binary files a/street_signs/textures/street_signs_font_15px_cd.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ce.png b/street_signs/textures/street_signs_font_15px_ce.png deleted file mode 100644 index 9314974a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ce.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_cf.png b/street_signs/textures/street_signs_font_15px_cf.png deleted file mode 100644 index fb6dee90..00000000 Binary files a/street_signs/textures/street_signs_font_15px_cf.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d0.png b/street_signs/textures/street_signs_font_15px_d0.png deleted file mode 100644 index 74b0c17a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d0.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d1.png b/street_signs/textures/street_signs_font_15px_d1.png deleted file mode 100644 index 5197b0f8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d1.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d2.png b/street_signs/textures/street_signs_font_15px_d2.png deleted file mode 100644 index 744f4ebf..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d2.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d3.png b/street_signs/textures/street_signs_font_15px_d3.png deleted file mode 100644 index 048856b4..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d3.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d4.png b/street_signs/textures/street_signs_font_15px_d4.png deleted file mode 100644 index 49e7b8cd..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d4.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d5.png b/street_signs/textures/street_signs_font_15px_d5.png deleted file mode 100644 index f2df843b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d5.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d6.png b/street_signs/textures/street_signs_font_15px_d6.png deleted file mode 100644 index 8f774839..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d6.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d7.png b/street_signs/textures/street_signs_font_15px_d7.png deleted file mode 100644 index 20164b95..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d7.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d8.png b/street_signs/textures/street_signs_font_15px_d8.png deleted file mode 100644 index 72861b0f..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d8.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_d9.png b/street_signs/textures/street_signs_font_15px_d9.png deleted file mode 100644 index 497b45ec..00000000 Binary files a/street_signs/textures/street_signs_font_15px_d9.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_da.png b/street_signs/textures/street_signs_font_15px_da.png deleted file mode 100644 index 1c245408..00000000 Binary files a/street_signs/textures/street_signs_font_15px_da.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_db.png b/street_signs/textures/street_signs_font_15px_db.png deleted file mode 100644 index e750c0e8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_db.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_dc.png b/street_signs/textures/street_signs_font_15px_dc.png deleted file mode 100644 index ce2e1975..00000000 Binary files a/street_signs/textures/street_signs_font_15px_dc.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_dd.png b/street_signs/textures/street_signs_font_15px_dd.png deleted file mode 100644 index bbb07bdb..00000000 Binary files a/street_signs/textures/street_signs_font_15px_dd.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_de.png b/street_signs/textures/street_signs_font_15px_de.png deleted file mode 100644 index 4c590476..00000000 Binary files a/street_signs/textures/street_signs_font_15px_de.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_df.png b/street_signs/textures/street_signs_font_15px_df.png deleted file mode 100644 index 7c29dde5..00000000 Binary files a/street_signs/textures/street_signs_font_15px_df.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e0.png b/street_signs/textures/street_signs_font_15px_e0.png deleted file mode 100644 index 93d4b14a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e0.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e1.png b/street_signs/textures/street_signs_font_15px_e1.png deleted file mode 100644 index 7bf23820..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e1.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e2.png b/street_signs/textures/street_signs_font_15px_e2.png deleted file mode 100644 index 66b116a0..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e2.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e3.png b/street_signs/textures/street_signs_font_15px_e3.png deleted file mode 100644 index 5b0a4187..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e3.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e4.png b/street_signs/textures/street_signs_font_15px_e4.png deleted file mode 100644 index e3ec02dc..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e4.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e5.png b/street_signs/textures/street_signs_font_15px_e5.png deleted file mode 100644 index 09b431a6..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e5.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e6.png b/street_signs/textures/street_signs_font_15px_e6.png deleted file mode 100644 index 777b8cd2..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e6.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e7.png b/street_signs/textures/street_signs_font_15px_e7.png deleted file mode 100644 index 9da7dabe..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e7.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e8.png b/street_signs/textures/street_signs_font_15px_e8.png deleted file mode 100644 index d7279aec..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e8.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_e9.png b/street_signs/textures/street_signs_font_15px_e9.png deleted file mode 100644 index 4d40313c..00000000 Binary files a/street_signs/textures/street_signs_font_15px_e9.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ea.png b/street_signs/textures/street_signs_font_15px_ea.png deleted file mode 100644 index 2533ec11..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ea.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_eb.png b/street_signs/textures/street_signs_font_15px_eb.png deleted file mode 100644 index 4ef91296..00000000 Binary files a/street_signs/textures/street_signs_font_15px_eb.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ec.png b/street_signs/textures/street_signs_font_15px_ec.png deleted file mode 100644 index 18e859b7..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ec.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ed.png b/street_signs/textures/street_signs_font_15px_ed.png deleted file mode 100644 index edd951db..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ed.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ee.png b/street_signs/textures/street_signs_font_15px_ee.png deleted file mode 100644 index 813e1f7a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ee.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ef.png b/street_signs/textures/street_signs_font_15px_ef.png deleted file mode 100644 index f2f24d20..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ef.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f0.png b/street_signs/textures/street_signs_font_15px_f0.png deleted file mode 100644 index 697286ce..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f0.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f1.png b/street_signs/textures/street_signs_font_15px_f1.png deleted file mode 100644 index 01c1e646..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f1.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f2.png b/street_signs/textures/street_signs_font_15px_f2.png deleted file mode 100644 index df2aaa39..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f2.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f3.png b/street_signs/textures/street_signs_font_15px_f3.png deleted file mode 100644 index e09cf75b..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f3.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f4.png b/street_signs/textures/street_signs_font_15px_f4.png deleted file mode 100644 index 2c0853bb..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f4.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f5.png b/street_signs/textures/street_signs_font_15px_f5.png deleted file mode 100644 index fd21a81d..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f5.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f6.png b/street_signs/textures/street_signs_font_15px_f6.png deleted file mode 100644 index 189a96f3..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f6.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f7.png b/street_signs/textures/street_signs_font_15px_f7.png deleted file mode 100644 index 87b2ecac..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f7.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f8.png b/street_signs/textures/street_signs_font_15px_f8.png deleted file mode 100644 index 3c195aa4..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f8.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_f9.png b/street_signs/textures/street_signs_font_15px_f9.png deleted file mode 100644 index 9fb54ba8..00000000 Binary files a/street_signs/textures/street_signs_font_15px_f9.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_fa.png b/street_signs/textures/street_signs_font_15px_fa.png deleted file mode 100644 index da72b468..00000000 Binary files a/street_signs/textures/street_signs_font_15px_fa.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_fb.png b/street_signs/textures/street_signs_font_15px_fb.png deleted file mode 100644 index 6cfd0fe4..00000000 Binary files a/street_signs/textures/street_signs_font_15px_fb.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_fc.png b/street_signs/textures/street_signs_font_15px_fc.png deleted file mode 100644 index c8c69180..00000000 Binary files a/street_signs/textures/street_signs_font_15px_fc.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_fd.png b/street_signs/textures/street_signs_font_15px_fd.png deleted file mode 100644 index 9130ccde..00000000 Binary files a/street_signs/textures/street_signs_font_15px_fd.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_fe.png b/street_signs/textures/street_signs_font_15px_fe.png deleted file mode 100644 index 51652966..00000000 Binary files a/street_signs/textures/street_signs_font_15px_fe.png and /dev/null differ diff --git a/street_signs/textures/street_signs_font_15px_ff.png b/street_signs/textures/street_signs_font_15px_ff.png deleted file mode 100644 index a1a1f10a..00000000 Binary files a/street_signs/textures/street_signs_font_15px_ff.png and /dev/null differ diff --git a/streetspoles/depends.txt b/streetspoles/depends.txt index 421a27d2..e437ca24 100644 --- a/streetspoles/depends.txt +++ b/streetspoles/depends.txt @@ -1 +1 @@ -streetsmod \ No newline at end of file +streetsmod diff --git a/technic/locale/fr.txt b/technic/locale/fr.txt new file mode 100644 index 00000000..64e5770f --- /dev/null +++ b/technic/locale/fr.txt @@ -0,0 +1,215 @@ +# template.txt +# Template for translations of Technic + +## Misc +[Technic] Loaded in %f seconds = [Technic] Chargement en %f secondes + +## Items +Silicon Wafer = Tranche de silicium +Doped Silicon Wafer = Tranche de silicium doppée +Enriched Uranium = Uranium enrichi +Uranium Fuel = Carburant d'uranium +Diamond Drill Head = Tête de forage au diamant +Blue Energy Crystal = Cristal d'énergie bleu +Green Energy Crystal = Cristal d'énergie vert +Red Energy Crystal = Cristal d'énergie rouge +Fine Copper Wire = Fil fin en cuivre +Fine Gold Wire = Fil fin en or +Fine Silver Wire = Fil fin en argent +Copper Coil = Bobine de cuivre +Electric Motor = Moteur électrique +Low Voltage Transformer = Transformateur basse tension +Medium Voltage Transformer = Transformateur moyenne tension +High Voltage Transformer = Transformateur haute tension +Control Logic Unit = Unité de contrôle logique +Mixed Metal Ingot = Lingot de métal mélangé +Composite Plate = Plaque composite +Copper Plate = Plaque de cuivre +Carbon Plate = Plaque de carbone +Graphite = Graphite +Carbon Cloth = Fibre de carbone +Raw Latex = Latex brut +Rubber Fiber = Fibre de latex +%.1f%%-Fissile Uranium Ingot = Lingot d'uranium fissile (%.1f%%) +%.1f%%-Fissile Uranium Block = Block d'uranium fissile (%.1f%%) + +## Machine misc +Machine cannot be removed because it is not empty = La machine ne peut pas être retirée car elle n'est pas vide +Inventory move disallowed due to protection = Le mouvement d'inventaire n'est pas autorisé en raison de la protection + +# $1: Machine name (Includes tier) +@1 Active (@2 EU) = @1 Active (@2 EU) +%s Active = %s actif +%s Disabled = %s désactivé +%s Enabled = %s activé +%s Idle = %s au repos +%s Improperly Placed = %s est mal placé +%s is empty = %s est vide +%s Unpowered = %s non alimenté en énergie +%s Out Of Fuel = %s plus de carburant +%s Has Bad Cabling = %s est mal cablé +%s (Slave) = %s (esclave) +%s Has No Network = %s n'est pas en réseau +%s Finished = %s finit +Enable/Disable = Activer/Désactiver +Range = Plage +Upgrade Slots = Emplacement d'amélioration +In: = Entrée : +Out: = Sortie : +Slot %d = Emplacement %d +Itemwise = +Stackwise = +Ignoring Mesecon Signal = Ignorer le signal Mesecon +Controlled by Mesecon Signal = Contrôlé par signal Mesecon +Owner: = Propriétaire : +Unlocked = Dévérouillé +Locked = Vérouillé +Radius: = Rayon : +Enabled = Activé +Disabled = Désactivé + +## Machine names +# $1: Tier +%s Alloy Furnace = Four à alliage %s +%s Battery Box = Batterie %s +%s Cable = Câble %s +%s CNC Machine = Machine-outils %s +%s Centrifuge = Centrifugeuse %s +%s Compressor = Compresseur %s +%s Extractor = Extracteur %s +%s Forcefield Emitter = Emetteur de champ de force %s +%s Furnace = Four %s +%s Grinder = Broyeur %s +%s Music Player = Poste de musique %s +%s Quarry = Mineur %s +%s Tool Workshop = Atelier d'outillage %s +Arrayed Solar %s Generator = Générateur solaire %s +Fuel-Fired %s Generator = Générateur à carburant +Geothermal %s Generator = Géénarteur géothermique %s +Hydro %s Generator = Générateur hydro %s +Nuclear %s Generator Core = Générateur nucléaire % +Small Solar %s Generator = Petit générateur solaire %s +Wind %s Generator = Générateur éolien %s +Self-Contained Injector = Injecteur autonome +Constructor Mk%d = Constructeur Mk%d +Frame = Cadre +Frame Motor = Cadre de moteur +Template = Modèle +Template (replacing) = +Template Motor = +Template Tool = +Battery Box = Compartiment à batterie +Supply Converter = Convertisseur d'alimentation +Switching Station = Station de commutation +Fuel-Fired Alloy Furnace = Four à alliage à carburant +Fuel-Fired Furnace = Four à carburant +Wind Mill Frame = Cadre d'éolienne +Forcefield = Champ de force +Nuclear Reactor Rod Compartment = Compartiment à barres du réacteur nucléaire +Administrative World Anchor = + +## Machine-specific +# $1: Pruduced EU +Charge = Charger +Discharge = Décharger +Power level = Niveau d'énergie + +# $1: Tier $2: current_charge $3: max_charge +@1 Battery Box: @2/@3 = @1 batterie : @2/@3 + +# $1: Machine name $2: Supply $3: Demand +@1. Supply: @2 Demand: @3 = @1. fournit : @2 demande : @3 +Production at %d%% = Production à %d%% +Choose Milling Program: = Choisissez le programme de fraisage : +Slim Elements half / normal height: = +Current track %s = Morceau actuel %s +Stopped = Arrêté +Keeping %d/%d map blocks loaded = +Digging not started = Creusement non démarré +Digging finished = Creusement terminé +Digging %d m above machine = Creusement à %dm au dessus de la machine +Digging %d m below machine = Creusement à %dm en dessous de la machine +@1 (@2 @3 -> @4 @5) = @1 (@2 @3 -> @4 @5) + +## CNC +Cylinder = +Element Cross = Elément croisé +Element Cross Double = Elément croisé (double) +Element Edge = Elément de bordure +Element Edge Double = Elément de bordure (double) +Element End = Elément de fin +Element End Double = Elément de fin (double) +Element Straight = Elément droit +Element Straight Double = Elément droit (double) +Element T = Elément en T +Element T Double = Elément en T (double) +Horizontal Cylinder = Cylindre horizontal +One Curved Edge Block = Bloc à un bord incurvé +Pyramid = Pyramide +Slope = Pente +Slope Edge = +Slope Inner Edge = +Slope Lying = +Slope Upside Down = +Slope Upside Down Edge = +Slope Upside Down Inner Edge = +Sphere = Sphère +Spike = Pointe +Stick = Bâton +Two Curved Edge Block = Bloc à deux bords incurvés +Brick = Brique +Cobble = Pierre taillée +Dirt = Terre +Leaves = Feuilles +Sandstone = Grès +Stone = Pierre +Tree = Arbre +Wooden = Bois + +## Grinder Recipes +# $1: Name +%s Dust = Poudre - %s +Akalin = +Alatro = +Arol = +Brass = Laiton +Bronze = Bronze +Carbon Steel = Acier au carbone +Cast Iron = Fonte +Chromium = Chrome +Coal = Charbon +Copper = Cuivre +Gold = Or +Mithril = Mithril +Silver = Argent +Stainless Steel = Acier inoxydable +Talinite = Talanite +Tin = Etain +Wrought Iron = Fer forgé +Zinc = Zinc +%.1f%%-Fissile Uranium = Uranium fissile (%.1f%%) + +## Tools +RE Battery = Batterie RE +Water Can = Jerrycan d'eau +Lava Can = Jerrycan de lave +Chainsaw = Trançonneuse +Flashlight = Lampe torche +3 nodes deep. = +3 nodes tall. = +3 nodes wide. = +3x3 nodes. = +Use while sneaking to change Mining Drill Mk%d modes. = +Mining Drill Mk%d Mode %d = Foreuse Mk%d Mode %d +Mining Drill Mk%d = Foreuse Mk%d +Mining Laser Mk%d = Foreuse laser Mk%d +Single node. = Mode simple. +Sonic Screwdriver = Tournevis sonique +Tree Tap = Taraud à latex + +## Craft descriptions +Alloy cooking = Fonderie d'alliage +Grinding = Broyage +Compressing = Compression +Extracting = Extraction +Separating = Séparat diff --git a/technic/locale/pt_BR.txt b/technic/locale/pt_BR.txt new file mode 100644 index 00000000..7baa4a5d --- /dev/null +++ b/technic/locale/pt_BR.txt @@ -0,0 +1,211 @@ +# Braziliam portuguese translation for technic +# Tradução portuguesa brasileira para technic +# By Sires + +## Misc +[Technic] Loaded in %f seconds = [Technic] Carregado em %f segundos + +## Items +Silicon Wafer = Pastilha de Silício +Doped Silicon Wafer = Pastilha de Silício Dopada +Enriched Uranium = Urânio Enriquecido +Uranium Fuel = Combustivel de Urânio +Diamond Drill Head = Cabeça de Broca de Diamante +Blue Energy Crystal = Cristal de Energia Azul +Green Energy Crystal = Cristal de Energia Verde +Red Energy Crystal = Cristal de Energia Vermelho +Fine Copper Wire = Fio Fino de Cobre +Copper Coil = Bobina de Cobre +Electric Motor = Motor Elétrico +Low Voltage Transformer = Transformador de Baixa Voltagem +Medium Voltage Transformer = Transformador de Média Voltagem +High Voltage Transformer = Transformador de Alta Voltagem +Control Logic Unit = Unidade de Controle Lógico +Mixed Metal Ingot = Lingote de Metal Misturado +Composite Plate = Placa Composta +Copper Plate = Placa de Cobre +Carbon Plate = Placa de Carbono +Graphite = Grafite +Carbon Cloth = Recido de Carbono +Raw Latex = Latex bruto +Rubber Fiber = Fibra de Borracha +%.1f%%-Fissile Uranium Ingot = Lingote de Urânio %.1f%%-Físsil +%.1f%%-Fissile Uranium Block = Bloco de Urânio %.1f%%-Físsil + +## Machine Misc +Machine cannot be removed because it is not empty = A máquina não pode ser removida porque ela não está vazia +Inventory move disallowed due to protection = Movimento de inventário não permitido pela proteção +# $1: Machine name (includes tier) +@1 Active (@2 EU) = @1 Ativo (@2 EU) +%s Active = %s Ativo +%s Disabled = %s Ativado +%s Enabled = %s Desativado +%s Idle = Ócio +%s Improperly Placed = %s Colocado Inapropriadamente +%s is empty = %s está vazio +%s Unpowered = %s Sem energia +%s Out Of Fuel = %s Sem Combustível +%s Has Bad Cabling = %s Tem Cabeamento Ruim +%s (Slave) = %s (Servo) +%s Has No Network = %s Não Tem Rede +%s Finished = %s Acabou +Enable/Disable = Ativar/Desativar +Range = Alcance +Upgrade Slots = Lugares para Melhoria +In: = Entrada: +Out: = Saída: +Slot %d = Lugar %d +Itemwise = Por item +Stackwise = Por pilha +Ignoring Mesecon Signal = Ignorar Sinaal de Mesecon +Controlled by Mesecon Signal = Controlado por Sinal de Mesecon +Owner: = Dono: +Unlocked = Destravado +Locked = Travado +Radius: = Raio: +Enabled = Ativado +Disabled = Desativado + +## Machine names +# $1: Tier +%s Alloy Furnace = Fornalha de Liga %s +%s Battery Box = Caixa de Bateria %s +%s Cable = Cabo %s +%s CNC Machine = Máquina CNC %s +%s Centrifuge = Centrifuga %s +%s Compressor = Compresso %s +%s Extractor = Extrator %s +%s Forcefield Emitter = Emissor de Campo de Força %s +%s Furnace = Fornalha %s +%s Grinder = Triturador %s +%s Music Player = Tocador de Música %s +%s Quarry = Pedreira %s +%s Tool Workshop = Oficina de Ferramentas %s +Arrayed Solar %s Generator = Gerador Solar Equipado %s +Fuel-Fired %s Generator = Gerador Alimentado-por-Combustível %s +Geothermal %s Generator = Gerador Geotermal %s +Hydro %s Generator = Gerador Hidráulico %s +Nuclear %s Generator Core = Núcleo de Gerador Nuclear %s +Small Solar %s Generator = Gerador Solar Pequeno %s +Wind %s Generator = Gerador de Energia Eólica %s +Self-Contained Injector = Injetor Auto-Contido +Constructor Mk%d = Construtor Nv%d +Frame = Armação +Frame Motor = Motor de Armação +Template = Modelo +Template (replacing) = Modelo (recolocando) +Template Motor = Modelo de Motor +Template Tool = Modelo de Ferramenta +Battery Box = Caixa de Bateria +Supply Converter = Conversor de Energia +Switching Station = Estação de Comutação +Fuel-Fired Alloy Furnace = Fornalha de Liga Alimentada-por-Combustível +Fuel-Fired Furnace = Fornalha Alimentada-por-Combustível +Wind Mill Frame = Armação de Moinho de Vento +Forcefield = Campo de Força +Nuclear Reactor Rod Compartment = Compartimento de Barra do Reator Nuclear +Administrative World Anchor = Âncora de Mundo Administrativa + +## Machine-specific +# $1: Pruduced EU +Charge = Carregar +Discharge = Descarregar +Power level = Nível de Energia +# $1: Tier $2: current_charge $3: max_charge +@1 Battery Box: @2/@3 = Caixa de Baterias @1: @2/@3 +# $1: Machine name $2: Supply $3: Demand +@1. Supply: @2 Demand: @3 = @1. Suprimento: @2 Demanda: @3 +Production at %d%% = Produção em %d%% +Choose Milling Program: = Escolha o Programa de Serragem: +Slim Elements half / normal height: = Metade de Elementos Finos / altura normal: +Current track %s = Música Atual %s +Stopped = Parado +Keeping %d/%d map blocks loaded = Mantendo %d/%d blocos de mapa carregados +Digging not started = Escavação não começada +Digging finished = Escavação terminada +Digging %d m above machine = Escavando %d m acima da máquina +Digging %d m below machine = Escavando %d m abaixo da máquina +@1 (@2 @3 -> @4 @5) = @1 (@2 @3 -> @4 @5) + +## CNC +Cylinder = Cilindro +Element Cross = Cruz do Elemento +Element Cross Double = Cruz Dupla do Elemento +Element Edge = Borda do Elemento +Element Edge Double = Borda Dupla do Elemento +Element End = Final do Elemento +Element End Double = Final Duplo do Elemento +Element Straight = Elemento Contínuo +Element Straight Double = Elemento Contínuo duplo +Element T = Elemento em T +Element T Double = Elemento em T Duplo +Horizontal Cylinder = Cilindro Horizontal +One Curved Edge Block = Uma Borda de Bloco Curvada +Pyramid = Pirâmide +Slope = Ladeira +Slope Edge = Canto de Ladeira +Slope Inner Edge = Canto de Dentro de Ladeira +Slope Lying = Ladeira Deitada +Slope Upside Down = Ladeira de Cabeça para Baixo +Slope Upside Down Edge = Cande de Ladeira de Cabeça para Baixo +Slope Upside Down Inner Edge = Canto de Dentro de Ladeira de Cabeça para Baixo +Sphere = Esfera +Spike = Espinho +Stick = Graveto +Two Curved Edge Block = Bloco de Duas Bordas Curvadas +Brick = Tijolo +Cobble = Pedregulho +Dirt = Terra +Leaves = Folhas +Sandstone = Arenito +Stone = Pedra +Tree = Árvore +Wooden = de Madeira + +## Grinder Recipes +# $1: Name +%s Dust = Pó de %s +Akalin = Akalin +Alatro = Alatro +Arol = Arol +Brass = Latão +Bronze = Bronze +Carbon Steel = Aço Carbono +Cast Iron = Ferro Fundido +Chromium = Crômio +Coal = Carvão +Copper = Cobre +Gold = Ouro +Mithril = Mithril +Silver = Prata +Stainless Steel = Aço Inoxidável +Talinite = Talinite +Tin = Estanho +Wrought Iron = Ferro Forjado +Zinc = Zinco +%.1f%%-Fissile Uranium = Urânio %.1f%%-Físsil + +## Tools +RE Battery = Bateria RE +Water Can = Lata de Água +Lava Can = Lata de Lava +Chainsaw = Motosserra +Flashlight = Lanterna +3 nodes deep. = 3 nodes de profundidade. +3 nodes tall. = 3 nodes de altura. +3 nodes wide. = 3 nodes de largura. +3x3 nodes. = 3x3 nodes. +Use while sneaking to change Mining Drill Mk%d modes. = Use enquanto esgueirando para mudar os modos da Broca de Mineração Nv%d. +Mining Drill Mk%d Mode %d = Broca de Mineração Nv%d Modo %d +Mining Drill Mk%d = Broca de Mineração Nv%d +Mining Laser Mk%d = Laser de Mineração Nv%d +Single node. = Unico node. +Sonic Screwdriver = Chave de Fenda Sônica. +Tree Tap = Torneira de Árvore + +## Craft descriptions +Alloy cooking = Cozinhando em liga +Grinding = Triturando +Compressing = Comprimindo +Extracting = Extraindo +Separating = Separando diff --git a/technic/locale/template.txt b/technic/locale/template.txt index 12dbc654..796b2d23 100644 --- a/technic/locale/template.txt +++ b/technic/locale/template.txt @@ -15,6 +15,8 @@ Blue Energy Crystal = Green Energy Crystal = Red Energy Crystal = Fine Copper Wire = +Fine Gold Wire = +Fine Silver Wire = Copper Coil = Electric Motor = Low Voltage Transformer = diff --git a/technic/machines/other/constructor.lua b/technic/machines/other/constructor.lua index 0a62a7c3..e7b1f674 100644 --- a/technic/machines/other/constructor.lua +++ b/technic/machines/other/constructor.lua @@ -118,6 +118,12 @@ local function make_off(mark) end end +local function allow_inventory_put(pos, listname, index, stack, player) + if stack and minetest.get_item_group(stack:get_name(), "technic_constructor") == 1 then + return 0 + end + return technic.machine_inventory_put(pos, listname, index, stack, player) +end local function make_constructor(mark, length) minetest.register_node("technic:constructor_mk"..mark.."_off", { @@ -129,7 +135,8 @@ local function make_constructor(mark, length) "technic_constructor_back.png", "technic_constructor_front_off.png"}, paramtype2 = "facedir", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, mesecon = 2}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, + mesecon = 2, technic_constructor = 1}, mesecons = {effector = {action_on = make_on(mark, length)}}, sounds = default.node_sound_stone_defaults(), on_construct = function(pos) @@ -160,7 +167,7 @@ local function make_constructor(mark, length) end return true end, - allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_put = allow_inventory_put, allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_move = technic.machine_inventory_move, on_rotate = screwdriver.rotate_simple @@ -176,10 +183,10 @@ local function make_constructor(mark, length) paramtype2 = "facedir", drop = "technic:constructor_mk"..mark.."_off", groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, - mesecon=2, not_in_creative_inventory=1}, + mesecon=2, not_in_creative_inventory=1, technic_constructor=1}, mesecons= {effector = {action_off = make_off(mark)}}, sounds = default.node_sound_stone_defaults(), - allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_put = allow_inventory_put, allow_metadata_inventory_take = technic.machine_inventory_take, allow_metadata_inventory_move = technic.machine_inventory_move, on_rotate = false diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua index d6458475..7f3a0b9f 100644 --- a/technic/machines/switching_station.lua +++ b/technic/machines/switching_station.lua @@ -119,13 +119,13 @@ end -- Generic function to add found connected nodes to the right classification array local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos, from_below, network_id, queue) technic.get_or_load_node(pos) - local meta = minetest.get_meta(pos) local name = minetest.get_node(pos).name if technic.is_tier_cable(name, tier) then add_cable_node(all_nodes, pos,network_id, queue) elseif machines[name] then --dprint(name.." is a "..machines[name]) + local meta = minetest.get_meta(pos) meta:set_string(tier.."_network",minetest.pos_to_string(sw_pos)) if machines[name] == technic.producer then add_network_node(PR_nodes, pos, network_id) @@ -227,6 +227,20 @@ minetest.register_chatcommand("powerctrl", { end }) +-- Run all the nodes +local function run_nodes(list, run_stage) + for _, pos in ipairs(list) do + technic.get_or_load_node(pos) + local node = minetest.get_node_or_nil(pos) + if node and node.name then + local nodedef = minetest.registered_nodes[node.name] + if nodedef and nodedef.technic_run then + nodedef.technic_run(pos, node, run_stage) + end + end + end +end + minetest.register_abm({ nodenames = {"technic:switching_station"}, label = "Switching Station", -- allows the mtt profiler to profile this abm individually @@ -281,21 +295,6 @@ minetest.register_abm({ return end - -- Run all the nodes - local function run_nodes(list, run_stage) - for _, pos2 in ipairs(list) do - technic.get_or_load_node(pos2) - local node2 = minetest.get_node(pos2) - local nodedef - if node2 and node2.name then - nodedef = minetest.registered_nodes[node2.name] - end - if nodedef and nodedef.technic_run then - nodedef.technic_run(pos2, node2, run_stage) - end - end - end - run_nodes(PR_nodes, technic.producer) run_nodes(RE_nodes, technic.receiver) run_nodes(BA_nodes, technic.battery) @@ -467,7 +466,6 @@ minetest.register_abm({ interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) for tier, machines in pairs(technic.machines) do if machines[node.name] and switching_station_timeout_count(pos, tier) then local nodedef = minetest.registered_nodes[node.name] @@ -493,7 +491,6 @@ minetest.register_abm({ interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) local pos1 = {x=pos.x,y=pos.y-1,z=pos.z} local tier = technic.get_cable_tier(minetest.get_node(pos1).name) if not tier then return end diff --git a/technic/radiation.lua b/technic/radiation.lua index 6e518d8f..f0d7f619 100644 --- a/technic/radiation.lua +++ b/technic/radiation.lua @@ -338,7 +338,7 @@ local function dmg_abm(pos, node) local max_dist = strength * rad_dmg_mult_sqrt for _, o in pairs(minetest.get_objects_inside_radius(pos, max_dist + abdomen_offset)) do - if entity_damage or o:is_player() then + if (entity_damage or o:is_player()) and o:get_hp() > 0 then dmg_object(pos, o, strength) end end diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png index 2848f89e..9ebdb183 100644 Binary files a/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png and b/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png index 4661177a..05baf76d 100644 Binary files a/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png and b/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png index 5187fabb..538c6378 100644 Binary files a/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png and b/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png index 3d380daa..127946b3 100644 Binary files a/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png and b/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png index ba2bd897..4a46b3db 100644 Binary files a/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png and b/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png index 2fa8f18a..d04e5fc7 100644 Binary files a/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png and b/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png differ diff --git a/technic/textures/power_meter.png b/technic/textures/power_meter.png index 9f96cace..07a7f6a6 100644 Binary files a/technic/textures/power_meter.png and b/technic/textures/power_meter.png differ diff --git a/technic/textures/technic_acacia_grindings.png b/technic/textures/technic_acacia_grindings.png index bcfefc9c..58c49b61 100644 Binary files a/technic/textures/technic_acacia_grindings.png and b/technic/textures/technic_acacia_grindings.png differ diff --git a/technic/textures/technic_admin_anchor.png b/technic/textures/technic_admin_anchor.png index 7ce9b4cd..0e8b31d7 100644 Binary files a/technic/textures/technic_admin_anchor.png and b/technic/textures/technic_admin_anchor.png differ diff --git a/technic/textures/technic_akalin_dust.png b/technic/textures/technic_akalin_dust.png index 052b0ac9..42d6fffa 100644 Binary files a/technic/textures/technic_akalin_dust.png and b/technic/textures/technic_akalin_dust.png differ diff --git a/technic/textures/technic_alatro_dust.png b/technic/textures/technic_alatro_dust.png index 172af258..0046b221 100644 Binary files a/technic/textures/technic_alatro_dust.png and b/technic/textures/technic_alatro_dust.png differ diff --git a/technic/textures/technic_arol_dust.png b/technic/textures/technic_arol_dust.png index 1a575ed6..b8414656 100644 Binary files a/technic/textures/technic_arol_dust.png and b/technic/textures/technic_arol_dust.png differ diff --git a/technic/textures/technic_battery.png b/technic/textures/technic_battery.png index ee83b745..cb3418cd 100644 Binary files a/technic/textures/technic_battery.png and b/technic/textures/technic_battery.png differ diff --git a/technic/textures/technic_battery_meter_fg.png b/technic/textures/technic_battery_meter_fg.png index 2f19bc76..3d2698b4 100644 Binary files a/technic/textures/technic_battery_meter_fg.png and b/technic/textures/technic_battery_meter_fg.png differ diff --git a/technic/textures/technic_battery_reload.png b/technic/textures/technic_battery_reload.png index 4ce48d82..a8de376a 100644 Binary files a/technic/textures/technic_battery_reload.png and b/technic/textures/technic_battery_reload.png differ diff --git a/technic/textures/technic_bronze_dust.png b/technic/textures/technic_bronze_dust.png index a613205f..5946dc54 100644 Binary files a/technic/textures/technic_bronze_dust.png and b/technic/textures/technic_bronze_dust.png differ diff --git a/technic/textures/technic_bucket_corium.png b/technic/textures/technic_bucket_corium.png index 82da7ca5..bb52895b 100644 Binary files a/technic/textures/technic_bucket_corium.png and b/technic/textures/technic_bucket_corium.png differ diff --git a/technic/textures/technic_cable_connection_overlay.png b/technic/textures/technic_cable_connection_overlay.png index e013c536..85f5f5be 100644 Binary files a/technic/textures/technic_cable_connection_overlay.png and b/technic/textures/technic_cable_connection_overlay.png differ diff --git a/technic/textures/technic_carbon_cloth.png b/technic/textures/technic_carbon_cloth.png index 65a6dab6..9a3a0da5 100644 Binary files a/technic/textures/technic_carbon_cloth.png and b/technic/textures/technic_carbon_cloth.png differ diff --git a/technic/textures/technic_carbon_plate.png b/technic/textures/technic_carbon_plate.png index 5da83b88..360ab9bf 100644 Binary files a/technic/textures/technic_carbon_plate.png and b/technic/textures/technic_carbon_plate.png differ diff --git a/technic/textures/technic_carbon_steel_dust.png b/technic/textures/technic_carbon_steel_dust.png index 0fa8a17e..11110685 100644 Binary files a/technic/textures/technic_carbon_steel_dust.png and b/technic/textures/technic_carbon_steel_dust.png differ diff --git a/technic/textures/technic_cast_iron_dust.png b/technic/textures/technic_cast_iron_dust.png index b5690ace..c5c50e4d 100644 Binary files a/technic/textures/technic_cast_iron_dust.png and b/technic/textures/technic_cast_iron_dust.png differ diff --git a/technic/textures/technic_chainsaw.png b/technic/textures/technic_chainsaw.png index 1a69893c..dbb65814 100644 Binary files a/technic/textures/technic_chainsaw.png and b/technic/textures/technic_chainsaw.png differ diff --git a/technic/textures/technic_chernobylite_dust.png b/technic/textures/technic_chernobylite_dust.png index 6f36bf67..70982b31 100644 Binary files a/technic/textures/technic_chernobylite_dust.png and b/technic/textures/technic_chernobylite_dust.png differ diff --git a/technic/textures/technic_chromium_dust.png b/technic/textures/technic_chromium_dust.png index 0e48069c..7af7a9e1 100644 Binary files a/technic/textures/technic_chromium_dust.png and b/technic/textures/technic_chromium_dust.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_bottom.png b/technic/textures/technic_coal_alloy_furnace_bottom.png index 077dec5d..972848cb 100644 Binary files a/technic/textures/technic_coal_alloy_furnace_bottom.png and b/technic/textures/technic_coal_alloy_furnace_bottom.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_front.png b/technic/textures/technic_coal_alloy_furnace_front.png index d9d93dd0..2ae2ee42 100644 Binary files a/technic/textures/technic_coal_alloy_furnace_front.png and b/technic/textures/technic_coal_alloy_furnace_front.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_front_active.png b/technic/textures/technic_coal_alloy_furnace_front_active.png index ffc4e0ae..16db883a 100644 Binary files a/technic/textures/technic_coal_alloy_furnace_front_active.png and b/technic/textures/technic_coal_alloy_furnace_front_active.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_side.png b/technic/textures/technic_coal_alloy_furnace_side.png index d5c70660..0922b91e 100644 Binary files a/technic/textures/technic_coal_alloy_furnace_side.png and b/technic/textures/technic_coal_alloy_furnace_side.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_top.png b/technic/textures/technic_coal_alloy_furnace_top.png index 6424fc07..0922b91e 100644 Binary files a/technic/textures/technic_coal_alloy_furnace_top.png and b/technic/textures/technic_coal_alloy_furnace_top.png differ diff --git a/technic/textures/technic_coal_dust.png b/technic/textures/technic_coal_dust.png index a1486c6e..a749a513 100644 Binary files a/technic/textures/technic_coal_dust.png and b/technic/textures/technic_coal_dust.png differ diff --git a/technic/textures/technic_common_tree_grindings.png b/technic/textures/technic_common_tree_grindings.png index e17bb695..88efee6c 100644 Binary files a/technic/textures/technic_common_tree_grindings.png and b/technic/textures/technic_common_tree_grindings.png differ diff --git a/technic/textures/technic_composite_plate.png b/technic/textures/technic_composite_plate.png index 79b7b8d9..e5673b01 100644 Binary files a/technic/textures/technic_composite_plate.png and b/technic/textures/technic_composite_plate.png differ diff --git a/technic/textures/technic_constructor_back.png b/technic/textures/technic_constructor_back.png index f002363b..4311b2d0 100644 Binary files a/technic/textures/technic_constructor_back.png and b/technic/textures/technic_constructor_back.png differ diff --git a/technic/textures/technic_constructor_front_off.png b/technic/textures/technic_constructor_front_off.png index f3f7856d..0a7af8ce 100644 Binary files a/technic/textures/technic_constructor_front_off.png and b/technic/textures/technic_constructor_front_off.png differ diff --git a/technic/textures/technic_constructor_front_on.png b/technic/textures/technic_constructor_front_on.png index d7337650..9716a4a2 100644 Binary files a/technic/textures/technic_constructor_front_on.png and b/technic/textures/technic_constructor_front_on.png differ diff --git a/technic/textures/technic_constructor_mk1_bottom_off.png b/technic/textures/technic_constructor_mk1_bottom_off.png index 0c525578..f3c5bee6 100644 Binary files a/technic/textures/technic_constructor_mk1_bottom_off.png and b/technic/textures/technic_constructor_mk1_bottom_off.png differ diff --git a/technic/textures/technic_constructor_mk1_bottom_on.png b/technic/textures/technic_constructor_mk1_bottom_on.png index 0c46c57b..6164f939 100644 Binary files a/technic/textures/technic_constructor_mk1_bottom_on.png and b/technic/textures/technic_constructor_mk1_bottom_on.png differ diff --git a/technic/textures/technic_constructor_mk1_side1_off.png b/technic/textures/technic_constructor_mk1_side1_off.png index e64ddbe9..74484704 100644 Binary files a/technic/textures/technic_constructor_mk1_side1_off.png and b/technic/textures/technic_constructor_mk1_side1_off.png differ diff --git a/technic/textures/technic_constructor_mk1_side1_on.png b/technic/textures/technic_constructor_mk1_side1_on.png index eda98d8a..8cf88cb9 100644 Binary files a/technic/textures/technic_constructor_mk1_side1_on.png and b/technic/textures/technic_constructor_mk1_side1_on.png differ diff --git a/technic/textures/technic_constructor_mk1_side2_off.png b/technic/textures/technic_constructor_mk1_side2_off.png index b33fcfb5..2a49fe7b 100644 Binary files a/technic/textures/technic_constructor_mk1_side2_off.png and b/technic/textures/technic_constructor_mk1_side2_off.png differ diff --git a/technic/textures/technic_constructor_mk1_side2_on.png b/technic/textures/technic_constructor_mk1_side2_on.png index 17e4786f..533bb427 100644 Binary files a/technic/textures/technic_constructor_mk1_side2_on.png and b/technic/textures/technic_constructor_mk1_side2_on.png differ diff --git a/technic/textures/technic_constructor_mk1_top_off.png b/technic/textures/technic_constructor_mk1_top_off.png index 9f3846c5..2e52f5a3 100644 Binary files a/technic/textures/technic_constructor_mk1_top_off.png and b/technic/textures/technic_constructor_mk1_top_off.png differ diff --git a/technic/textures/technic_constructor_mk1_top_on.png b/technic/textures/technic_constructor_mk1_top_on.png index 5c8d6fb1..e6d63e33 100644 Binary files a/technic/textures/technic_constructor_mk1_top_on.png and b/technic/textures/technic_constructor_mk1_top_on.png differ diff --git a/technic/textures/technic_constructor_mk2_bottom_off.png b/technic/textures/technic_constructor_mk2_bottom_off.png index e926ddac..f2d56b36 100644 Binary files a/technic/textures/technic_constructor_mk2_bottom_off.png and b/technic/textures/technic_constructor_mk2_bottom_off.png differ diff --git a/technic/textures/technic_constructor_mk2_bottom_on.png b/technic/textures/technic_constructor_mk2_bottom_on.png index 52d739bf..192f3125 100644 Binary files a/technic/textures/technic_constructor_mk2_bottom_on.png and b/technic/textures/technic_constructor_mk2_bottom_on.png differ diff --git a/technic/textures/technic_constructor_mk2_side1_off.png b/technic/textures/technic_constructor_mk2_side1_off.png index 2fd42a2f..6a11afbf 100644 Binary files a/technic/textures/technic_constructor_mk2_side1_off.png and b/technic/textures/technic_constructor_mk2_side1_off.png differ diff --git a/technic/textures/technic_constructor_mk2_side1_on.png b/technic/textures/technic_constructor_mk2_side1_on.png index 4c75c832..af2a16da 100644 Binary files a/technic/textures/technic_constructor_mk2_side1_on.png and b/technic/textures/technic_constructor_mk2_side1_on.png differ diff --git a/technic/textures/technic_constructor_mk2_side2_off.png b/technic/textures/technic_constructor_mk2_side2_off.png index f6407e78..d216eb1f 100644 Binary files a/technic/textures/technic_constructor_mk2_side2_off.png and b/technic/textures/technic_constructor_mk2_side2_off.png differ diff --git a/technic/textures/technic_constructor_mk2_side2_on.png b/technic/textures/technic_constructor_mk2_side2_on.png index e40db489..4bb0e4cb 100644 Binary files a/technic/textures/technic_constructor_mk2_side2_on.png and b/technic/textures/technic_constructor_mk2_side2_on.png differ diff --git a/technic/textures/technic_constructor_mk2_top_off.png b/technic/textures/technic_constructor_mk2_top_off.png index e5227d1d..ec003d76 100644 Binary files a/technic/textures/technic_constructor_mk2_top_off.png and b/technic/textures/technic_constructor_mk2_top_off.png differ diff --git a/technic/textures/technic_constructor_mk2_top_on.png b/technic/textures/technic_constructor_mk2_top_on.png index 9762bd6b..ea9e4e0c 100644 Binary files a/technic/textures/technic_constructor_mk2_top_on.png and b/technic/textures/technic_constructor_mk2_top_on.png differ diff --git a/technic/textures/technic_constructor_mk3_bottom_off.png b/technic/textures/technic_constructor_mk3_bottom_off.png index 606d97e2..9f4fc554 100644 Binary files a/technic/textures/technic_constructor_mk3_bottom_off.png and b/technic/textures/technic_constructor_mk3_bottom_off.png differ diff --git a/technic/textures/technic_constructor_mk3_bottom_on.png b/technic/textures/technic_constructor_mk3_bottom_on.png index 878e4ff7..316aa93b 100644 Binary files a/technic/textures/technic_constructor_mk3_bottom_on.png and b/technic/textures/technic_constructor_mk3_bottom_on.png differ diff --git a/technic/textures/technic_constructor_mk3_side1_off.png b/technic/textures/technic_constructor_mk3_side1_off.png index 84dd7eb7..a39c4155 100644 Binary files a/technic/textures/technic_constructor_mk3_side1_off.png and b/technic/textures/technic_constructor_mk3_side1_off.png differ diff --git a/technic/textures/technic_constructor_mk3_side1_on.png b/technic/textures/technic_constructor_mk3_side1_on.png index 2741d2d1..f8b57b6e 100644 Binary files a/technic/textures/technic_constructor_mk3_side1_on.png and b/technic/textures/technic_constructor_mk3_side1_on.png differ diff --git a/technic/textures/technic_constructor_mk3_side2_off.png b/technic/textures/technic_constructor_mk3_side2_off.png index 75a50318..7b7385ec 100644 Binary files a/technic/textures/technic_constructor_mk3_side2_off.png and b/technic/textures/technic_constructor_mk3_side2_off.png differ diff --git a/technic/textures/technic_constructor_mk3_side2_on.png b/technic/textures/technic_constructor_mk3_side2_on.png index 0a150edf..a9122d6c 100644 Binary files a/technic/textures/technic_constructor_mk3_side2_on.png and b/technic/textures/technic_constructor_mk3_side2_on.png differ diff --git a/technic/textures/technic_constructor_mk3_top_off.png b/technic/textures/technic_constructor_mk3_top_off.png index c7167528..35f8a5dd 100644 Binary files a/technic/textures/technic_constructor_mk3_top_off.png and b/technic/textures/technic_constructor_mk3_top_off.png differ diff --git a/technic/textures/technic_constructor_mk3_top_on.png b/technic/textures/technic_constructor_mk3_top_on.png index acbe85b7..0fad0e95 100644 Binary files a/technic/textures/technic_constructor_mk3_top_on.png and b/technic/textures/technic_constructor_mk3_top_on.png differ diff --git a/technic/textures/technic_control_logic_unit.png b/technic/textures/technic_control_logic_unit.png index c7b4b16b..c069f95c 100644 Binary files a/technic/textures/technic_control_logic_unit.png and b/technic/textures/technic_control_logic_unit.png differ diff --git a/technic/textures/technic_copper_coil.png b/technic/textures/technic_copper_coil.png index db6db1a0..4cfced92 100644 Binary files a/technic/textures/technic_copper_coil.png and b/technic/textures/technic_copper_coil.png differ diff --git a/technic/textures/technic_copper_dust.png b/technic/textures/technic_copper_dust.png index cad33ea1..9a9c7363 100644 Binary files a/technic/textures/technic_copper_dust.png and b/technic/textures/technic_copper_dust.png differ diff --git a/technic/textures/technic_copper_plate.png b/technic/textures/technic_copper_plate.png index 99a49c82..bacb4b64 100644 Binary files a/technic/textures/technic_copper_plate.png and b/technic/textures/technic_copper_plate.png differ diff --git a/technic/textures/technic_corium_flowing_animated.png b/technic/textures/technic_corium_flowing_animated.png index 1d29f166..75b163b4 100644 Binary files a/technic/textures/technic_corium_flowing_animated.png and b/technic/textures/technic_corium_flowing_animated.png differ diff --git a/technic/textures/technic_corium_source_animated.png b/technic/textures/technic_corium_source_animated.png index 6c3ee560..86b79849 100644 Binary files a/technic/textures/technic_corium_source_animated.png and b/technic/textures/technic_corium_source_animated.png differ diff --git a/technic/textures/technic_deployer_back.png b/technic/textures/technic_deployer_back.png index 12e5a31b..4e08be38 100644 Binary files a/technic/textures/technic_deployer_back.png and b/technic/textures/technic_deployer_back.png differ diff --git a/technic/textures/technic_deployer_bottom.png b/technic/textures/technic_deployer_bottom.png index febbe186..dcea355e 100644 Binary files a/technic/textures/technic_deployer_bottom.png and b/technic/textures/technic_deployer_bottom.png differ diff --git a/technic/textures/technic_deployer_front_off.png b/technic/textures/technic_deployer_front_off.png index 95931124..4d8c64fe 100644 Binary files a/technic/textures/technic_deployer_front_off.png and b/technic/textures/technic_deployer_front_off.png differ diff --git a/technic/textures/technic_deployer_front_on.png b/technic/textures/technic_deployer_front_on.png index f78de4cd..dfed63c6 100644 Binary files a/technic/textures/technic_deployer_front_on.png and b/technic/textures/technic_deployer_front_on.png differ diff --git a/technic/textures/technic_deployer_side.png b/technic/textures/technic_deployer_side.png index 73af8f83..d0d50506 100644 Binary files a/technic/textures/technic_deployer_side.png and b/technic/textures/technic_deployer_side.png differ diff --git a/technic/textures/technic_deployer_side1.png b/technic/textures/technic_deployer_side1.png index 8ef28d3a..d0d50506 100644 Binary files a/technic/textures/technic_deployer_side1.png and b/technic/textures/technic_deployer_side1.png differ diff --git a/technic/textures/technic_deployer_side2.png b/technic/textures/technic_deployer_side2.png index ccb2cb9e..4b0dcc4f 100644 Binary files a/technic/textures/technic_deployer_side2.png and b/technic/textures/technic_deployer_side2.png differ diff --git a/technic/textures/technic_deployer_top.png b/technic/textures/technic_deployer_top.png index 262c9f6e..898e3d3b 100644 Binary files a/technic/textures/technic_deployer_top.png and b/technic/textures/technic_deployer_top.png differ diff --git a/technic/textures/technic_diamond_block_blue.png b/technic/textures/technic_diamond_block_blue.png index 9f59fbad..c895d89d 100644 Binary files a/technic/textures/technic_diamond_block_blue.png and b/technic/textures/technic_diamond_block_blue.png differ diff --git a/technic/textures/technic_diamond_block_green.png b/technic/textures/technic_diamond_block_green.png index 585c4b82..bec382fc 100644 Binary files a/technic/textures/technic_diamond_block_green.png and b/technic/textures/technic_diamond_block_green.png differ diff --git a/technic/textures/technic_diamond_block_red.png b/technic/textures/technic_diamond_block_red.png index ed309574..71ad63ad 100644 Binary files a/technic/textures/technic_diamond_block_red.png and b/technic/textures/technic_diamond_block_red.png differ diff --git a/technic/textures/technic_diamond_drill_head.png b/technic/textures/technic_diamond_drill_head.png index e3d31e8e..8e1319f3 100644 Binary files a/technic/textures/technic_diamond_drill_head.png and b/technic/textures/technic_diamond_drill_head.png differ diff --git a/technic/textures/technic_doped_silicon_wafer.png b/technic/textures/technic_doped_silicon_wafer.png index 63651372..31cc3c59 100644 Binary files a/technic/textures/technic_doped_silicon_wafer.png and b/technic/textures/technic_doped_silicon_wafer.png differ diff --git a/technic/textures/technic_flashlight.png b/technic/textures/technic_flashlight.png index 8e7b75ad..4339ba73 100644 Binary files a/technic/textures/technic_flashlight.png and b/technic/textures/technic_flashlight.png differ diff --git a/technic/textures/technic_forcefield_animated.png b/technic/textures/technic_forcefield_animated.png index 7763840c..d5b0488d 100644 Binary files a/technic/textures/technic_forcefield_animated.png and b/technic/textures/technic_forcefield_animated.png differ diff --git a/technic/textures/technic_forcefield_emitter_off.png b/technic/textures/technic_forcefield_emitter_off.png index 4c4582f9..75f05c3a 100644 Binary files a/technic/textures/technic_forcefield_emitter_off.png and b/technic/textures/technic_forcefield_emitter_off.png differ diff --git a/technic/textures/technic_forcefield_emitter_on.png b/technic/textures/technic_forcefield_emitter_on.png index 1f32af69..2496046d 100644 Binary files a/technic/textures/technic_forcefield_emitter_on.png and b/technic/textures/technic_forcefield_emitter_on.png differ diff --git a/technic/textures/technic_frame.png b/technic/textures/technic_frame.png index 49981202..49073627 100644 Binary files a/technic/textures/technic_frame.png and b/technic/textures/technic_frame.png differ diff --git a/technic/textures/technic_geothermal_side.png b/technic/textures/technic_geothermal_side.png index 90fb4305..efaf9a9a 100644 Binary files a/technic/textures/technic_geothermal_side.png and b/technic/textures/technic_geothermal_side.png differ diff --git a/technic/textures/technic_geothermal_top.png b/technic/textures/technic_geothermal_top.png index 601ff15f..66300a34 100644 Binary files a/technic/textures/technic_geothermal_top.png and b/technic/textures/technic_geothermal_top.png differ diff --git a/technic/textures/technic_geothermal_top_active.png b/technic/textures/technic_geothermal_top_active.png index f02bec60..cc62e9f5 100644 Binary files a/technic/textures/technic_geothermal_top_active.png and b/technic/textures/technic_geothermal_top_active.png differ diff --git a/technic/textures/technic_gold_dust.png b/technic/textures/technic_gold_dust.png index 48c24aea..ff5b7637 100644 Binary files a/technic/textures/technic_gold_dust.png and b/technic/textures/technic_gold_dust.png differ diff --git a/technic/textures/technic_graphite.png b/technic/textures/technic_graphite.png index 00cd0ee7..9bad9d62 100644 Binary files a/technic/textures/technic_graphite.png and b/technic/textures/technic_graphite.png differ diff --git a/technic/textures/technic_grinder_front.png b/technic/textures/technic_grinder_front.png index a28dbc14..328fa584 100644 Binary files a/technic/textures/technic_grinder_front.png and b/technic/textures/technic_grinder_front.png differ diff --git a/technic/textures/technic_grinder_side.png b/technic/textures/technic_grinder_side.png index af562f26..3bd679cb 100644 Binary files a/technic/textures/technic_grinder_side.png and b/technic/textures/technic_grinder_side.png differ diff --git a/technic/textures/technic_grinder_top.png b/technic/textures/technic_grinder_top.png index b074e134..eb6f4bcb 100644 Binary files a/technic/textures/technic_grinder_top.png and b/technic/textures/technic_grinder_top.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_white_sides.png b/technic/textures/technic_homedecor_glowlight_cube_white_sides.png index 91219991..79dbc839 100644 Binary files a/technic/textures/technic_homedecor_glowlight_cube_white_sides.png and b/technic/textures/technic_homedecor_glowlight_cube_white_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png b/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png index c8006eb3..3ef2c375 100644 Binary files a/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png and b/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_white_tb.png b/technic/textures/technic_homedecor_glowlight_cube_white_tb.png index b2e355ac..3aa2387d 100644 Binary files a/technic/textures/technic_homedecor_glowlight_cube_white_tb.png and b/technic/textures/technic_homedecor_glowlight_cube_white_tb.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png index b79be077..d3f3a920 100644 Binary files a/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png and b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png index a9d397af..fd4cba13 100644 Binary files a/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png and b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png b/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png index daf03ab4..4e08210b 100644 Binary files a/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png and b/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_white_sides.png b/technic/textures/technic_homedecor_glowlight_thick_white_sides.png index 44c2b360..2f45cc50 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thick_white_sides.png and b/technic/textures/technic_homedecor_glowlight_thick_white_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png index 937999ea..184cd129 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png and b/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png b/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png index 769b0548..8657625f 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png and b/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png index 57820f10..e810d146 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png and b/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_white_sides.png b/technic/textures/technic_homedecor_glowlight_thin_white_sides.png index 0a337a56..c256a2a5 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thin_white_sides.png and b/technic/textures/technic_homedecor_glowlight_thin_white_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png index 0fd3b1ef..14355131 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png and b/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png b/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png index 55bb6c06..b447d285 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png and b/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png index 4b28a27c..1fe335a4 100644 Binary files a/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png and b/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_white_tb.png b/technic/textures/technic_homedecor_glowlight_white_tb.png index fdc8a4d6..f1def033 100644 Binary files a/technic/textures/technic_homedecor_glowlight_white_tb.png and b/technic/textures/technic_homedecor_glowlight_white_tb.png differ diff --git a/technic/textures/technic_homedecor_glowlight_yellow_tb.png b/technic/textures/technic_homedecor_glowlight_yellow_tb.png index ffd9c58a..fec3aa55 100644 Binary files a/technic/textures/technic_homedecor_glowlight_yellow_tb.png and b/technic/textures/technic_homedecor_glowlight_yellow_tb.png differ diff --git a/technic/textures/technic_hv_battery_box_bottom.png b/technic/textures/technic_hv_battery_box_bottom.png index 940dcdb2..b7ab466f 100644 Binary files a/technic/textures/technic_hv_battery_box_bottom.png and b/technic/textures/technic_hv_battery_box_bottom.png differ diff --git a/technic/textures/technic_hv_battery_box_front.png b/technic/textures/technic_hv_battery_box_front.png index 6f23439b..d444e5df 100644 Binary files a/technic/textures/technic_hv_battery_box_front.png and b/technic/textures/technic_hv_battery_box_front.png differ diff --git a/technic/textures/technic_hv_battery_box_side.png b/technic/textures/technic_hv_battery_box_side.png index 3e99d8cc..3cb5faba 100644 Binary files a/technic/textures/technic_hv_battery_box_side.png and b/technic/textures/technic_hv_battery_box_side.png differ diff --git a/technic/textures/technic_hv_battery_box_top.png b/technic/textures/technic_hv_battery_box_top.png index aa6fdb69..d0a77d57 100644 Binary files a/technic/textures/technic_hv_battery_box_top.png and b/technic/textures/technic_hv_battery_box_top.png differ diff --git a/technic/textures/technic_hv_cable.png b/technic/textures/technic_hv_cable.png index 7cb368d4..33013cf4 100644 Binary files a/technic/textures/technic_hv_cable.png and b/technic/textures/technic_hv_cable.png differ diff --git a/technic/textures/technic_hv_cable_wield.png b/technic/textures/technic_hv_cable_wield.png index 7b9ca588..6504436a 100644 Binary files a/technic/textures/technic_hv_cable_wield.png and b/technic/textures/technic_hv_cable_wield.png differ diff --git a/technic/textures/technic_hv_down_converter_bottom.png b/technic/textures/technic_hv_down_converter_bottom.png index 996b2d4c..fcf0cde8 100644 Binary files a/technic/textures/technic_hv_down_converter_bottom.png and b/technic/textures/technic_hv_down_converter_bottom.png differ diff --git a/technic/textures/technic_hv_down_converter_side.png b/technic/textures/technic_hv_down_converter_side.png index ab904f1c..a4b66530 100644 Binary files a/technic/textures/technic_hv_down_converter_side.png and b/technic/textures/technic_hv_down_converter_side.png differ diff --git a/technic/textures/technic_hv_down_converter_top.png b/technic/textures/technic_hv_down_converter_top.png index 996b2d4c..fcf0cde8 100644 Binary files a/technic/textures/technic_hv_down_converter_top.png and b/technic/textures/technic_hv_down_converter_top.png differ diff --git a/technic/textures/technic_hv_generator_front.png b/technic/textures/technic_hv_generator_front.png index 6a146866..4f38ff68 100644 Binary files a/technic/textures/technic_hv_generator_front.png and b/technic/textures/technic_hv_generator_front.png differ diff --git a/technic/textures/technic_hv_generator_front_active.png b/technic/textures/technic_hv_generator_front_active.png index d92c6999..9384ca33 100644 Binary files a/technic/textures/technic_hv_generator_front_active.png and b/technic/textures/technic_hv_generator_front_active.png differ diff --git a/technic/textures/technic_hv_generator_side.png b/technic/textures/technic_hv_generator_side.png index 3073e0f6..dde49a84 100644 Binary files a/technic/textures/technic_hv_generator_side.png and b/technic/textures/technic_hv_generator_side.png differ diff --git a/technic/textures/technic_hv_generator_top.png b/technic/textures/technic_hv_generator_top.png index 646168cb..0e32f388 100644 Binary files a/technic/textures/technic_hv_generator_top.png and b/technic/textures/technic_hv_generator_top.png differ diff --git a/technic/textures/technic_hv_grinder_bottom.png b/technic/textures/technic_hv_grinder_bottom.png index fa2c135a..0830531e 100644 Binary files a/technic/textures/technic_hv_grinder_bottom.png and b/technic/textures/technic_hv_grinder_bottom.png differ diff --git a/technic/textures/technic_hv_grinder_front.png b/technic/textures/technic_hv_grinder_front.png index a5bca0a0..d52815d4 100644 Binary files a/technic/textures/technic_hv_grinder_front.png and b/technic/textures/technic_hv_grinder_front.png differ diff --git a/technic/textures/technic_hv_grinder_front_active.png b/technic/textures/technic_hv_grinder_front_active.png index 40776302..f807e5d7 100644 Binary files a/technic/textures/technic_hv_grinder_front_active.png and b/technic/textures/technic_hv_grinder_front_active.png differ diff --git a/technic/textures/technic_hv_grinder_side.png b/technic/textures/technic_hv_grinder_side.png index c3063c43..d85cb140 100644 Binary files a/technic/textures/technic_hv_grinder_side.png and b/technic/textures/technic_hv_grinder_side.png differ diff --git a/technic/textures/technic_hv_grinder_side_tube.png b/technic/textures/technic_hv_grinder_side_tube.png index 43bcca50..00f83043 100644 Binary files a/technic/textures/technic_hv_grinder_side_tube.png and b/technic/textures/technic_hv_grinder_side_tube.png differ diff --git a/technic/textures/technic_hv_grinder_top.png b/technic/textures/technic_hv_grinder_top.png index e0df36b1..e66befcf 100644 Binary files a/technic/textures/technic_hv_grinder_top.png and b/technic/textures/technic_hv_grinder_top.png differ diff --git a/technic/textures/technic_hv_nuclear_reactor_core.png b/technic/textures/technic_hv_nuclear_reactor_core.png index 4661177a..05baf76d 100644 Binary files a/technic/textures/technic_hv_nuclear_reactor_core.png and b/technic/textures/technic_hv_nuclear_reactor_core.png differ diff --git a/technic/textures/technic_hv_solar_array_bottom.png b/technic/textures/technic_hv_solar_array_bottom.png index 596e79a3..567e4af1 100644 Binary files a/technic/textures/technic_hv_solar_array_bottom.png and b/technic/textures/technic_hv_solar_array_bottom.png differ diff --git a/technic/textures/technic_hv_solar_array_side.png b/technic/textures/technic_hv_solar_array_side.png index a3aa8c72..7d3115d1 100644 Binary files a/technic/textures/technic_hv_solar_array_side.png and b/technic/textures/technic_hv_solar_array_side.png differ diff --git a/technic/textures/technic_hv_solar_array_top.png b/technic/textures/technic_hv_solar_array_top.png index b7f0b43e..58fcd729 100644 Binary files a/technic/textures/technic_hv_solar_array_top.png and b/technic/textures/technic_hv_solar_array_top.png differ diff --git a/technic/textures/technic_hv_transformer.png b/technic/textures/technic_hv_transformer.png index e1d4c98a..266be64f 100644 Binary files a/technic/textures/technic_hv_transformer.png and b/technic/textures/technic_hv_transformer.png differ diff --git a/technic/textures/technic_hydro_turbine_side.png b/technic/textures/technic_hydro_turbine_side.png index eeb5ab2a..13e88a0f 100644 Binary files a/technic/textures/technic_hydro_turbine_side.png and b/technic/textures/technic_hydro_turbine_side.png differ diff --git a/technic/textures/technic_hydro_turbine_top.png b/technic/textures/technic_hydro_turbine_top.png index e04533f6..5ac055aa 100644 Binary files a/technic/textures/technic_hydro_turbine_top.png and b/technic/textures/technic_hydro_turbine_top.png differ diff --git a/technic/textures/technic_hydro_turbine_top_active.png b/technic/textures/technic_hydro_turbine_top_active.png index 54ff90ff..5c15b104 100644 Binary files a/technic/textures/technic_hydro_turbine_top_active.png and b/technic/textures/technic_hydro_turbine_top_active.png differ diff --git a/technic/textures/technic_injector_bottom.png b/technic/textures/technic_injector_bottom.png index 39916bd2..b5ea7157 100644 Binary files a/technic/textures/technic_injector_bottom.png and b/technic/textures/technic_injector_bottom.png differ diff --git a/technic/textures/technic_injector_side.png b/technic/textures/technic_injector_side.png index a5419a14..0144fe8e 100644 Binary files a/technic/textures/technic_injector_side.png and b/technic/textures/technic_injector_side.png differ diff --git a/technic/textures/technic_injector_top.png b/technic/textures/technic_injector_top.png index 440649ce..94c689f1 100644 Binary files a/technic/textures/technic_injector_top.png and b/technic/textures/technic_injector_top.png differ diff --git a/technic/textures/technic_kalite_dust.png b/technic/textures/technic_kalite_dust.png index 3a9e10fa..043bcc79 100644 Binary files a/technic/textures/technic_kalite_dust.png and b/technic/textures/technic_kalite_dust.png differ diff --git a/technic/textures/technic_laser_beam_mk1.png b/technic/textures/technic_laser_beam_mk1.png index 4cf9b3ef..b001faf6 100644 Binary files a/technic/textures/technic_laser_beam_mk1.png and b/technic/textures/technic_laser_beam_mk1.png differ diff --git a/technic/textures/technic_laser_beam_mk2.png b/technic/textures/technic_laser_beam_mk2.png index 9e27a8c5..495ad0a8 100644 Binary files a/technic/textures/technic_laser_beam_mk2.png and b/technic/textures/technic_laser_beam_mk2.png differ diff --git a/technic/textures/technic_laser_beam_mk3.png b/technic/textures/technic_laser_beam_mk3.png index 5a17e83f..e57da47d 100644 Binary files a/technic/textures/technic_laser_beam_mk3.png and b/technic/textures/technic_laser_beam_mk3.png differ diff --git a/technic/textures/technic_lava_can.png b/technic/textures/technic_lava_can.png index abe1a8cf..f7e46e85 100644 Binary files a/technic/textures/technic_lava_can.png and b/technic/textures/technic_lava_can.png differ diff --git a/technic/textures/technic_light.png b/technic/textures/technic_light.png index 334cb078..4e6cc89a 100644 Binary files a/technic/textures/technic_light.png and b/technic/textures/technic_light.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_bottom.png b/technic/textures/technic_lv_alloy_furnace_bottom.png index 2c0aaee0..e4f06927 100644 Binary files a/technic/textures/technic_lv_alloy_furnace_bottom.png and b/technic/textures/technic_lv_alloy_furnace_bottom.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_front.png b/technic/textures/technic_lv_alloy_furnace_front.png index 2d65cda5..91497676 100644 Binary files a/technic/textures/technic_lv_alloy_furnace_front.png and b/technic/textures/technic_lv_alloy_furnace_front.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_front_active.png b/technic/textures/technic_lv_alloy_furnace_front_active.png index 1ced9891..4ae04859 100644 Binary files a/technic/textures/technic_lv_alloy_furnace_front_active.png and b/technic/textures/technic_lv_alloy_furnace_front_active.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_side.png b/technic/textures/technic_lv_alloy_furnace_side.png index 778ad885..db9dbbf1 100644 Binary files a/technic/textures/technic_lv_alloy_furnace_side.png and b/technic/textures/technic_lv_alloy_furnace_side.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_top.png b/technic/textures/technic_lv_alloy_furnace_top.png index 706793bb..a78af22a 100644 Binary files a/technic/textures/technic_lv_alloy_furnace_top.png and b/technic/textures/technic_lv_alloy_furnace_top.png differ diff --git a/technic/textures/technic_lv_battery_box_bottom.png b/technic/textures/technic_lv_battery_box_bottom.png index 0894d5fd..36ac5638 100644 Binary files a/technic/textures/technic_lv_battery_box_bottom.png and b/technic/textures/technic_lv_battery_box_bottom.png differ diff --git a/technic/textures/technic_lv_battery_box_side.png b/technic/textures/technic_lv_battery_box_side.png index 4d435aca..6b4b6976 100644 Binary files a/technic/textures/technic_lv_battery_box_side.png and b/technic/textures/technic_lv_battery_box_side.png differ diff --git a/technic/textures/technic_lv_battery_box_top.png b/technic/textures/technic_lv_battery_box_top.png index 6050ad0c..4a77ccbb 100644 Binary files a/technic/textures/technic_lv_battery_box_top.png and b/technic/textures/technic_lv_battery_box_top.png differ diff --git a/technic/textures/technic_lv_cable.png b/technic/textures/technic_lv_cable.png index 0071bc97..8effaebc 100644 Binary files a/technic/textures/technic_lv_cable.png and b/technic/textures/technic_lv_cable.png differ diff --git a/technic/textures/technic_lv_cable_wield.png b/technic/textures/technic_lv_cable_wield.png index bc7704dc..9eaff6a3 100644 Binary files a/technic/textures/technic_lv_cable_wield.png and b/technic/textures/technic_lv_cable_wield.png differ diff --git a/technic/textures/technic_lv_compressor_back.png b/technic/textures/technic_lv_compressor_back.png index 11286e3b..5f7b8e94 100644 Binary files a/technic/textures/technic_lv_compressor_back.png and b/technic/textures/technic_lv_compressor_back.png differ diff --git a/technic/textures/technic_lv_compressor_bottom.png b/technic/textures/technic_lv_compressor_bottom.png index 886f27e7..3f0c5da8 100644 Binary files a/technic/textures/technic_lv_compressor_bottom.png and b/technic/textures/technic_lv_compressor_bottom.png differ diff --git a/technic/textures/technic_lv_compressor_front.png b/technic/textures/technic_lv_compressor_front.png index 007d6de5..4fe9a7a4 100644 Binary files a/technic/textures/technic_lv_compressor_front.png and b/technic/textures/technic_lv_compressor_front.png differ diff --git a/technic/textures/technic_lv_compressor_front_active.png b/technic/textures/technic_lv_compressor_front_active.png index b3d27c01..b66309d4 100644 Binary files a/technic/textures/technic_lv_compressor_front_active.png and b/technic/textures/technic_lv_compressor_front_active.png differ diff --git a/technic/textures/technic_lv_compressor_side.png b/technic/textures/technic_lv_compressor_side.png index 87acda66..5f7b8e94 100644 Binary files a/technic/textures/technic_lv_compressor_side.png and b/technic/textures/technic_lv_compressor_side.png differ diff --git a/technic/textures/technic_lv_compressor_top.png b/technic/textures/technic_lv_compressor_top.png index 786b859d..6f233c11 100644 Binary files a/technic/textures/technic_lv_compressor_top.png and b/technic/textures/technic_lv_compressor_top.png differ diff --git a/technic/textures/technic_lv_electric_furnace_bottom.png b/technic/textures/technic_lv_electric_furnace_bottom.png index 15fa6def..2fa5406e 100644 Binary files a/technic/textures/technic_lv_electric_furnace_bottom.png and b/technic/textures/technic_lv_electric_furnace_bottom.png differ diff --git a/technic/textures/technic_lv_electric_furnace_front.png b/technic/textures/technic_lv_electric_furnace_front.png index 755aadf5..fb60a916 100644 Binary files a/technic/textures/technic_lv_electric_furnace_front.png and b/technic/textures/technic_lv_electric_furnace_front.png differ diff --git a/technic/textures/technic_lv_electric_furnace_front_active.png b/technic/textures/technic_lv_electric_furnace_front_active.png index de7f1f9d..fc347a7f 100644 Binary files a/technic/textures/technic_lv_electric_furnace_front_active.png and b/technic/textures/technic_lv_electric_furnace_front_active.png differ diff --git a/technic/textures/technic_lv_electric_furnace_side.png b/technic/textures/technic_lv_electric_furnace_side.png index 80cf742a..754ca206 100644 Binary files a/technic/textures/technic_lv_electric_furnace_side.png and b/technic/textures/technic_lv_electric_furnace_side.png differ diff --git a/technic/textures/technic_lv_electric_furnace_top.png b/technic/textures/technic_lv_electric_furnace_top.png index fbadd9ac..fad12963 100644 Binary files a/technic/textures/technic_lv_electric_furnace_top.png and b/technic/textures/technic_lv_electric_furnace_top.png differ diff --git a/technic/textures/technic_lv_extractor_bottom.png b/technic/textures/technic_lv_extractor_bottom.png index aecd7190..e4f06927 100644 Binary files a/technic/textures/technic_lv_extractor_bottom.png and b/technic/textures/technic_lv_extractor_bottom.png differ diff --git a/technic/textures/technic_lv_extractor_front.png b/technic/textures/technic_lv_extractor_front.png index 1bd7e9a6..68a165ff 100644 Binary files a/technic/textures/technic_lv_extractor_front.png and b/technic/textures/technic_lv_extractor_front.png differ diff --git a/technic/textures/technic_lv_extractor_front_active.png b/technic/textures/technic_lv_extractor_front_active.png index 7f8b30a3..4090e125 100644 Binary files a/technic/textures/technic_lv_extractor_front_active.png and b/technic/textures/technic_lv_extractor_front_active.png differ diff --git a/technic/textures/technic_lv_extractor_side.png b/technic/textures/technic_lv_extractor_side.png index 99d94861..72fc5ca8 100644 Binary files a/technic/textures/technic_lv_extractor_side.png and b/technic/textures/technic_lv_extractor_side.png differ diff --git a/technic/textures/technic_lv_extractor_top.png b/technic/textures/technic_lv_extractor_top.png index e7d9ff91..2b92cf3c 100644 Binary files a/technic/textures/technic_lv_extractor_top.png and b/technic/textures/technic_lv_extractor_top.png differ diff --git a/technic/textures/technic_lv_generator_front.png b/technic/textures/technic_lv_generator_front.png index 2d64844f..c4680816 100644 Binary files a/technic/textures/technic_lv_generator_front.png and b/technic/textures/technic_lv_generator_front.png differ diff --git a/technic/textures/technic_lv_generator_front_active.png b/technic/textures/technic_lv_generator_front_active.png index 4e57ca0b..a685f77d 100644 Binary files a/technic/textures/technic_lv_generator_front_active.png and b/technic/textures/technic_lv_generator_front_active.png differ diff --git a/technic/textures/technic_lv_generator_side.png b/technic/textures/technic_lv_generator_side.png index 5cbcbef8..b5d7c12c 100644 Binary files a/technic/textures/technic_lv_generator_side.png and b/technic/textures/technic_lv_generator_side.png differ diff --git a/technic/textures/technic_lv_generator_top.png b/technic/textures/technic_lv_generator_top.png index e2f3db3d..48c58870 100644 Binary files a/technic/textures/technic_lv_generator_top.png and b/technic/textures/technic_lv_generator_top.png differ diff --git a/technic/textures/technic_lv_grinder_bottom.png b/technic/textures/technic_lv_grinder_bottom.png index aecd7190..e4f06927 100644 Binary files a/technic/textures/technic_lv_grinder_bottom.png and b/technic/textures/technic_lv_grinder_bottom.png differ diff --git a/technic/textures/technic_lv_grinder_front.png b/technic/textures/technic_lv_grinder_front.png index 1bd7e9a6..68a165ff 100644 Binary files a/technic/textures/technic_lv_grinder_front.png and b/technic/textures/technic_lv_grinder_front.png differ diff --git a/technic/textures/technic_lv_grinder_front_active.png b/technic/textures/technic_lv_grinder_front_active.png index 7f8b30a3..4090e125 100644 Binary files a/technic/textures/technic_lv_grinder_front_active.png and b/technic/textures/technic_lv_grinder_front_active.png differ diff --git a/technic/textures/technic_lv_grinder_side.png b/technic/textures/technic_lv_grinder_side.png index 99d94861..72fc5ca8 100644 Binary files a/technic/textures/technic_lv_grinder_side.png and b/technic/textures/technic_lv_grinder_side.png differ diff --git a/technic/textures/technic_lv_grinder_top.png b/technic/textures/technic_lv_grinder_top.png index e7d9ff91..2b92cf3c 100644 Binary files a/technic/textures/technic_lv_grinder_top.png and b/technic/textures/technic_lv_grinder_top.png differ diff --git a/technic/textures/technic_lv_solar_array_bottom.png b/technic/textures/technic_lv_solar_array_bottom.png index 9e888e30..c031a8b4 100644 Binary files a/technic/textures/technic_lv_solar_array_bottom.png and b/technic/textures/technic_lv_solar_array_bottom.png differ diff --git a/technic/textures/technic_lv_solar_array_side.png b/technic/textures/technic_lv_solar_array_side.png index b22447ef..73b511cd 100644 Binary files a/technic/textures/technic_lv_solar_array_side.png and b/technic/textures/technic_lv_solar_array_side.png differ diff --git a/technic/textures/technic_lv_solar_array_top.png b/technic/textures/technic_lv_solar_array_top.png index cabd315d..bb1e1074 100644 Binary files a/technic/textures/technic_lv_solar_array_top.png and b/technic/textures/technic_lv_solar_array_top.png differ diff --git a/technic/textures/technic_lv_transformer.png b/technic/textures/technic_lv_transformer.png index 613b1962..7971a057 100644 Binary files a/technic/textures/technic_lv_transformer.png and b/technic/textures/technic_lv_transformer.png differ diff --git a/technic/textures/technic_machine_bottom.png b/technic/textures/technic_machine_bottom.png index 48a47b09..e4f06927 100644 Binary files a/technic/textures/technic_machine_bottom.png and b/technic/textures/technic_machine_bottom.png differ diff --git a/technic/textures/technic_machine_casing.png b/technic/textures/technic_machine_casing.png index d5967332..b6056207 100644 Binary files a/technic/textures/technic_machine_casing.png and b/technic/textures/technic_machine_casing.png differ diff --git a/technic/textures/technic_mining_drill.png b/technic/textures/technic_mining_drill.png index 171888db..f91fe377 100644 Binary files a/technic/textures/technic_mining_drill.png and b/technic/textures/technic_mining_drill.png differ diff --git a/technic/textures/technic_mining_drill_mk2.png b/technic/textures/technic_mining_drill_mk2.png index 30be719b..c1bf4f0d 100644 Binary files a/technic/textures/technic_mining_drill_mk2.png and b/technic/textures/technic_mining_drill_mk2.png differ diff --git a/technic/textures/technic_mining_drill_mk3.png b/technic/textures/technic_mining_drill_mk3.png index 30de896e..91e7f118 100644 Binary files a/technic/textures/technic_mining_drill_mk3.png and b/technic/textures/technic_mining_drill_mk3.png differ diff --git a/technic/textures/technic_mining_laser_mk1.png b/technic/textures/technic_mining_laser_mk1.png index 29faeb49..0e6e5cfb 100644 Binary files a/technic/textures/technic_mining_laser_mk1.png and b/technic/textures/technic_mining_laser_mk1.png differ diff --git a/technic/textures/technic_mining_laser_mk2.png b/technic/textures/technic_mining_laser_mk2.png index 2d67c0f5..47808c0c 100644 Binary files a/technic/textures/technic_mining_laser_mk2.png and b/technic/textures/technic_mining_laser_mk2.png differ diff --git a/technic/textures/technic_mining_laser_mk3.png b/technic/textures/technic_mining_laser_mk3.png index db9ee26a..c6aacda0 100644 Binary files a/technic/textures/technic_mining_laser_mk3.png and b/technic/textures/technic_mining_laser_mk3.png differ diff --git a/technic/textures/technic_mithril_dust.png b/technic/textures/technic_mithril_dust.png index adfbe6ca..aa2f0e03 100644 Binary files a/technic/textures/technic_mithril_dust.png and b/technic/textures/technic_mithril_dust.png differ diff --git a/technic/textures/technic_mixed_metal_ingot.png b/technic/textures/technic_mixed_metal_ingot.png index 8f6847bf..9973bf43 100644 Binary files a/technic/textures/technic_mixed_metal_ingot.png and b/technic/textures/technic_mixed_metal_ingot.png differ diff --git a/technic/textures/technic_music_player_bottom.png b/technic/textures/technic_music_player_bottom.png index bd8fd552..b738f1d7 100644 Binary files a/technic/textures/technic_music_player_bottom.png and b/technic/textures/technic_music_player_bottom.png differ diff --git a/technic/textures/technic_music_player_side.png b/technic/textures/technic_music_player_side.png index 6c34feaa..cc39c1c3 100644 Binary files a/technic/textures/technic_music_player_side.png and b/technic/textures/technic_music_player_side.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_bottom.png b/technic/textures/technic_mv_alloy_furnace_bottom.png index 2c0aaee0..e4f06927 100644 Binary files a/technic/textures/technic_mv_alloy_furnace_bottom.png and b/technic/textures/technic_mv_alloy_furnace_bottom.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_front.png b/technic/textures/technic_mv_alloy_furnace_front.png index a5dac824..f515cd35 100644 Binary files a/technic/textures/technic_mv_alloy_furnace_front.png and b/technic/textures/technic_mv_alloy_furnace_front.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_front_active.png b/technic/textures/technic_mv_alloy_furnace_front_active.png index f6e69a91..d7d24069 100644 Binary files a/technic/textures/technic_mv_alloy_furnace_front_active.png and b/technic/textures/technic_mv_alloy_furnace_front_active.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_side.png b/technic/textures/technic_mv_alloy_furnace_side.png index 04304794..51b35e29 100644 Binary files a/technic/textures/technic_mv_alloy_furnace_side.png and b/technic/textures/technic_mv_alloy_furnace_side.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_side_tube.png b/technic/textures/technic_mv_alloy_furnace_side_tube.png index 1800eed4..754ca206 100644 Binary files a/technic/textures/technic_mv_alloy_furnace_side_tube.png and b/technic/textures/technic_mv_alloy_furnace_side_tube.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_top.png b/technic/textures/technic_mv_alloy_furnace_top.png index f44e3c03..d33b6658 100644 Binary files a/technic/textures/technic_mv_alloy_furnace_top.png and b/technic/textures/technic_mv_alloy_furnace_top.png differ diff --git a/technic/textures/technic_mv_battery_box_bottom.png b/technic/textures/technic_mv_battery_box_bottom.png index 0894d5fd..36ac5638 100644 Binary files a/technic/textures/technic_mv_battery_box_bottom.png and b/technic/textures/technic_mv_battery_box_bottom.png differ diff --git a/technic/textures/technic_mv_battery_box_front.png b/technic/textures/technic_mv_battery_box_front.png index 63ed41c8..e027b263 100644 Binary files a/technic/textures/technic_mv_battery_box_front.png and b/technic/textures/technic_mv_battery_box_front.png differ diff --git a/technic/textures/technic_mv_battery_box_side.png b/technic/textures/technic_mv_battery_box_side.png index 2528ff89..75a95225 100644 Binary files a/technic/textures/technic_mv_battery_box_side.png and b/technic/textures/technic_mv_battery_box_side.png differ diff --git a/technic/textures/technic_mv_battery_box_top.png b/technic/textures/technic_mv_battery_box_top.png index 6050ad0c..4a77ccbb 100644 Binary files a/technic/textures/technic_mv_battery_box_top.png and b/technic/textures/technic_mv_battery_box_top.png differ diff --git a/technic/textures/technic_mv_cable.png b/technic/textures/technic_mv_cable.png index 2819d2be..bf791834 100644 Binary files a/technic/textures/technic_mv_cable.png and b/technic/textures/technic_mv_cable.png differ diff --git a/technic/textures/technic_mv_cable_wield.png b/technic/textures/technic_mv_cable_wield.png index 2d41e27d..16f253fc 100644 Binary files a/technic/textures/technic_mv_cable_wield.png and b/technic/textures/technic_mv_cable_wield.png differ diff --git a/technic/textures/technic_mv_centrifuge_bottom.png b/technic/textures/technic_mv_centrifuge_bottom.png index 6dcd40fd..602973a7 100644 Binary files a/technic/textures/technic_mv_centrifuge_bottom.png and b/technic/textures/technic_mv_centrifuge_bottom.png differ diff --git a/technic/textures/technic_mv_centrifuge_front.png b/technic/textures/technic_mv_centrifuge_front.png index e278a330..f4a0daea 100644 Binary files a/technic/textures/technic_mv_centrifuge_front.png and b/technic/textures/technic_mv_centrifuge_front.png differ diff --git a/technic/textures/technic_mv_centrifuge_front_active.png b/technic/textures/technic_mv_centrifuge_front_active.png index 4cef9123..9f1ccf44 100644 Binary files a/technic/textures/technic_mv_centrifuge_front_active.png and b/technic/textures/technic_mv_centrifuge_front_active.png differ diff --git a/technic/textures/technic_mv_centrifuge_side.png b/technic/textures/technic_mv_centrifuge_side.png index eeef44aa..76fe13f0 100644 Binary files a/technic/textures/technic_mv_centrifuge_side.png and b/technic/textures/technic_mv_centrifuge_side.png differ diff --git a/technic/textures/technic_mv_centrifuge_top.png b/technic/textures/technic_mv_centrifuge_top.png index 813bbf8d..4afa7a47 100644 Binary files a/technic/textures/technic_mv_centrifuge_top.png and b/technic/textures/technic_mv_centrifuge_top.png differ diff --git a/technic/textures/technic_mv_compressor_back.png b/technic/textures/technic_mv_compressor_back.png index 11286e3b..5f7b8e94 100644 Binary files a/technic/textures/technic_mv_compressor_back.png and b/technic/textures/technic_mv_compressor_back.png differ diff --git a/technic/textures/technic_mv_compressor_bottom.png b/technic/textures/technic_mv_compressor_bottom.png index 886f27e7..3f0c5da8 100644 Binary files a/technic/textures/technic_mv_compressor_bottom.png and b/technic/textures/technic_mv_compressor_bottom.png differ diff --git a/technic/textures/technic_mv_compressor_front.png b/technic/textures/technic_mv_compressor_front.png index 007d6de5..4fe9a7a4 100644 Binary files a/technic/textures/technic_mv_compressor_front.png and b/technic/textures/technic_mv_compressor_front.png differ diff --git a/technic/textures/technic_mv_compressor_front_active.png b/technic/textures/technic_mv_compressor_front_active.png index b3d27c01..b66309d4 100644 Binary files a/technic/textures/technic_mv_compressor_front_active.png and b/technic/textures/technic_mv_compressor_front_active.png differ diff --git a/technic/textures/technic_mv_compressor_side.png b/technic/textures/technic_mv_compressor_side.png index 87acda66..5f7b8e94 100644 Binary files a/technic/textures/technic_mv_compressor_side.png and b/technic/textures/technic_mv_compressor_side.png differ diff --git a/technic/textures/technic_mv_compressor_top.png b/technic/textures/technic_mv_compressor_top.png index 786b859d..6f233c11 100644 Binary files a/technic/textures/technic_mv_compressor_top.png and b/technic/textures/technic_mv_compressor_top.png differ diff --git a/technic/textures/technic_mv_down_converter_bottom.png b/technic/textures/technic_mv_down_converter_bottom.png index a6106604..e4f06927 100644 Binary files a/technic/textures/technic_mv_down_converter_bottom.png and b/technic/textures/technic_mv_down_converter_bottom.png differ diff --git a/technic/textures/technic_mv_down_converter_side.png b/technic/textures/technic_mv_down_converter_side.png index 6492d5c1..396a1237 100644 Binary files a/technic/textures/technic_mv_down_converter_side.png and b/technic/textures/technic_mv_down_converter_side.png differ diff --git a/technic/textures/technic_mv_down_converter_top.png b/technic/textures/technic_mv_down_converter_top.png index a6106604..e4f06927 100644 Binary files a/technic/textures/technic_mv_down_converter_top.png and b/technic/textures/technic_mv_down_converter_top.png differ diff --git a/technic/textures/technic_mv_electric_furnace_bottom.png b/technic/textures/technic_mv_electric_furnace_bottom.png index e2e445ee..2fa5406e 100644 Binary files a/technic/textures/technic_mv_electric_furnace_bottom.png and b/technic/textures/technic_mv_electric_furnace_bottom.png differ diff --git a/technic/textures/technic_mv_electric_furnace_front.png b/technic/textures/technic_mv_electric_furnace_front.png index 81c33cfa..fb60a916 100644 Binary files a/technic/textures/technic_mv_electric_furnace_front.png and b/technic/textures/technic_mv_electric_furnace_front.png differ diff --git a/technic/textures/technic_mv_electric_furnace_front_active.png b/technic/textures/technic_mv_electric_furnace_front_active.png index 2523f0e0..79e4bdf1 100644 Binary files a/technic/textures/technic_mv_electric_furnace_front_active.png and b/technic/textures/technic_mv_electric_furnace_front_active.png differ diff --git a/technic/textures/technic_mv_electric_furnace_side.png b/technic/textures/technic_mv_electric_furnace_side.png index cd22a734..5b164abe 100644 Binary files a/technic/textures/technic_mv_electric_furnace_side.png and b/technic/textures/technic_mv_electric_furnace_side.png differ diff --git a/technic/textures/technic_mv_electric_furnace_side_tube.png b/technic/textures/technic_mv_electric_furnace_side_tube.png index bfeba180..d7a30b67 100644 Binary files a/technic/textures/technic_mv_electric_furnace_side_tube.png and b/technic/textures/technic_mv_electric_furnace_side_tube.png differ diff --git a/technic/textures/technic_mv_electric_furnace_top.png b/technic/textures/technic_mv_electric_furnace_top.png index 635b6b7f..4d081754 100644 Binary files a/technic/textures/technic_mv_electric_furnace_top.png and b/technic/textures/technic_mv_electric_furnace_top.png differ diff --git a/technic/textures/technic_mv_extractor_bottom.png b/technic/textures/technic_mv_extractor_bottom.png index 70f34ee6..e4f06927 100644 Binary files a/technic/textures/technic_mv_extractor_bottom.png and b/technic/textures/technic_mv_extractor_bottom.png differ diff --git a/technic/textures/technic_mv_extractor_front.png b/technic/textures/technic_mv_extractor_front.png index 18648c2f..3ef2dd3d 100644 Binary files a/technic/textures/technic_mv_extractor_front.png and b/technic/textures/technic_mv_extractor_front.png differ diff --git a/technic/textures/technic_mv_extractor_front_active.png b/technic/textures/technic_mv_extractor_front_active.png index ee86ade3..9eb0a2e7 100644 Binary files a/technic/textures/technic_mv_extractor_front_active.png and b/technic/textures/technic_mv_extractor_front_active.png differ diff --git a/technic/textures/technic_mv_extractor_side.png b/technic/textures/technic_mv_extractor_side.png index cbe3673f..3564d6ba 100644 Binary files a/technic/textures/technic_mv_extractor_side.png and b/technic/textures/technic_mv_extractor_side.png differ diff --git a/technic/textures/technic_mv_extractor_top.png b/technic/textures/technic_mv_extractor_top.png index 2259d643..876b2882 100644 Binary files a/technic/textures/technic_mv_extractor_top.png and b/technic/textures/technic_mv_extractor_top.png differ diff --git a/technic/textures/technic_mv_freezer_bottom.png b/technic/textures/technic_mv_freezer_bottom.png index f0c7ce23..0355797c 100644 Binary files a/technic/textures/technic_mv_freezer_bottom.png and b/technic/textures/technic_mv_freezer_bottom.png differ diff --git a/technic/textures/technic_mv_freezer_front.png b/technic/textures/technic_mv_freezer_front.png index bd6f3879..4694f306 100644 Binary files a/technic/textures/technic_mv_freezer_front.png and b/technic/textures/technic_mv_freezer_front.png differ diff --git a/technic/textures/technic_mv_freezer_front_active.png b/technic/textures/technic_mv_freezer_front_active.png index d90010a8..353a1f2e 100644 Binary files a/technic/textures/technic_mv_freezer_front_active.png and b/technic/textures/technic_mv_freezer_front_active.png differ diff --git a/technic/textures/technic_mv_freezer_side.png b/technic/textures/technic_mv_freezer_side.png index c5e211b2..570147a7 100644 Binary files a/technic/textures/technic_mv_freezer_side.png and b/technic/textures/technic_mv_freezer_side.png differ diff --git a/technic/textures/technic_mv_freezer_top.png b/technic/textures/technic_mv_freezer_top.png index 10102bdc..d9eb9543 100644 Binary files a/technic/textures/technic_mv_freezer_top.png and b/technic/textures/technic_mv_freezer_top.png differ diff --git a/technic/textures/technic_mv_generator_front.png b/technic/textures/technic_mv_generator_front.png index 570e0c5e..a94a2b9b 100644 Binary files a/technic/textures/technic_mv_generator_front.png and b/technic/textures/technic_mv_generator_front.png differ diff --git a/technic/textures/technic_mv_generator_front_active.png b/technic/textures/technic_mv_generator_front_active.png index 3006a172..b491a277 100644 Binary files a/technic/textures/technic_mv_generator_front_active.png and b/technic/textures/technic_mv_generator_front_active.png differ diff --git a/technic/textures/technic_mv_generator_side.png b/technic/textures/technic_mv_generator_side.png index 21c0d415..d09b09cf 100644 Binary files a/technic/textures/technic_mv_generator_side.png and b/technic/textures/technic_mv_generator_side.png differ diff --git a/technic/textures/technic_mv_generator_top.png b/technic/textures/technic_mv_generator_top.png index 7afa5a19..b703b379 100644 Binary files a/technic/textures/technic_mv_generator_top.png and b/technic/textures/technic_mv_generator_top.png differ diff --git a/technic/textures/technic_mv_grinder_bottom.png b/technic/textures/technic_mv_grinder_bottom.png index 70f34ee6..e4f06927 100644 Binary files a/technic/textures/technic_mv_grinder_bottom.png and b/technic/textures/technic_mv_grinder_bottom.png differ diff --git a/technic/textures/technic_mv_grinder_front.png b/technic/textures/technic_mv_grinder_front.png index 18648c2f..3ef2dd3d 100644 Binary files a/technic/textures/technic_mv_grinder_front.png and b/technic/textures/technic_mv_grinder_front.png differ diff --git a/technic/textures/technic_mv_grinder_front_active.png b/technic/textures/technic_mv_grinder_front_active.png index ee86ade3..9eb0a2e7 100644 Binary files a/technic/textures/technic_mv_grinder_front_active.png and b/technic/textures/technic_mv_grinder_front_active.png differ diff --git a/technic/textures/technic_mv_grinder_side.png b/technic/textures/technic_mv_grinder_side.png index cbe3673f..3564d6ba 100644 Binary files a/technic/textures/technic_mv_grinder_side.png and b/technic/textures/technic_mv_grinder_side.png differ diff --git a/technic/textures/technic_mv_grinder_side_tube.png b/technic/textures/technic_mv_grinder_side_tube.png index 196b7c1a..7a9fbc2b 100644 Binary files a/technic/textures/technic_mv_grinder_side_tube.png and b/technic/textures/technic_mv_grinder_side_tube.png differ diff --git a/technic/textures/technic_mv_grinder_top.png b/technic/textures/technic_mv_grinder_top.png index 2259d643..876b2882 100644 Binary files a/technic/textures/technic_mv_grinder_top.png and b/technic/textures/technic_mv_grinder_top.png differ diff --git a/technic/textures/technic_mv_solar_array_bottom.png b/technic/textures/technic_mv_solar_array_bottom.png index 596e79a3..567e4af1 100644 Binary files a/technic/textures/technic_mv_solar_array_bottom.png and b/technic/textures/technic_mv_solar_array_bottom.png differ diff --git a/technic/textures/technic_mv_solar_array_side.png b/technic/textures/technic_mv_solar_array_side.png index 917b9ed3..25a46314 100644 Binary files a/technic/textures/technic_mv_solar_array_side.png and b/technic/textures/technic_mv_solar_array_side.png differ diff --git a/technic/textures/technic_mv_solar_array_top.png b/technic/textures/technic_mv_solar_array_top.png index cdb7cf7d..186e82b7 100644 Binary files a/technic/textures/technic_mv_solar_array_top.png and b/technic/textures/technic_mv_solar_array_top.png differ diff --git a/technic/textures/technic_mv_transformer.png b/technic/textures/technic_mv_transformer.png index 7c4688eb..5d9173bb 100644 Binary files a/technic/textures/technic_mv_transformer.png and b/technic/textures/technic_mv_transformer.png differ diff --git a/technic/textures/technic_nodebreaker_back.png b/technic/textures/technic_nodebreaker_back.png index 0af74220..01153286 100644 Binary files a/technic/textures/technic_nodebreaker_back.png and b/technic/textures/technic_nodebreaker_back.png differ diff --git a/technic/textures/technic_nodebreaker_bottom.png b/technic/textures/technic_nodebreaker_bottom.png index ff1a2c6c..0d22be86 100644 Binary files a/technic/textures/technic_nodebreaker_bottom.png and b/technic/textures/technic_nodebreaker_bottom.png differ diff --git a/technic/textures/technic_nodebreaker_bottom_off.png b/technic/textures/technic_nodebreaker_bottom_off.png index 0f456eb7..a46d9b38 100644 Binary files a/technic/textures/technic_nodebreaker_bottom_off.png and b/technic/textures/technic_nodebreaker_bottom_off.png differ diff --git a/technic/textures/technic_nodebreaker_bottom_on.png b/technic/textures/technic_nodebreaker_bottom_on.png index 6c4811ab..c37970ea 100644 Binary files a/technic/textures/technic_nodebreaker_bottom_on.png and b/technic/textures/technic_nodebreaker_bottom_on.png differ diff --git a/technic/textures/technic_nodebreaker_front_off.png b/technic/textures/technic_nodebreaker_front_off.png index 488fd0ab..5610e84f 100644 Binary files a/technic/textures/technic_nodebreaker_front_off.png and b/technic/textures/technic_nodebreaker_front_off.png differ diff --git a/technic/textures/technic_nodebreaker_front_on.png b/technic/textures/technic_nodebreaker_front_on.png index 4904e8b2..1f51dd77 100644 Binary files a/technic/textures/technic_nodebreaker_front_on.png and b/technic/textures/technic_nodebreaker_front_on.png differ diff --git a/technic/textures/technic_nodebreaker_side.png b/technic/textures/technic_nodebreaker_side.png index aefd7c86..4358fdcb 100644 Binary files a/technic/textures/technic_nodebreaker_side.png and b/technic/textures/technic_nodebreaker_side.png differ diff --git a/technic/textures/technic_nodebreaker_side1.png b/technic/textures/technic_nodebreaker_side1.png index 8cb86342..df1a9dd5 100644 Binary files a/technic/textures/technic_nodebreaker_side1.png and b/technic/textures/technic_nodebreaker_side1.png differ diff --git a/technic/textures/technic_nodebreaker_side1_off.png b/technic/textures/technic_nodebreaker_side1_off.png index 857face1..58d86a75 100644 Binary files a/technic/textures/technic_nodebreaker_side1_off.png and b/technic/textures/technic_nodebreaker_side1_off.png differ diff --git a/technic/textures/technic_nodebreaker_side1_on.png b/technic/textures/technic_nodebreaker_side1_on.png index c756f093..7ca330e3 100644 Binary files a/technic/textures/technic_nodebreaker_side1_on.png and b/technic/textures/technic_nodebreaker_side1_on.png differ diff --git a/technic/textures/technic_nodebreaker_side2.png b/technic/textures/technic_nodebreaker_side2.png index c2855d05..3a7bed0d 100644 Binary files a/technic/textures/technic_nodebreaker_side2.png and b/technic/textures/technic_nodebreaker_side2.png differ diff --git a/technic/textures/technic_nodebreaker_side2_off.png b/technic/textures/technic_nodebreaker_side2_off.png index 4c62f98a..ae79036a 100644 Binary files a/technic/textures/technic_nodebreaker_side2_off.png and b/technic/textures/technic_nodebreaker_side2_off.png differ diff --git a/technic/textures/technic_nodebreaker_side2_on.png b/technic/textures/technic_nodebreaker_side2_on.png index b9e48231..652df588 100644 Binary files a/technic/textures/technic_nodebreaker_side2_on.png and b/technic/textures/technic_nodebreaker_side2_on.png differ diff --git a/technic/textures/technic_nodebreaker_top.png b/technic/textures/technic_nodebreaker_top.png index 941d3339..a29a3659 100644 Binary files a/technic/textures/technic_nodebreaker_top.png and b/technic/textures/technic_nodebreaker_top.png differ diff --git a/technic/textures/technic_nodebreaker_top_off.png b/technic/textures/technic_nodebreaker_top_off.png index 9139afe9..ad9f0464 100644 Binary files a/technic/textures/technic_nodebreaker_top_off.png and b/technic/textures/technic_nodebreaker_top_off.png differ diff --git a/technic/textures/technic_nodebreaker_top_on.png b/technic/textures/technic_nodebreaker_top_on.png index 4b0a6616..1c5f3502 100644 Binary files a/technic/textures/technic_nodebreaker_top_on.png and b/technic/textures/technic_nodebreaker_top_on.png differ diff --git a/technic/textures/technic_power_meter.png b/technic/textures/technic_power_meter.png index f1e51207..2e28bed9 100644 Binary files a/technic/textures/technic_power_meter.png and b/technic/textures/technic_power_meter.png differ diff --git a/technic/textures/technic_power_meter0.png b/technic/textures/technic_power_meter0.png index 1b1e662c..ced15068 100644 Binary files a/technic/textures/technic_power_meter0.png and b/technic/textures/technic_power_meter0.png differ diff --git a/technic/textures/technic_power_meter1.png b/technic/textures/technic_power_meter1.png index eb6be3b1..ad19fd37 100644 Binary files a/technic/textures/technic_power_meter1.png and b/technic/textures/technic_power_meter1.png differ diff --git a/technic/textures/technic_power_meter2.png b/technic/textures/technic_power_meter2.png index e3a3772b..6ff2c0e4 100644 Binary files a/technic/textures/technic_power_meter2.png and b/technic/textures/technic_power_meter2.png differ diff --git a/technic/textures/technic_power_meter3.png b/technic/textures/technic_power_meter3.png index 63330358..67d44d41 100644 Binary files a/technic/textures/technic_power_meter3.png and b/technic/textures/technic_power_meter3.png differ diff --git a/technic/textures/technic_power_meter4.png b/technic/textures/technic_power_meter4.png index 6346dbd4..93c9de09 100644 Binary files a/technic/textures/technic_power_meter4.png and b/technic/textures/technic_power_meter4.png differ diff --git a/technic/textures/technic_power_meter5.png b/technic/textures/technic_power_meter5.png index 80f79c68..6188a45d 100644 Binary files a/technic/textures/technic_power_meter5.png and b/technic/textures/technic_power_meter5.png differ diff --git a/technic/textures/technic_power_meter6.png b/technic/textures/technic_power_meter6.png index fe91bf5d..5c82eee9 100644 Binary files a/technic/textures/technic_power_meter6.png and b/technic/textures/technic_power_meter6.png differ diff --git a/technic/textures/technic_power_meter7.png b/technic/textures/technic_power_meter7.png index e02dd6d8..ad010c8a 100644 Binary files a/technic/textures/technic_power_meter7.png and b/technic/textures/technic_power_meter7.png differ diff --git a/technic/textures/technic_power_meter8.png b/technic/textures/technic_power_meter8.png index a12064ce..5aa52b8a 100644 Binary files a/technic/textures/technic_power_meter8.png and b/technic/textures/technic_power_meter8.png differ diff --git a/technic/textures/technic_power_meter_bg.png b/technic/textures/technic_power_meter_bg.png index 9667cda8..bd95e9b1 100644 Binary files a/technic/textures/technic_power_meter_bg.png and b/technic/textures/technic_power_meter_bg.png differ diff --git a/technic/textures/technic_power_meter_fg.png b/technic/textures/technic_power_meter_fg.png index 7f2dde87..d26e659f 100644 Binary files a/technic/textures/technic_power_meter_fg.png and b/technic/textures/technic_power_meter_fg.png differ diff --git a/technic/textures/technic_power_monitor_front.png b/technic/textures/technic_power_monitor_front.png index b0db5685..dd0321d4 100644 Binary files a/technic/textures/technic_power_monitor_front.png and b/technic/textures/technic_power_monitor_front.png differ diff --git a/technic/textures/technic_power_monitor_sides.png b/technic/textures/technic_power_monitor_sides.png index a6df4f35..77dd9338 100644 Binary files a/technic/textures/technic_power_monitor_sides.png and b/technic/textures/technic_power_monitor_sides.png differ diff --git a/technic/textures/technic_prospector.png b/technic/textures/technic_prospector.png index 2f9ee6ca..6ec0f342 100644 Binary files a/technic/textures/technic_prospector.png and b/technic/textures/technic_prospector.png differ diff --git a/technic/textures/technic_raw_latex.png b/technic/textures/technic_raw_latex.png index 49bb11bf..c7ba7ef7 100644 Binary files a/technic/textures/technic_raw_latex.png and b/technic/textures/technic_raw_latex.png differ diff --git a/technic/textures/technic_rubber.png b/technic/textures/technic_rubber.png index 9ed4a9df..eb78e9fc 100644 Binary files a/technic/textures/technic_rubber.png and b/technic/textures/technic_rubber.png differ diff --git a/technic/textures/technic_rubber_leaves.png b/technic/textures/technic_rubber_leaves.png index ae013e0a..ffd63f5f 100644 Binary files a/technic/textures/technic_rubber_leaves.png and b/technic/textures/technic_rubber_leaves.png differ diff --git a/technic/textures/technic_rubber_sapling.png b/technic/textures/technic_rubber_sapling.png index e5c9f5de..7d3dbf21 100644 Binary files a/technic/textures/technic_rubber_sapling.png and b/technic/textures/technic_rubber_sapling.png differ diff --git a/technic/textures/technic_rubber_tree_empty.png b/technic/textures/technic_rubber_tree_empty.png index 1792951e..dc36fa56 100644 Binary files a/technic/textures/technic_rubber_tree_empty.png and b/technic/textures/technic_rubber_tree_empty.png differ diff --git a/technic/textures/technic_rubber_tree_full.png b/technic/textures/technic_rubber_tree_full.png index 08067eff..def5cf62 100644 Binary files a/technic/textures/technic_rubber_tree_full.png and b/technic/textures/technic_rubber_tree_full.png differ diff --git a/technic/textures/technic_rubber_tree_grindings.png b/technic/textures/technic_rubber_tree_grindings.png index 9f2f5d6a..500e4640 100644 Binary files a/technic/textures/technic_rubber_tree_grindings.png and b/technic/textures/technic_rubber_tree_grindings.png differ diff --git a/technic/textures/technic_sawdust.png b/technic/textures/technic_sawdust.png index 976e7f9b..0e37555b 100644 Binary files a/technic/textures/technic_sawdust.png and b/technic/textures/technic_sawdust.png differ diff --git a/technic/textures/technic_screwdriver.png b/technic/textures/technic_screwdriver.png index bd2da222..dcb04edb 100644 Binary files a/technic/textures/technic_screwdriver.png and b/technic/textures/technic_screwdriver.png differ diff --git a/technic/textures/technic_silicon_wafer.png b/technic/textures/technic_silicon_wafer.png index 78aef200..644de065 100644 Binary files a/technic/textures/technic_silicon_wafer.png and b/technic/textures/technic_silicon_wafer.png differ diff --git a/technic/textures/technic_silver_dust.png b/technic/textures/technic_silver_dust.png index 19a5754f..c3225408 100644 Binary files a/technic/textures/technic_silver_dust.png and b/technic/textures/technic_silver_dust.png differ diff --git a/technic/textures/technic_solar_panel_bottom.png b/technic/textures/technic_solar_panel_bottom.png index 9e888e30..c031a8b4 100644 Binary files a/technic/textures/technic_solar_panel_bottom.png and b/technic/textures/technic_solar_panel_bottom.png differ diff --git a/technic/textures/technic_solar_panel_side.png b/technic/textures/technic_solar_panel_side.png index b22447ef..73b511cd 100644 Binary files a/technic/textures/technic_solar_panel_side.png and b/technic/textures/technic_solar_panel_side.png differ diff --git a/technic/textures/technic_solar_panel_top.png b/technic/textures/technic_solar_panel_top.png index 492764bf..78b895b1 100644 Binary files a/technic/textures/technic_solar_panel_top.png and b/technic/textures/technic_solar_panel_top.png differ diff --git a/technic/textures/technic_sonic_screwdriver.png b/technic/textures/technic_sonic_screwdriver.png index 9b26b81c..c41b8d06 100644 Binary files a/technic/textures/technic_sonic_screwdriver.png and b/technic/textures/technic_sonic_screwdriver.png differ diff --git a/technic/textures/technic_stainless_steel_dust.png b/technic/textures/technic_stainless_steel_dust.png index 6398be8f..1edfe597 100644 Binary files a/technic/textures/technic_stainless_steel_dust.png and b/technic/textures/technic_stainless_steel_dust.png differ diff --git a/technic/textures/technic_stainless_steel_ingot.png b/technic/textures/technic_stainless_steel_ingot.png index 7ec5e00f..d04b385b 100644 Binary files a/technic/textures/technic_stainless_steel_ingot.png and b/technic/textures/technic_stainless_steel_ingot.png differ diff --git a/technic/textures/technic_stone_dust.png b/technic/textures/technic_stone_dust.png index ce9d9e42..e3fb19ef 100644 Binary files a/technic/textures/technic_stone_dust.png and b/technic/textures/technic_stone_dust.png differ diff --git a/technic/textures/technic_supply_converter_side.png b/technic/textures/technic_supply_converter_side.png index 6492d5c1..396a1237 100644 Binary files a/technic/textures/technic_supply_converter_side.png and b/technic/textures/technic_supply_converter_side.png differ diff --git a/technic/textures/technic_supply_converter_tb.png b/technic/textures/technic_supply_converter_tb.png index 053b3d8b..8019ce79 100644 Binary files a/technic/textures/technic_supply_converter_tb.png and b/technic/textures/technic_supply_converter_tb.png differ diff --git a/technic/textures/technic_talinite_dust.png b/technic/textures/technic_talinite_dust.png index f2282064..fce85837 100644 Binary files a/technic/textures/technic_talinite_dust.png and b/technic/textures/technic_talinite_dust.png differ diff --git a/technic/textures/technic_tin_dust.png b/technic/textures/technic_tin_dust.png index 98e6f3f8..2f295eb7 100644 Binary files a/technic/textures/technic_tin_dust.png and b/technic/textures/technic_tin_dust.png differ diff --git a/technic/textures/technic_tool_mode1.png b/technic/textures/technic_tool_mode1.png index 571dbe51..e783af46 100644 Binary files a/technic/textures/technic_tool_mode1.png and b/technic/textures/technic_tool_mode1.png differ diff --git a/technic/textures/technic_tool_mode2.png b/technic/textures/technic_tool_mode2.png index 891aa826..4f475e84 100644 Binary files a/technic/textures/technic_tool_mode2.png and b/technic/textures/technic_tool_mode2.png differ diff --git a/technic/textures/technic_tool_mode3.png b/technic/textures/technic_tool_mode3.png index cd099a71..68335693 100644 Binary files a/technic/textures/technic_tool_mode3.png and b/technic/textures/technic_tool_mode3.png differ diff --git a/technic/textures/technic_tool_mode4.png b/technic/textures/technic_tool_mode4.png index 62f50d78..2a008cfd 100644 Binary files a/technic/textures/technic_tool_mode4.png and b/technic/textures/technic_tool_mode4.png differ diff --git a/technic/textures/technic_tool_mode5.png b/technic/textures/technic_tool_mode5.png index c9183149..0a18bb2d 100644 Binary files a/technic/textures/technic_tool_mode5.png and b/technic/textures/technic_tool_mode5.png differ diff --git a/technic/textures/technic_tool_mode6.png b/technic/textures/technic_tool_mode6.png index 9268f47c..af9dadba 100644 Binary files a/technic/textures/technic_tool_mode6.png and b/technic/textures/technic_tool_mode6.png differ diff --git a/technic/textures/technic_tool_mode7.png b/technic/textures/technic_tool_mode7.png index 5ba572ad..eecfdb0a 100644 Binary files a/technic/textures/technic_tool_mode7.png and b/technic/textures/technic_tool_mode7.png differ diff --git a/technic/textures/technic_tool_mode8.png b/technic/textures/technic_tool_mode8.png index b2655b64..f27debbf 100644 Binary files a/technic/textures/technic_tool_mode8.png and b/technic/textures/technic_tool_mode8.png differ diff --git a/technic/textures/technic_tool_mode9.png b/technic/textures/technic_tool_mode9.png index 2077afbb..e82ffb35 100644 Binary files a/technic/textures/technic_tool_mode9.png and b/technic/textures/technic_tool_mode9.png differ diff --git a/technic/textures/technic_tree_tap.png b/technic/textures/technic_tree_tap.png index 542f30f9..82bb0afa 100644 Binary files a/technic/textures/technic_tree_tap.png and b/technic/textures/technic_tree_tap.png differ diff --git a/technic/textures/technic_uranium_dust.png b/technic/textures/technic_uranium_dust.png index 9c211dc7..666fc020 100644 Binary files a/technic/textures/technic_uranium_dust.png and b/technic/textures/technic_uranium_dust.png differ diff --git a/technic/textures/technic_uranium_fuel.png b/technic/textures/technic_uranium_fuel.png index 0a32c629..7a830450 100644 Binary files a/technic/textures/technic_uranium_fuel.png and b/technic/textures/technic_uranium_fuel.png differ diff --git a/technic/textures/technic_vacuum.png b/technic/textures/technic_vacuum.png index 1ef5815e..bb36eeb4 100644 Binary files a/technic/textures/technic_vacuum.png and b/technic/textures/technic_vacuum.png differ diff --git a/technic/textures/technic_water_can.png b/technic/textures/technic_water_can.png index eec75db6..25c48bd3 100644 Binary files a/technic/textures/technic_water_can.png and b/technic/textures/technic_water_can.png differ diff --git a/technic/textures/technic_water_mill_side.png b/technic/textures/technic_water_mill_side.png index f4bdb167..4614c58e 100644 Binary files a/technic/textures/technic_water_mill_side.png and b/technic/textures/technic_water_mill_side.png differ diff --git a/technic/textures/technic_water_mill_top.png b/technic/textures/technic_water_mill_top.png index 601ff15f..66300a34 100644 Binary files a/technic/textures/technic_water_mill_top.png and b/technic/textures/technic_water_mill_top.png differ diff --git a/technic/textures/technic_water_mill_top_active.png b/technic/textures/technic_water_mill_top_active.png index f02bec60..cc62e9f5 100644 Binary files a/technic/textures/technic_water_mill_top_active.png and b/technic/textures/technic_water_mill_top_active.png differ diff --git a/technic/textures/technic_workshop_bottom.png b/technic/textures/technic_workshop_bottom.png index bd8fd552..b738f1d7 100644 Binary files a/technic/textures/technic_workshop_bottom.png and b/technic/textures/technic_workshop_bottom.png differ diff --git a/technic/textures/technic_workshop_side.png b/technic/textures/technic_workshop_side.png index 9e3e7a76..947fb63b 100644 Binary files a/technic/textures/technic_workshop_side.png and b/technic/textures/technic_workshop_side.png differ diff --git a/technic/textures/technic_workshop_top.png b/technic/textures/technic_workshop_top.png index feae1413..3e0cd869 100644 Binary files a/technic/textures/technic_workshop_top.png and b/technic/textures/technic_workshop_top.png differ diff --git a/technic/textures/technic_wrought_iron_dust.png b/technic/textures/technic_wrought_iron_dust.png index ad23c626..08ca7ba5 100644 Binary files a/technic/textures/technic_wrought_iron_dust.png and b/technic/textures/technic_wrought_iron_dust.png differ diff --git a/technic/textures/technic_zinc_dust.png b/technic/textures/technic_zinc_dust.png index bbd826cb..2305d015 100644 Binary files a/technic/textures/technic_zinc_dust.png and b/technic/textures/technic_zinc_dust.png differ diff --git a/technic/textures/technicx32/technic_akalin_dust.png b/technic/textures/technicx32/technic_akalin_dust.png index 90f3bac8..e3c62d78 100644 Binary files a/technic/textures/technicx32/technic_akalin_dust.png and b/technic/textures/technicx32/technic_akalin_dust.png differ diff --git a/technic/textures/technicx32/technic_alatro_dust.png b/technic/textures/technicx32/technic_alatro_dust.png index 11996145..d392c6d3 100644 Binary files a/technic/textures/technicx32/technic_alatro_dust.png and b/technic/textures/technicx32/technic_alatro_dust.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_front.png b/technic/textures/technicx32/technic_alloy_furnace_front.png index 9123fb64..c2d79d0b 100644 Binary files a/technic/textures/technicx32/technic_alloy_furnace_front.png and b/technic/textures/technicx32/technic_alloy_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_front_active.png b/technic/textures/technicx32/technic_alloy_furnace_front_active.png index 4dda2e69..e0dcbaa6 100644 Binary files a/technic/textures/technicx32/technic_alloy_furnace_front_active.png and b/technic/textures/technicx32/technic_alloy_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_side.png b/technic/textures/technicx32/technic_alloy_furnace_side.png index b5bd4281..048b7a98 100644 Binary files a/technic/textures/technicx32/technic_alloy_furnace_side.png and b/technic/textures/technicx32/technic_alloy_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_top.png b/technic/textures/technicx32/technic_alloy_furnace_top.png index 67ef4b7d..c704ba3c 100644 Binary files a/technic/textures/technicx32/technic_alloy_furnace_top.png and b/technic/textures/technicx32/technic_alloy_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_arol_dust.png b/technic/textures/technicx32/technic_arol_dust.png index f5a392f1..f9ea9f91 100644 Binary files a/technic/textures/technicx32/technic_arol_dust.png and b/technic/textures/technicx32/technic_arol_dust.png differ diff --git a/technic/textures/technicx32/technic_battery.png b/technic/textures/technicx32/technic_battery.png index ee83b745..cb3418cd 100644 Binary files a/technic/textures/technicx32/technic_battery.png and b/technic/textures/technicx32/technic_battery.png differ diff --git a/technic/textures/technicx32/technic_battery_box_bottom.png b/technic/textures/technicx32/technic_battery_box_bottom.png index 03c7ccc1..315cb40c 100644 Binary files a/technic/textures/technicx32/technic_battery_box_bottom.png and b/technic/textures/technicx32/technic_battery_box_bottom.png differ diff --git a/technic/textures/technicx32/technic_battery_box_side0.png b/technic/textures/technicx32/technic_battery_box_side0.png index 2662ac04..cb900bc8 100644 Binary files a/technic/textures/technicx32/technic_battery_box_side0.png and b/technic/textures/technicx32/technic_battery_box_side0.png differ diff --git a/technic/textures/technicx32/technic_battery_box_top.png b/technic/textures/technicx32/technic_battery_box_top.png index 4953a329..0ed5334b 100644 Binary files a/technic/textures/technicx32/technic_battery_box_top.png and b/technic/textures/technicx32/technic_battery_box_top.png differ diff --git a/technic/textures/technicx32/technic_battery_reload.png b/technic/textures/technicx32/technic_battery_reload.png index 164b4acf..f2bdb0ad 100644 Binary files a/technic/textures/technicx32/technic_battery_reload.png and b/technic/textures/technicx32/technic_battery_reload.png differ diff --git a/technic/textures/technicx32/technic_brass_dust.png b/technic/textures/technicx32/technic_brass_dust.png index f86167ae..d55405f8 100644 Binary files a/technic/textures/technicx32/technic_brass_dust.png and b/technic/textures/technicx32/technic_brass_dust.png differ diff --git a/technic/textures/technicx32/technic_bronze_dust.png b/technic/textures/technicx32/technic_bronze_dust.png index 0a2401e6..59962763 100644 Binary files a/technic/textures/technicx32/technic_bronze_dust.png and b/technic/textures/technicx32/technic_bronze_dust.png differ diff --git a/technic/textures/technicx32/technic_carbon_steel_dust.png b/technic/textures/technicx32/technic_carbon_steel_dust.png index 0bf350ff..a5c3305e 100644 Binary files a/technic/textures/technicx32/technic_carbon_steel_dust.png and b/technic/textures/technicx32/technic_carbon_steel_dust.png differ diff --git a/technic/textures/technicx32/technic_cast_iron_dust.png b/technic/textures/technicx32/technic_cast_iron_dust.png index f355094c..9fe657e0 100644 Binary files a/technic/textures/technicx32/technic_cast_iron_dust.png and b/technic/textures/technicx32/technic_cast_iron_dust.png differ diff --git a/technic/textures/technicx32/technic_chainsaw.png b/technic/textures/technicx32/technic_chainsaw.png index b7ceee66..79094731 100644 Binary files a/technic/textures/technicx32/technic_chainsaw.png and b/technic/textures/technicx32/technic_chainsaw.png differ diff --git a/technic/textures/technicx32/technic_chernobylite_dust.png b/technic/textures/technicx32/technic_chernobylite_dust.png index b922db48..3bb86886 100644 Binary files a/technic/textures/technicx32/technic_chernobylite_dust.png and b/technic/textures/technicx32/technic_chernobylite_dust.png differ diff --git a/technic/textures/technicx32/technic_chromium_dust.png b/technic/textures/technicx32/technic_chromium_dust.png index a33358b8..25564afd 100644 Binary files a/technic/textures/technicx32/technic_chromium_dust.png and b/technic/textures/technicx32/technic_chromium_dust.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png b/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png index 7a5eed77..da30ae63 100644 Binary files a/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png and b/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_front.png b/technic/textures/technicx32/technic_coal_alloy_furnace_front.png index b00bef34..22ae94a3 100644 Binary files a/technic/textures/technicx32/technic_coal_alloy_furnace_front.png and b/technic/textures/technicx32/technic_coal_alloy_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png b/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png index b41f6194..9ff936e8 100644 Binary files a/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png and b/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_side.png b/technic/textures/technicx32/technic_coal_alloy_furnace_side.png index 3db8daa2..048b7a98 100644 Binary files a/technic/textures/technicx32/technic_coal_alloy_furnace_side.png and b/technic/textures/technicx32/technic_coal_alloy_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_top.png b/technic/textures/technicx32/technic_coal_alloy_furnace_top.png index c648fe81..c704ba3c 100644 Binary files a/technic/textures/technicx32/technic_coal_alloy_furnace_top.png and b/technic/textures/technicx32/technic_coal_alloy_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_coal_dust.png b/technic/textures/technicx32/technic_coal_dust.png index 0fe7db72..39edba0e 100644 Binary files a/technic/textures/technicx32/technic_coal_dust.png and b/technic/textures/technicx32/technic_coal_dust.png differ diff --git a/technic/textures/technicx32/technic_constructor_back.png b/technic/textures/technicx32/technic_constructor_back.png index 6baf788a..333271d4 100644 Binary files a/technic/textures/technicx32/technic_constructor_back.png and b/technic/textures/technicx32/technic_constructor_back.png differ diff --git a/technic/textures/technicx32/technic_constructor_front_off.png b/technic/textures/technicx32/technic_constructor_front_off.png index f878e554..ac162376 100644 Binary files a/technic/textures/technicx32/technic_constructor_front_off.png and b/technic/textures/technicx32/technic_constructor_front_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_front_on.png b/technic/textures/technicx32/technic_constructor_front_on.png index 89189d60..f0b2d9a7 100644 Binary files a/technic/textures/technicx32/technic_constructor_front_on.png and b/technic/textures/technicx32/technic_constructor_front_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png b/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png index 205dcc49..a4a922e6 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png and b/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png b/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png index 9896c523..e9298922 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png and b/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side1_off.png b/technic/textures/technicx32/technic_constructor_mk1_side1_off.png index e8a01ffd..c0729529 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_side1_off.png and b/technic/textures/technicx32/technic_constructor_mk1_side1_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side1_on.png b/technic/textures/technicx32/technic_constructor_mk1_side1_on.png index c8979427..4f422332 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_side1_on.png and b/technic/textures/technicx32/technic_constructor_mk1_side1_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side2_off.png b/technic/textures/technicx32/technic_constructor_mk1_side2_off.png index 8da65f6b..9e1a75d1 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_side2_off.png and b/technic/textures/technicx32/technic_constructor_mk1_side2_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side2_on.png b/technic/textures/technicx32/technic_constructor_mk1_side2_on.png index da8ed349..d30a3f0a 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_side2_on.png and b/technic/textures/technicx32/technic_constructor_mk1_side2_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_top_off.png b/technic/textures/technicx32/technic_constructor_mk1_top_off.png index 7d8c7e01..b97d9c42 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_top_off.png and b/technic/textures/technicx32/technic_constructor_mk1_top_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_top_on.png b/technic/textures/technicx32/technic_constructor_mk1_top_on.png index 439caf5a..58d180a9 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk1_top_on.png and b/technic/textures/technicx32/technic_constructor_mk1_top_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png b/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png index 83c5b077..ce74f8d0 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png and b/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png b/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png index 9ad76f40..19431026 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png and b/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side1_off.png b/technic/textures/technicx32/technic_constructor_mk2_side1_off.png index 584dfe31..1542affc 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_side1_off.png and b/technic/textures/technicx32/technic_constructor_mk2_side1_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side1_on.png b/technic/textures/technicx32/technic_constructor_mk2_side1_on.png index fe020429..f6a446fe 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_side1_on.png and b/technic/textures/technicx32/technic_constructor_mk2_side1_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side2_off.png b/technic/textures/technicx32/technic_constructor_mk2_side2_off.png index fd9ad747..9bb6bf64 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_side2_off.png and b/technic/textures/technicx32/technic_constructor_mk2_side2_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side2_on.png b/technic/textures/technicx32/technic_constructor_mk2_side2_on.png index f51411a7..50a4206d 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_side2_on.png and b/technic/textures/technicx32/technic_constructor_mk2_side2_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_top_off.png b/technic/textures/technicx32/technic_constructor_mk2_top_off.png index e3e32924..9b115e34 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_top_off.png and b/technic/textures/technicx32/technic_constructor_mk2_top_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_top_on.png b/technic/textures/technicx32/technic_constructor_mk2_top_on.png index 83043d41..f5ce82ce 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk2_top_on.png and b/technic/textures/technicx32/technic_constructor_mk2_top_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png b/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png index 5f461545..dc65328d 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png and b/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png b/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png index f76f29b0..8e53bc7f 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png and b/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side1_off.png b/technic/textures/technicx32/technic_constructor_mk3_side1_off.png index 0ea1fc0a..a233db96 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_side1_off.png and b/technic/textures/technicx32/technic_constructor_mk3_side1_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side1_on.png b/technic/textures/technicx32/technic_constructor_mk3_side1_on.png index ba86332c..65c57b4c 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_side1_on.png and b/technic/textures/technicx32/technic_constructor_mk3_side1_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side2_off.png b/technic/textures/technicx32/technic_constructor_mk3_side2_off.png index 8e8dce4e..a372df6e 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_side2_off.png and b/technic/textures/technicx32/technic_constructor_mk3_side2_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side2_on.png b/technic/textures/technicx32/technic_constructor_mk3_side2_on.png index 12dff69e..cf155868 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_side2_on.png and b/technic/textures/technicx32/technic_constructor_mk3_side2_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_top_off.png b/technic/textures/technicx32/technic_constructor_mk3_top_off.png index 705f2555..36c45b2b 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_top_off.png and b/technic/textures/technicx32/technic_constructor_mk3_top_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_top_on.png b/technic/textures/technicx32/technic_constructor_mk3_top_on.png index cef077e7..34bf0951 100644 Binary files a/technic/textures/technicx32/technic_constructor_mk3_top_on.png and b/technic/textures/technicx32/technic_constructor_mk3_top_on.png differ diff --git a/technic/textures/technicx32/technic_control_logic_unit.png b/technic/textures/technicx32/technic_control_logic_unit.png index 6ed00ebb..5e77297b 100644 Binary files a/technic/textures/technicx32/technic_control_logic_unit.png and b/technic/textures/technicx32/technic_control_logic_unit.png differ diff --git a/technic/textures/technicx32/technic_copper_coil.png b/technic/textures/technicx32/technic_copper_coil.png index db6db1a0..4cfced92 100644 Binary files a/technic/textures/technicx32/technic_copper_coil.png and b/technic/textures/technicx32/technic_copper_coil.png differ diff --git a/technic/textures/technicx32/technic_copper_dust.png b/technic/textures/technicx32/technic_copper_dust.png index 68678ed0..f5cb6cf6 100644 Binary files a/technic/textures/technicx32/technic_copper_dust.png and b/technic/textures/technicx32/technic_copper_dust.png differ diff --git a/technic/textures/technicx32/technic_deployer_back.png b/technic/textures/technicx32/technic_deployer_back.png index 0bc8df97..3bb91e66 100644 Binary files a/technic/textures/technicx32/technic_deployer_back.png and b/technic/textures/technicx32/technic_deployer_back.png differ diff --git a/technic/textures/technicx32/technic_deployer_bottom.png b/technic/textures/technicx32/technic_deployer_bottom.png index ff1a2c6c..0d22be86 100644 Binary files a/technic/textures/technicx32/technic_deployer_bottom.png and b/technic/textures/technicx32/technic_deployer_bottom.png differ diff --git a/technic/textures/technicx32/technic_deployer_front_off.png b/technic/textures/technicx32/technic_deployer_front_off.png index d0f6f552..ccad3f43 100644 Binary files a/technic/textures/technicx32/technic_deployer_front_off.png and b/technic/textures/technicx32/technic_deployer_front_off.png differ diff --git a/technic/textures/technicx32/technic_deployer_front_on.png b/technic/textures/technicx32/technic_deployer_front_on.png index 368ce327..03b90002 100644 Binary files a/technic/textures/technicx32/technic_deployer_front_on.png and b/technic/textures/technicx32/technic_deployer_front_on.png differ diff --git a/technic/textures/technicx32/technic_deployer_side.png b/technic/textures/technicx32/technic_deployer_side.png index aefd7c86..4358fdcb 100644 Binary files a/technic/textures/technicx32/technic_deployer_side.png and b/technic/textures/technicx32/technic_deployer_side.png differ diff --git a/technic/textures/technicx32/technic_deployer_side1.png b/technic/textures/technicx32/technic_deployer_side1.png index 8cb86342..df1a9dd5 100644 Binary files a/technic/textures/technicx32/technic_deployer_side1.png and b/technic/textures/technicx32/technic_deployer_side1.png differ diff --git a/technic/textures/technicx32/technic_deployer_side2.png b/technic/textures/technicx32/technic_deployer_side2.png index c2855d05..3a7bed0d 100644 Binary files a/technic/textures/technicx32/technic_deployer_side2.png and b/technic/textures/technicx32/technic_deployer_side2.png differ diff --git a/technic/textures/technicx32/technic_deployer_top.png b/technic/textures/technicx32/technic_deployer_top.png index 941d3339..a29a3659 100644 Binary files a/technic/textures/technicx32/technic_deployer_top.png and b/technic/textures/technicx32/technic_deployer_top.png differ diff --git a/technic/textures/technicx32/technic_diamond_block_blue.png b/technic/textures/technicx32/technic_diamond_block_blue.png index d89bd6e2..236b74f0 100644 Binary files a/technic/textures/technicx32/technic_diamond_block_blue.png and b/technic/textures/technicx32/technic_diamond_block_blue.png differ diff --git a/technic/textures/technicx32/technic_diamond_block_green.png b/technic/textures/technicx32/technic_diamond_block_green.png index 996b2541..1a2350e2 100644 Binary files a/technic/textures/technicx32/technic_diamond_block_green.png and b/technic/textures/technicx32/technic_diamond_block_green.png differ diff --git a/technic/textures/technicx32/technic_diamond_block_red.png b/technic/textures/technicx32/technic_diamond_block_red.png index 52fd8935..75499f29 100644 Binary files a/technic/textures/technicx32/technic_diamond_block_red.png and b/technic/textures/technicx32/technic_diamond_block_red.png differ diff --git a/technic/textures/technicx32/technic_diamond_drill_head.png b/technic/textures/technicx32/technic_diamond_drill_head.png index e3d31e8e..8e1319f3 100644 Binary files a/technic/textures/technicx32/technic_diamond_drill_head.png and b/technic/textures/technicx32/technic_diamond_drill_head.png differ diff --git a/technic/textures/technicx32/technic_doped_silicon_wafer.png b/technic/textures/technicx32/technic_doped_silicon_wafer.png index 6ff06a6f..d0b0d573 100644 Binary files a/technic/textures/technicx32/technic_doped_silicon_wafer.png and b/technic/textures/technicx32/technic_doped_silicon_wafer.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_bottom.png b/technic/textures/technicx32/technic_electric_furnace_bottom.png index d16ac479..20ea439a 100644 Binary files a/technic/textures/technicx32/technic_electric_furnace_bottom.png and b/technic/textures/technicx32/technic_electric_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_front.png b/technic/textures/technicx32/technic_electric_furnace_front.png index dfee6630..ac591f07 100644 Binary files a/technic/textures/technicx32/technic_electric_furnace_front.png and b/technic/textures/technicx32/technic_electric_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_front_active.png b/technic/textures/technicx32/technic_electric_furnace_front_active.png index 038eec4c..074378b7 100644 Binary files a/technic/textures/technicx32/technic_electric_furnace_front_active.png and b/technic/textures/technicx32/technic_electric_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_side.png b/technic/textures/technicx32/technic_electric_furnace_side.png index cf345e73..2266d9cb 100644 Binary files a/technic/textures/technicx32/technic_electric_furnace_side.png and b/technic/textures/technicx32/technic_electric_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_top.png b/technic/textures/technicx32/technic_electric_furnace_top.png index d3309ecf..da30ae63 100644 Binary files a/technic/textures/technicx32/technic_electric_furnace_top.png and b/technic/textures/technicx32/technic_electric_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_fine_copper_wire.png b/technic/textures/technicx32/technic_fine_copper_wire.png index 36e2ed68..f40b7fcf 100644 Binary files a/technic/textures/technicx32/technic_fine_copper_wire.png and b/technic/textures/technicx32/technic_fine_copper_wire.png differ diff --git a/technic/textures/technicx32/technic_fine_gold_wire.png b/technic/textures/technicx32/technic_fine_gold_wire.png index be2a38a8..019fb15a 100644 Binary files a/technic/textures/technicx32/technic_fine_gold_wire.png and b/technic/textures/technicx32/technic_fine_gold_wire.png differ diff --git a/technic/textures/technicx32/technic_fine_silver_wire.png b/technic/textures/technicx32/technic_fine_silver_wire.png index d43cb6af..5e0d5a16 100644 Binary files a/technic/textures/technicx32/technic_fine_silver_wire.png and b/technic/textures/technicx32/technic_fine_silver_wire.png differ diff --git a/technic/textures/technicx32/technic_flashlight.png b/technic/textures/technicx32/technic_flashlight.png index 01afdbb2..60c7f420 100644 Binary files a/technic/textures/technicx32/technic_flashlight.png and b/technic/textures/technicx32/technic_flashlight.png differ diff --git a/technic/textures/technicx32/technic_generator_front.png b/technic/textures/technicx32/technic_generator_front.png index 2d64844f..c4680816 100644 Binary files a/technic/textures/technicx32/technic_generator_front.png and b/technic/textures/technicx32/technic_generator_front.png differ diff --git a/technic/textures/technicx32/technic_generator_front_active.png b/technic/textures/technicx32/technic_generator_front_active.png index 4e57ca0b..a685f77d 100644 Binary files a/technic/textures/technicx32/technic_generator_front_active.png and b/technic/textures/technicx32/technic_generator_front_active.png differ diff --git a/technic/textures/technicx32/technic_generator_side.png b/technic/textures/technicx32/technic_generator_side.png index 5cbcbef8..b5d7c12c 100644 Binary files a/technic/textures/technicx32/technic_generator_side.png and b/technic/textures/technicx32/technic_generator_side.png differ diff --git a/technic/textures/technicx32/technic_generator_top.png b/technic/textures/technicx32/technic_generator_top.png index e2f3db3d..48c58870 100644 Binary files a/technic/textures/technicx32/technic_generator_top.png and b/technic/textures/technicx32/technic_generator_top.png differ diff --git a/technic/textures/technicx32/technic_geothermal_side.png b/technic/textures/technicx32/technic_geothermal_side.png index 90fb4305..efaf9a9a 100644 Binary files a/technic/textures/technicx32/technic_geothermal_side.png and b/technic/textures/technicx32/technic_geothermal_side.png differ diff --git a/technic/textures/technicx32/technic_geothermal_top.png b/technic/textures/technicx32/technic_geothermal_top.png index 601ff15f..66300a34 100644 Binary files a/technic/textures/technicx32/technic_geothermal_top.png and b/technic/textures/technicx32/technic_geothermal_top.png differ diff --git a/technic/textures/technicx32/technic_geothermal_top_active.png b/technic/textures/technicx32/technic_geothermal_top_active.png index f02bec60..cc62e9f5 100644 Binary files a/technic/textures/technicx32/technic_geothermal_top_active.png and b/technic/textures/technicx32/technic_geothermal_top_active.png differ diff --git a/technic/textures/technicx32/technic_gold_dust.png b/technic/textures/technicx32/technic_gold_dust.png index e545bb6c..8ccae6a8 100644 Binary files a/technic/textures/technicx32/technic_gold_dust.png and b/technic/textures/technicx32/technic_gold_dust.png differ diff --git a/technic/textures/technicx32/technic_grinder_front.png b/technic/textures/technicx32/technic_grinder_front.png index a28dbc14..328fa584 100644 Binary files a/technic/textures/technicx32/technic_grinder_front.png and b/technic/textures/technicx32/technic_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_grinder_side.png b/technic/textures/technicx32/technic_grinder_side.png index af562f26..3bd679cb 100644 Binary files a/technic/textures/technicx32/technic_grinder_side.png and b/technic/textures/technicx32/technic_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_grinder_top.png b/technic/textures/technicx32/technic_grinder_top.png index b074e134..eb6f4bcb 100644 Binary files a/technic/textures/technicx32/technic_grinder_top.png and b/technic/textures/technicx32/technic_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_bottom.png b/technic/textures/technicx32/technic_hv_grinder_bottom.png index d854193c..7d0253f4 100644 Binary files a/technic/textures/technicx32/technic_hv_grinder_bottom.png and b/technic/textures/technicx32/technic_hv_grinder_bottom.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_front.png b/technic/textures/technicx32/technic_hv_grinder_front.png index f20cb222..05bb2333 100644 Binary files a/technic/textures/technicx32/technic_hv_grinder_front.png and b/technic/textures/technicx32/technic_hv_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_front_active.png b/technic/textures/technicx32/technic_hv_grinder_front_active.png index d1fa4684..96aa365a 100644 Binary files a/technic/textures/technicx32/technic_hv_grinder_front_active.png and b/technic/textures/technicx32/technic_hv_grinder_front_active.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_side.png b/technic/textures/technicx32/technic_hv_grinder_side.png index 35cf0317..94e891a6 100644 Binary files a/technic/textures/technicx32/technic_hv_grinder_side.png and b/technic/textures/technicx32/technic_hv_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_side_tube.png b/technic/textures/technicx32/technic_hv_grinder_side_tube.png index 5b5b4501..2f4f75e7 100644 Binary files a/technic/textures/technicx32/technic_hv_grinder_side_tube.png and b/technic/textures/technicx32/technic_hv_grinder_side_tube.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_top.png b/technic/textures/technicx32/technic_hv_grinder_top.png index 7869ea8d..d6d08f72 100644 Binary files a/technic/textures/technicx32/technic_hv_grinder_top.png and b/technic/textures/technicx32/technic_hv_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png b/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png index 3d380daa..127946b3 100644 Binary files a/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png and b/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png differ diff --git a/technic/textures/technicx32/technic_hv_solar_array_bottom.png b/technic/textures/technicx32/technic_hv_solar_array_bottom.png index 94c82220..e6bd2c73 100644 Binary files a/technic/textures/technicx32/technic_hv_solar_array_bottom.png and b/technic/textures/technicx32/technic_hv_solar_array_bottom.png differ diff --git a/technic/textures/technicx32/technic_hv_solar_array_side.png b/technic/textures/technicx32/technic_hv_solar_array_side.png index d39d3d81..4d081754 100644 Binary files a/technic/textures/technicx32/technic_hv_solar_array_side.png and b/technic/textures/technicx32/technic_hv_solar_array_side.png differ diff --git a/technic/textures/technicx32/technic_hv_solar_array_top.png b/technic/textures/technicx32/technic_hv_solar_array_top.png index 3e1b9e01..04280bc3 100644 Binary files a/technic/textures/technicx32/technic_hv_solar_array_top.png and b/technic/textures/technicx32/technic_hv_solar_array_top.png differ diff --git a/technic/textures/technicx32/technic_hv_transformer.png b/technic/textures/technicx32/technic_hv_transformer.png index 7794644f..021ae9cb 100644 Binary files a/technic/textures/technicx32/technic_hv_transformer.png and b/technic/textures/technicx32/technic_hv_transformer.png differ diff --git a/technic/textures/technicx32/technic_injector_bottom.png b/technic/textures/technicx32/technic_injector_bottom.png index 39916bd2..b5ea7157 100644 Binary files a/technic/textures/technicx32/technic_injector_bottom.png and b/technic/textures/technicx32/technic_injector_bottom.png differ diff --git a/technic/textures/technicx32/technic_injector_side.png b/technic/textures/technicx32/technic_injector_side.png index a5419a14..0144fe8e 100644 Binary files a/technic/textures/technicx32/technic_injector_side.png and b/technic/textures/technicx32/technic_injector_side.png differ diff --git a/technic/textures/technicx32/technic_injector_top.png b/technic/textures/technicx32/technic_injector_top.png index 440649ce..94c689f1 100644 Binary files a/technic/textures/technicx32/technic_injector_top.png and b/technic/textures/technicx32/technic_injector_top.png differ diff --git a/technic/textures/technicx32/technic_kalite_dust.png b/technic/textures/technicx32/technic_kalite_dust.png index 595edb5f..3a689af0 100644 Binary files a/technic/textures/technicx32/technic_kalite_dust.png and b/technic/textures/technicx32/technic_kalite_dust.png differ diff --git a/technic/textures/technicx32/technic_laser_beam.png b/technic/textures/technicx32/technic_laser_beam.png index 4814a9b2..66824754 100644 Binary files a/technic/textures/technicx32/technic_laser_beam.png and b/technic/textures/technicx32/technic_laser_beam.png differ diff --git a/technic/textures/technicx32/technic_lava_can.png b/technic/textures/technicx32/technic_lava_can.png index 80d15a62..307221c9 100644 Binary files a/technic/textures/technicx32/technic_lava_can.png and b/technic/textures/technicx32/technic_lava_can.png differ diff --git a/technic/textures/technicx32/technic_light.png b/technic/textures/technicx32/technic_light.png index 334cb078..4e6cc89a 100644 Binary files a/technic/textures/technicx32/technic_light.png and b/technic/textures/technicx32/technic_light.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_bottom.png b/technic/textures/technicx32/technic_lv_grinder_bottom.png index 816b969d..7d0253f4 100644 Binary files a/technic/textures/technicx32/technic_lv_grinder_bottom.png and b/technic/textures/technicx32/technic_lv_grinder_bottom.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_front.png b/technic/textures/technicx32/technic_lv_grinder_front.png index 7451ca90..447b7e12 100644 Binary files a/technic/textures/technicx32/technic_lv_grinder_front.png and b/technic/textures/technicx32/technic_lv_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_front_active.png b/technic/textures/technicx32/technic_lv_grinder_front_active.png index 8e17e4dd..1461696f 100644 Binary files a/technic/textures/technicx32/technic_lv_grinder_front_active.png and b/technic/textures/technicx32/technic_lv_grinder_front_active.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_side.png b/technic/textures/technicx32/technic_lv_grinder_side.png index 908287b5..93380dfb 100644 Binary files a/technic/textures/technicx32/technic_lv_grinder_side.png and b/technic/textures/technicx32/technic_lv_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_top.png b/technic/textures/technicx32/technic_lv_grinder_top.png index 8520baf0..6354aaac 100644 Binary files a/technic/textures/technicx32/technic_lv_grinder_top.png and b/technic/textures/technicx32/technic_lv_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_lv_solar_array_bottom.png b/technic/textures/technicx32/technic_lv_solar_array_bottom.png index 94c82220..e6bd2c73 100644 Binary files a/technic/textures/technicx32/technic_lv_solar_array_bottom.png and b/technic/textures/technicx32/technic_lv_solar_array_bottom.png differ diff --git a/technic/textures/technicx32/technic_lv_solar_array_side.png b/technic/textures/technicx32/technic_lv_solar_array_side.png index d39d3d81..4d081754 100644 Binary files a/technic/textures/technicx32/technic_lv_solar_array_side.png and b/technic/textures/technicx32/technic_lv_solar_array_side.png differ diff --git a/technic/textures/technicx32/technic_lv_solar_array_top.png b/technic/textures/technicx32/technic_lv_solar_array_top.png index 3d8c7ab5..40e6b1c4 100644 Binary files a/technic/textures/technicx32/technic_lv_solar_array_top.png and b/technic/textures/technicx32/technic_lv_solar_array_top.png differ diff --git a/technic/textures/technicx32/technic_lv_transformer.png b/technic/textures/technicx32/technic_lv_transformer.png index 99ac9278..2b2230c1 100644 Binary files a/technic/textures/technicx32/technic_lv_transformer.png and b/technic/textures/technicx32/technic_lv_transformer.png differ diff --git a/technic/textures/technicx32/technic_machine_bottom.png b/technic/textures/technicx32/technic_machine_bottom.png index 943dae11..20ea439a 100644 Binary files a/technic/textures/technicx32/technic_machine_bottom.png and b/technic/textures/technicx32/technic_machine_bottom.png differ diff --git a/technic/textures/technicx32/technic_mining_drill.png b/technic/textures/technicx32/technic_mining_drill.png index 171888db..f91fe377 100644 Binary files a/technic/textures/technicx32/technic_mining_drill.png and b/technic/textures/technicx32/technic_mining_drill.png differ diff --git a/technic/textures/technicx32/technic_mining_laser_mk1.png b/technic/textures/technicx32/technic_mining_laser_mk1.png index acde392c..ee24ee30 100644 Binary files a/technic/textures/technicx32/technic_mining_laser_mk1.png and b/technic/textures/technicx32/technic_mining_laser_mk1.png differ diff --git a/technic/textures/technicx32/technic_mithril_dust.png b/technic/textures/technicx32/technic_mithril_dust.png index 988e4492..d4fc7172 100644 Binary files a/technic/textures/technicx32/technic_mithril_dust.png and b/technic/textures/technicx32/technic_mithril_dust.png differ diff --git a/technic/textures/technicx32/technic_motor.png b/technic/textures/technicx32/technic_motor.png index 77d4b91c..33dc2f94 100644 Binary files a/technic/textures/technicx32/technic_motor.png and b/technic/textures/technicx32/technic_motor.png differ diff --git a/technic/textures/technicx32/technic_music_player_bottom.png b/technic/textures/technicx32/technic_music_player_bottom.png index bd8fd552..b738f1d7 100644 Binary files a/technic/textures/technicx32/technic_music_player_bottom.png and b/technic/textures/technicx32/technic_music_player_bottom.png differ diff --git a/technic/textures/technicx32/technic_music_player_side.png b/technic/textures/technicx32/technic_music_player_side.png index 6c34feaa..cc39c1c3 100644 Binary files a/technic/textures/technicx32/technic_music_player_side.png and b/technic/textures/technicx32/technic_music_player_side.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png b/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png index 3723bb16..7d0253f4 100644 Binary files a/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png and b/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_front.png b/technic/textures/technicx32/technic_mv_alloy_furnace_front.png index a5dac824..f515cd35 100644 Binary files a/technic/textures/technicx32/technic_mv_alloy_furnace_front.png and b/technic/textures/technicx32/technic_mv_alloy_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png b/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png index f6e69a91..d7d24069 100644 Binary files a/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png and b/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_side.png b/technic/textures/technicx32/technic_mv_alloy_furnace_side.png index 04304794..51b35e29 100644 Binary files a/technic/textures/technicx32/technic_mv_alloy_furnace_side.png and b/technic/textures/technicx32/technic_mv_alloy_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png b/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png index 69f89e7e..fb91900d 100644 Binary files a/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png and b/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_top.png b/technic/textures/technicx32/technic_mv_alloy_furnace_top.png index f44e3c03..d33b6658 100644 Binary files a/technic/textures/technicx32/technic_mv_alloy_furnace_top.png and b/technic/textures/technicx32/technic_mv_alloy_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_mv_battery_box_bottom.png b/technic/textures/technicx32/technic_mv_battery_box_bottom.png index 2a9b292d..e6bd2c73 100644 Binary files a/technic/textures/technicx32/technic_mv_battery_box_bottom.png and b/technic/textures/technicx32/technic_mv_battery_box_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_battery_box_side0.png b/technic/textures/technicx32/technic_mv_battery_box_side0.png index 39d89868..120c229a 100644 Binary files a/technic/textures/technicx32/technic_mv_battery_box_side0.png and b/technic/textures/technicx32/technic_mv_battery_box_side0.png differ diff --git a/technic/textures/technicx32/technic_mv_battery_box_top.png b/technic/textures/technicx32/technic_mv_battery_box_top.png index f7f1ea92..0ed5334b 100644 Binary files a/technic/textures/technicx32/technic_mv_battery_box_top.png and b/technic/textures/technicx32/technic_mv_battery_box_top.png differ diff --git a/technic/textures/technicx32/technic_mv_cable_wield.png b/technic/textures/technicx32/technic_mv_cable_wield.png index aca9fd45..6faab243 100644 Binary files a/technic/textures/technicx32/technic_mv_cable_wield.png and b/technic/textures/technicx32/technic_mv_cable_wield.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png b/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png index d16ac479..20ea439a 100644 Binary files a/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png and b/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_front.png b/technic/textures/technicx32/technic_mv_electric_furnace_front.png index 4dfac633..c8451978 100644 Binary files a/technic/textures/technicx32/technic_mv_electric_furnace_front.png and b/technic/textures/technicx32/technic_mv_electric_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png b/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png index e206cd23..fe78da6a 100644 Binary files a/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png and b/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_side.png b/technic/textures/technicx32/technic_mv_electric_furnace_side.png index 4aa27b7f..176dbe90 100644 Binary files a/technic/textures/technicx32/technic_mv_electric_furnace_side.png and b/technic/textures/technicx32/technic_mv_electric_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png b/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png index bfeba180..d7a30b67 100644 Binary files a/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png and b/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_top.png b/technic/textures/technicx32/technic_mv_electric_furnace_top.png index 635b6b7f..4d081754 100644 Binary files a/technic/textures/technicx32/technic_mv_electric_furnace_top.png and b/technic/textures/technicx32/technic_mv_electric_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_mv_freezer_bottom.png b/technic/textures/technicx32/technic_mv_freezer_bottom.png index 4e3351f8..9473699f 100644 Binary files a/technic/textures/technicx32/technic_mv_freezer_bottom.png and b/technic/textures/technicx32/technic_mv_freezer_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_freezer_front.png b/technic/textures/technicx32/technic_mv_freezer_front.png index 43275144..8a7886c0 100644 Binary files a/technic/textures/technicx32/technic_mv_freezer_front.png and b/technic/textures/technicx32/technic_mv_freezer_front.png differ diff --git a/technic/textures/technicx32/technic_mv_freezer_front_active.png b/technic/textures/technicx32/technic_mv_freezer_front_active.png index 4aba6f81..6c38b7ca 100644 Binary files a/technic/textures/technicx32/technic_mv_freezer_front_active.png and b/technic/textures/technicx32/technic_mv_freezer_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_freezer_side.png b/technic/textures/technicx32/technic_mv_freezer_side.png index c439476e..d2750c5a 100644 Binary files a/technic/textures/technicx32/technic_mv_freezer_side.png and b/technic/textures/technicx32/technic_mv_freezer_side.png differ diff --git a/technic/textures/technicx32/technic_mv_freezer_top.png b/technic/textures/technicx32/technic_mv_freezer_top.png index 2b542121..e0ada4f5 100644 Binary files a/technic/textures/technicx32/technic_mv_freezer_top.png and b/technic/textures/technicx32/technic_mv_freezer_top.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_bottom.png b/technic/textures/technicx32/technic_mv_grinder_bottom.png index f46cd720..7d0253f4 100644 Binary files a/technic/textures/technicx32/technic_mv_grinder_bottom.png and b/technic/textures/technicx32/technic_mv_grinder_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_front.png b/technic/textures/technicx32/technic_mv_grinder_front.png index 6445dfe3..37028187 100644 Binary files a/technic/textures/technicx32/technic_mv_grinder_front.png and b/technic/textures/technicx32/technic_mv_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_front_active.png b/technic/textures/technicx32/technic_mv_grinder_front_active.png index 428e1dcb..4aec191d 100644 Binary files a/technic/textures/technicx32/technic_mv_grinder_front_active.png and b/technic/textures/technicx32/technic_mv_grinder_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_side.png b/technic/textures/technicx32/technic_mv_grinder_side.png index c014f081..3c8900be 100644 Binary files a/technic/textures/technicx32/technic_mv_grinder_side.png and b/technic/textures/technicx32/technic_mv_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_side_tube.png b/technic/textures/technicx32/technic_mv_grinder_side_tube.png index 69050e4d..c8819cef 100644 Binary files a/technic/textures/technicx32/technic_mv_grinder_side_tube.png and b/technic/textures/technicx32/technic_mv_grinder_side_tube.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_top.png b/technic/textures/technicx32/technic_mv_grinder_top.png index e0320ef8..3d670f3f 100644 Binary files a/technic/textures/technicx32/technic_mv_grinder_top.png and b/technic/textures/technicx32/technic_mv_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_mv_solar_array_bottom.png b/technic/textures/technicx32/technic_mv_solar_array_bottom.png index 94c82220..e6bd2c73 100644 Binary files a/technic/textures/technicx32/technic_mv_solar_array_bottom.png and b/technic/textures/technicx32/technic_mv_solar_array_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_solar_array_side.png b/technic/textures/technicx32/technic_mv_solar_array_side.png index d39d3d81..4d081754 100644 Binary files a/technic/textures/technicx32/technic_mv_solar_array_side.png and b/technic/textures/technicx32/technic_mv_solar_array_side.png differ diff --git a/technic/textures/technicx32/technic_mv_solar_array_top.png b/technic/textures/technicx32/technic_mv_solar_array_top.png index e4999d54..af6cc72d 100644 Binary files a/technic/textures/technicx32/technic_mv_solar_array_top.png and b/technic/textures/technicx32/technic_mv_solar_array_top.png differ diff --git a/technic/textures/technicx32/technic_mv_transformer.png b/technic/textures/technicx32/technic_mv_transformer.png index 7c4688eb..5d9173bb 100644 Binary files a/technic/textures/technicx32/technic_mv_transformer.png and b/technic/textures/technicx32/technic_mv_transformer.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_back.png b/technic/textures/technicx32/technic_nodebreaker_back.png index 43ba8216..637148f6 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_back.png and b/technic/textures/technicx32/technic_nodebreaker_back.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_bottom.png b/technic/textures/technicx32/technic_nodebreaker_bottom.png index 99ff6857..936a71df 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_bottom.png and b/technic/textures/technicx32/technic_nodebreaker_bottom.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_bottom_off.png b/technic/textures/technicx32/technic_nodebreaker_bottom_off.png index 47cd4e86..5a1182b5 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_bottom_off.png and b/technic/textures/technicx32/technic_nodebreaker_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_bottom_on.png b/technic/textures/technicx32/technic_nodebreaker_bottom_on.png index 994f787c..1393d0ea 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_bottom_on.png and b/technic/textures/technicx32/technic_nodebreaker_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_front_off.png b/technic/textures/technicx32/technic_nodebreaker_front_off.png index 5ece916a..0f08ad9a 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_front_off.png and b/technic/textures/technicx32/technic_nodebreaker_front_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_front_on.png b/technic/textures/technicx32/technic_nodebreaker_front_on.png index a53de2a5..e94f7c2b 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_front_on.png and b/technic/textures/technicx32/technic_nodebreaker_front_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side.png b/technic/textures/technicx32/technic_nodebreaker_side.png index c2b401bb..401dab91 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side.png and b/technic/textures/technicx32/technic_nodebreaker_side.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side1.png b/technic/textures/technicx32/technic_nodebreaker_side1.png index 07e74aab..c38c6e7a 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side1.png and b/technic/textures/technicx32/technic_nodebreaker_side1.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side1_off.png b/technic/textures/technicx32/technic_nodebreaker_side1_off.png index b63f3bb1..52d0458b 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side1_off.png and b/technic/textures/technicx32/technic_nodebreaker_side1_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side1_on.png b/technic/textures/technicx32/technic_nodebreaker_side1_on.png index b455f064..33f76b35 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side1_on.png and b/technic/textures/technicx32/technic_nodebreaker_side1_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side2.png b/technic/textures/technicx32/technic_nodebreaker_side2.png index 7f4a0bf2..17ae2fda 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side2.png and b/technic/textures/technicx32/technic_nodebreaker_side2.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side2_off.png b/technic/textures/technicx32/technic_nodebreaker_side2_off.png index 7b609020..d702e162 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side2_off.png and b/technic/textures/technicx32/technic_nodebreaker_side2_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side2_on.png b/technic/textures/technicx32/technic_nodebreaker_side2_on.png index 12985f64..e43c800a 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_side2_on.png and b/technic/textures/technicx32/technic_nodebreaker_side2_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_top.png b/technic/textures/technicx32/technic_nodebreaker_top.png index 0994c6d0..dfd8b418 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_top.png and b/technic/textures/technicx32/technic_nodebreaker_top.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_top_off.png b/technic/textures/technicx32/technic_nodebreaker_top_off.png index f08fc1bc..c9c45994 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_top_off.png and b/technic/textures/technicx32/technic_nodebreaker_top_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_top_on.png b/technic/textures/technicx32/technic_nodebreaker_top_on.png index ec28210e..d9ecdf78 100644 Binary files a/technic/textures/technicx32/technic_nodebreaker_top_on.png and b/technic/textures/technicx32/technic_nodebreaker_top_on.png differ diff --git a/technic/textures/technicx32/technic_power_meter.png b/technic/textures/technicx32/technic_power_meter.png index f1e51207..2e28bed9 100644 Binary files a/technic/textures/technicx32/technic_power_meter.png and b/technic/textures/technicx32/technic_power_meter.png differ diff --git a/technic/textures/technicx32/technic_power_meter1.png b/technic/textures/technicx32/technic_power_meter1.png index 0542c7b4..8ee85699 100644 Binary files a/technic/textures/technicx32/technic_power_meter1.png and b/technic/textures/technicx32/technic_power_meter1.png differ diff --git a/technic/textures/technicx32/technic_power_meter2.png b/technic/textures/technicx32/technic_power_meter2.png index bf5703c6..f9072587 100644 Binary files a/technic/textures/technicx32/technic_power_meter2.png and b/technic/textures/technicx32/technic_power_meter2.png differ diff --git a/technic/textures/technicx32/technic_power_meter3.png b/technic/textures/technicx32/technic_power_meter3.png index 42048157..1cf4a122 100644 Binary files a/technic/textures/technicx32/technic_power_meter3.png and b/technic/textures/technicx32/technic_power_meter3.png differ diff --git a/technic/textures/technicx32/technic_power_meter4.png b/technic/textures/technicx32/technic_power_meter4.png index 82a0148d..601de78f 100644 Binary files a/technic/textures/technicx32/technic_power_meter4.png and b/technic/textures/technicx32/technic_power_meter4.png differ diff --git a/technic/textures/technicx32/technic_power_meter5.png b/technic/textures/technicx32/technic_power_meter5.png index af783ca7..b827ca36 100644 Binary files a/technic/textures/technicx32/technic_power_meter5.png and b/technic/textures/technicx32/technic_power_meter5.png differ diff --git a/technic/textures/technicx32/technic_power_meter6.png b/technic/textures/technicx32/technic_power_meter6.png index 44feff40..95107795 100644 Binary files a/technic/textures/technicx32/technic_power_meter6.png and b/technic/textures/technicx32/technic_power_meter6.png differ diff --git a/technic/textures/technicx32/technic_power_meter7.png b/technic/textures/technicx32/technic_power_meter7.png index 554baa21..d9816217 100644 Binary files a/technic/textures/technicx32/technic_power_meter7.png and b/technic/textures/technicx32/technic_power_meter7.png differ diff --git a/technic/textures/technicx32/technic_power_meter8.png b/technic/textures/technicx32/technic_power_meter8.png index 8c4f4a80..34af172b 100644 Binary files a/technic/textures/technicx32/technic_power_meter8.png and b/technic/textures/technicx32/technic_power_meter8.png differ diff --git a/technic/textures/technicx32/technic_power_meter_bg.png b/technic/textures/technicx32/technic_power_meter_bg.png index 9667cda8..bd95e9b1 100644 Binary files a/technic/textures/technicx32/technic_power_meter_bg.png and b/technic/textures/technicx32/technic_power_meter_bg.png differ diff --git a/technic/textures/technicx32/technic_power_meter_fg.png b/technic/textures/technicx32/technic_power_meter_fg.png index 7f2dde87..d26e659f 100644 Binary files a/technic/textures/technicx32/technic_power_meter_fg.png and b/technic/textures/technicx32/technic_power_meter_fg.png differ diff --git a/technic/textures/technicx32/technic_raw_latex.png b/technic/textures/technicx32/technic_raw_latex.png index 7fbbe646..45be0092 100644 Binary files a/technic/textures/technicx32/technic_raw_latex.png and b/technic/textures/technicx32/technic_raw_latex.png differ diff --git a/technic/textures/technicx32/technic_rubber.png b/technic/textures/technicx32/technic_rubber.png index 9ed4a9df..eb78e9fc 100644 Binary files a/technic/textures/technicx32/technic_rubber.png and b/technic/textures/technicx32/technic_rubber.png differ diff --git a/technic/textures/technicx32/technic_rubber_sapling.png b/technic/textures/technicx32/technic_rubber_sapling.png index e5c9f5de..7d3dbf21 100644 Binary files a/technic/textures/technicx32/technic_rubber_sapling.png and b/technic/textures/technicx32/technic_rubber_sapling.png differ diff --git a/technic/textures/technicx32/technic_rubber_tree_empty.png b/technic/textures/technicx32/technic_rubber_tree_empty.png index 1792951e..dc36fa56 100644 Binary files a/technic/textures/technicx32/technic_rubber_tree_empty.png and b/technic/textures/technicx32/technic_rubber_tree_empty.png differ diff --git a/technic/textures/technicx32/technic_rubber_tree_full.png b/technic/textures/technicx32/technic_rubber_tree_full.png index 08067eff..def5cf62 100644 Binary files a/technic/textures/technicx32/technic_rubber_tree_full.png and b/technic/textures/technicx32/technic_rubber_tree_full.png differ diff --git a/technic/textures/technicx32/technic_screwdriver.png b/technic/textures/technicx32/technic_screwdriver.png index bd2da222..dcb04edb 100644 Binary files a/technic/textures/technicx32/technic_screwdriver.png and b/technic/textures/technicx32/technic_screwdriver.png differ diff --git a/technic/textures/technicx32/technic_silicon_wafer.png b/technic/textures/technicx32/technic_silicon_wafer.png index 78aef200..644de065 100644 Binary files a/technic/textures/technicx32/technic_silicon_wafer.png and b/technic/textures/technicx32/technic_silicon_wafer.png differ diff --git a/technic/textures/technicx32/technic_silver_dust.png b/technic/textures/technicx32/technic_silver_dust.png index 9092c90d..f4bb4b0f 100644 Binary files a/technic/textures/technicx32/technic_silver_dust.png and b/technic/textures/technicx32/technic_silver_dust.png differ diff --git a/technic/textures/technicx32/technic_solar_panel_bottom.png b/technic/textures/technicx32/technic_solar_panel_bottom.png index b0ad82f8..315cb40c 100644 Binary files a/technic/textures/technicx32/technic_solar_panel_bottom.png and b/technic/textures/technicx32/technic_solar_panel_bottom.png differ diff --git a/technic/textures/technicx32/technic_solar_panel_side.png b/technic/textures/technicx32/technic_solar_panel_side.png index b22447ef..73b511cd 100644 Binary files a/technic/textures/technicx32/technic_solar_panel_side.png and b/technic/textures/technicx32/technic_solar_panel_side.png differ diff --git a/technic/textures/technicx32/technic_solar_panel_top.png b/technic/textures/technicx32/technic_solar_panel_top.png index 492764bf..78b895b1 100644 Binary files a/technic/textures/technicx32/technic_solar_panel_top.png and b/technic/textures/technicx32/technic_solar_panel_top.png differ diff --git a/technic/textures/technicx32/technic_sonic_screwdriver.png b/technic/textures/technicx32/technic_sonic_screwdriver.png index fb61d961..534bb561 100644 Binary files a/technic/textures/technicx32/technic_sonic_screwdriver.png and b/technic/textures/technicx32/technic_sonic_screwdriver.png differ diff --git a/technic/textures/technicx32/technic_stainless_steel_dust.png b/technic/textures/technicx32/technic_stainless_steel_dust.png index 450e2bbd..3a47cb81 100644 Binary files a/technic/textures/technicx32/technic_stainless_steel_dust.png and b/technic/textures/technicx32/technic_stainless_steel_dust.png differ diff --git a/technic/textures/technicx32/technic_stone_dust.png b/technic/textures/technicx32/technic_stone_dust.png index 3c49fe61..8b3f7eaa 100644 Binary files a/technic/textures/technicx32/technic_stone_dust.png and b/technic/textures/technicx32/technic_stone_dust.png differ diff --git a/technic/textures/technicx32/technic_talinite_dust.png b/technic/textures/technicx32/technic_talinite_dust.png index 39f93309..4a8986dd 100644 Binary files a/technic/textures/technicx32/technic_talinite_dust.png and b/technic/textures/technicx32/technic_talinite_dust.png differ diff --git a/technic/textures/technicx32/technic_tin_dust.png b/technic/textures/technicx32/technic_tin_dust.png index 4e94e002..b41ba9ec 100644 Binary files a/technic/textures/technicx32/technic_tin_dust.png and b/technic/textures/technicx32/technic_tin_dust.png differ diff --git a/technic/textures/technicx32/technic_tree_tap.png b/technic/textures/technicx32/technic_tree_tap.png index 542f30f9..82bb0afa 100644 Binary files a/technic/textures/technicx32/technic_tree_tap.png and b/technic/textures/technicx32/technic_tree_tap.png differ diff --git a/technic/textures/technicx32/technic_uranium_dust.png b/technic/textures/technicx32/technic_uranium_dust.png index d8095c36..e7e0b008 100644 Binary files a/technic/textures/technicx32/technic_uranium_dust.png and b/technic/textures/technicx32/technic_uranium_dust.png differ diff --git a/technic/textures/technicx32/technic_water_can.png b/technic/textures/technicx32/technic_water_can.png index 18e0225b..efdf2dd7 100644 Binary files a/technic/textures/technicx32/technic_water_can.png and b/technic/textures/technicx32/technic_water_can.png differ diff --git a/technic/textures/technicx32/technic_water_mill_side.png b/technic/textures/technicx32/technic_water_mill_side.png index f4bdb167..4614c58e 100644 Binary files a/technic/textures/technicx32/technic_water_mill_side.png and b/technic/textures/technicx32/technic_water_mill_side.png differ diff --git a/technic/textures/technicx32/technic_water_mill_top.png b/technic/textures/technicx32/technic_water_mill_top.png index 601ff15f..66300a34 100644 Binary files a/technic/textures/technicx32/technic_water_mill_top.png and b/technic/textures/technicx32/technic_water_mill_top.png differ diff --git a/technic/textures/technicx32/technic_water_mill_top_active.png b/technic/textures/technicx32/technic_water_mill_top_active.png index f02bec60..cc62e9f5 100644 Binary files a/technic/textures/technicx32/technic_water_mill_top_active.png and b/technic/textures/technicx32/technic_water_mill_top_active.png differ diff --git a/technic/textures/technicx32/technic_workshop_bottom.png b/technic/textures/technicx32/technic_workshop_bottom.png index bd8fd552..b738f1d7 100644 Binary files a/technic/textures/technicx32/technic_workshop_bottom.png and b/technic/textures/technicx32/technic_workshop_bottom.png differ diff --git a/technic/textures/technicx32/technic_workshop_side.png b/technic/textures/technicx32/technic_workshop_side.png index 9e3e7a76..947fb63b 100644 Binary files a/technic/textures/technicx32/technic_workshop_side.png and b/technic/textures/technicx32/technic_workshop_side.png differ diff --git a/technic/textures/technicx32/technic_workshop_top.png b/technic/textures/technicx32/technic_workshop_top.png index feae1413..3e0cd869 100644 Binary files a/technic/textures/technicx32/technic_workshop_top.png and b/technic/textures/technicx32/technic_workshop_top.png differ diff --git a/technic/textures/technicx32/technic_wrought_iron_dust.png b/technic/textures/technicx32/technic_wrought_iron_dust.png index d890e73d..6b0b4219 100644 Binary files a/technic/textures/technicx32/technic_wrought_iron_dust.png and b/technic/textures/technicx32/technic_wrought_iron_dust.png differ diff --git a/technic/textures/technicx32/technic_zinc_dust.png b/technic/textures/technicx32/technic_zinc_dust.png index 0d2f75a8..1443585e 100644 Binary files a/technic/textures/technicx32/technic_zinc_dust.png and b/technic/textures/technicx32/technic_zinc_dust.png differ diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua index 4b9ccfd1..22685cfa 100644 --- a/technic/tools/chainsaw.lua +++ b/technic/tools/chainsaw.lua @@ -7,158 +7,153 @@ local chainsaw_charge_per_node = 12 -- if this is disabled. local chainsaw_leaves = true --- The default trees -local timber_nodenames = { - ["default:acacia_tree"] = true, - ["default:aspen_tree"] = true, - ["default:jungletree"] = true, - ["default:papyrus"] = true, - ["default:cactus"] = true, - ["default:tree"] = true, - ["default:apple"] = true, - ["default:pine_tree"] = true, +-- First value is node name; second is whether the node is considered even if chainsaw_leaves is false. +local nodes = { + -- The default trees + {"default:acacia_tree", true}, + {"default:aspen_tree", true}, + {"default:jungletree", true}, + {"default:papyrus", true}, + {"default:cactus", true}, + {"default:tree", true}, + {"default:apple", true}, + {"default:pine_tree", true}, + {"default:acacia_leaves", false}, + {"default:aspen_leaves", false}, + {"default:leaves", false}, + {"default:jungleleaves", false}, + {"default:pine_needles", false}, + + -- Rubber trees from moretrees or technic_worldgen if moretrees isn't installed + {"moretrees:rubber_tree_trunk_empty", true}, + {"moretrees:rubber_tree_trunk", true}, + {"moretrees:rubber_tree_leaves", false}, + + -- Support moretrees + {"moretrees:acacia_trunk", true}, + {"moretrees:apple_tree_trunk", true}, + {"moretrees:beech_trunk", true}, + {"moretrees:birch_trunk", true}, + {"moretrees:fir_trunk", true}, + {"moretrees:oak_trunk", true}, + {"moretrees:palm_trunk", true}, + {"moretrees:pine_trunk", true}, + {"moretrees:sequoia_trunk", true}, + {"moretrees:spruce_trunk", true}, + {"moretrees:willow_trunk", true}, + {"moretrees:jungletree_trunk", true}, + {"moretrees:poplar_trunk", true}, + {"moretrees:acacia_leaves", false}, + {"moretrees:apple_tree_leaves", false}, + {"moretrees:oak_leaves", false}, + {"moretrees:fir_leaves", false}, + {"moretrees:fir_leaves_bright", false}, + {"moretrees:sequoia_leaves", false}, + {"moretrees:birch_leaves", false}, + {"moretrees:birch_leaves", false}, + {"moretrees:palm_leaves", false}, + {"moretrees:spruce_leaves", false}, + {"moretrees:spruce_leaves", false}, + {"moretrees:pine_leaves", false}, + {"moretrees:willow_leaves", false}, + {"moretrees:jungletree_leaves_green", false}, + {"moretrees:jungletree_leaves_yellow", false}, + {"moretrees:jungletree_leaves_red", false}, + {"moretrees:acorn", false}, + {"moretrees:coconut", false}, + {"moretrees:spruce_cone", false}, + {"moretrees:pine_cone", false}, + {"moretrees:fir_cone", false}, + {"moretrees:apple_blossoms", false}, + {"moretrees:poplar_leaves", false}, + + -- Support growing_trees + {"growing_trees:trunk", true}, + {"growing_trees:medium_trunk", true}, + {"growing_trees:big_trunk", true}, + {"growing_trees:trunk_top", true}, + {"growing_trees:trunk_sprout", true}, + {"growing_trees:branch_sprout", true}, + {"growing_trees:branch", true}, + {"growing_trees:branch_xmzm", true}, + {"growing_trees:branch_xpzm", true}, + {"growing_trees:branch_xmzp", true}, + {"growing_trees:branch_xpzp", true}, + {"growing_trees:branch_zz", true}, + {"growing_trees:branch_xx", true}, + {"growing_trees:leaves", false}, + + -- Support cool_trees + {"bamboo:trunk", true}, + {"bamboo:leaves", false}, + {"birch:trunk", true}, + {"birch:leaves", false}, + {"cherrytree:trunk", true}, + {"cherrytree:blossom_leaves", false}, + {"cherrytree:leaves", false}, + {"chestnuttree:trunk", true}, + {"chestnuttree:leaves", false}, + {"clementinetree:trunk", true}, + {"clementinetree:leaves", false}, + {"ebony:trunk", true}, + {"ebony:creeper", false}, + {"ebony:creeper_leaves", false}, + {"ebony:leaves", false}, + {"jacaranda:trunk", true}, + {"jacaranda:blossom_leaves", false}, + {"larch:trunk", true}, + {"larch:leaves", false}, + {"lemontree:trunk", true}, + {"lemontree:leaves", false}, + {"mahogany:trunk", true}, + {"mahogany:leaves", false}, + {"palm:trunk", true}, + {"palm:leaves", false}, + + -- Support growing_cactus + {"growing_cactus:sprout", true}, + {"growing_cactus:branch_sprout_vertical", true}, + {"growing_cactus:branch_sprout_vertical_fixed", true}, + {"growing_cactus:branch_sprout_xp", true}, + {"growing_cactus:branch_sprout_xm", true}, + {"growing_cactus:branch_sprout_zp", true}, + {"growing_cactus:branch_sprout_zm", true}, + {"growing_cactus:trunk", true}, + {"growing_cactus:branch_trunk", true}, + {"growing_cactus:branch", true}, + {"growing_cactus:branch_xp", true}, + {"growing_cactus:branch_xm", true}, + {"growing_cactus:branch_zp", true}, + {"growing_cactus:branch_zm", true}, + {"growing_cactus:branch_zz", true}, + {"growing_cactus:branch_xx", true}, + + -- Support farming_plus + {"farming_plus:banana_leaves", false}, + {"farming_plus:banana", false}, + {"farming_plus:cocoa_leaves", false}, + {"farming_plus:cocoa", false}, + + -- Support nature + {"nature:blossom", false}, + + -- Support snow + {"snow:needles", false}, + {"snow:needles_decorated", false}, + {"snow:star", false}, + + -- Support vines (also generated by moretrees if available) + {"vines:vines", false}, + + {"trunks:moss", false}, + {"trunks:moss_fungus", false}, + {"trunks:treeroot", false}, } -if chainsaw_leaves then - timber_nodenames["default:acacia_leaves"] = true - timber_nodenames["default:aspen_leaves"] = true - timber_nodenames["default:leaves"] = true - timber_nodenames["default:jungleleaves"] = true - timber_nodenames["default:pine_needles"] = true -end - --- technic_worldgen defines rubber trees if moretrees isn't installed -if minetest.get_modpath("technic_worldgen") or - minetest.get_modpath("moretrees") then - timber_nodenames["moretrees:rubber_tree_trunk_empty"] = true - timber_nodenames["moretrees:rubber_tree_trunk"] = true - if chainsaw_leaves then - timber_nodenames["moretrees:rubber_tree_leaves"] = true - end -end - --- Support moretrees if it is there -if minetest.get_modpath("moretrees") then - timber_nodenames["moretrees:acacia_trunk"] = true - timber_nodenames["moretrees:apple_tree_trunk"] = true - timber_nodenames["moretrees:beech_trunk"] = true - timber_nodenames["moretrees:birch_trunk"] = true - timber_nodenames["moretrees:fir_trunk"] = true - timber_nodenames["moretrees:oak_trunk"] = true - timber_nodenames["moretrees:palm_trunk"] = true - timber_nodenames["moretrees:pine_trunk"] = true - timber_nodenames["moretrees:sequoia_trunk"] = true - timber_nodenames["moretrees:spruce_trunk"] = true - timber_nodenames["moretrees:willow_trunk"] = true - timber_nodenames["moretrees:jungletree_trunk"] = true - timber_nodenames["moretrees:poplar_trunk"] = true - - if chainsaw_leaves then - timber_nodenames["moretrees:acacia_leaves"] = true - timber_nodenames["moretrees:apple_tree_leaves"] = true - timber_nodenames["moretrees:oak_leaves"] = true - timber_nodenames["moretrees:fir_leaves"] = true - timber_nodenames["moretrees:fir_leaves_bright"] = true - timber_nodenames["moretrees:sequoia_leaves"] = true - timber_nodenames["moretrees:birch_leaves"] = true - timber_nodenames["moretrees:birch_leaves"] = true - timber_nodenames["moretrees:palm_leaves"] = true - timber_nodenames["moretrees:spruce_leaves"] = true - timber_nodenames["moretrees:spruce_leaves"] = true - timber_nodenames["moretrees:pine_leaves"] = true - timber_nodenames["moretrees:willow_leaves"] = true - timber_nodenames["moretrees:jungletree_leaves_green"] = true - timber_nodenames["moretrees:jungletree_leaves_yellow"] = true - timber_nodenames["moretrees:jungletree_leaves_red"] = true - timber_nodenames["moretrees:acorn"] = true - timber_nodenames["moretrees:coconut"] = true - timber_nodenames["moretrees:spruce_cone"] = true - timber_nodenames["moretrees:pine_cone"] = true - timber_nodenames["moretrees:fir_cone"] = true - timber_nodenames["moretrees:apple_blossoms"] = true - timber_nodenames["moretrees:poplar_leaves"] = true - end -end - --- Support growing_trees -if minetest.get_modpath("growing_trees") then - timber_nodenames["growing_trees:trunk"] = true - timber_nodenames["growing_trees:medium_trunk"] = true - timber_nodenames["growing_trees:big_trunk"] = true - timber_nodenames["growing_trees:trunk_top"] = true - timber_nodenames["growing_trees:trunk_sprout"] = true - timber_nodenames["growing_trees:branch_sprout"] = true - timber_nodenames["growing_trees:branch"] = true - timber_nodenames["growing_trees:branch_xmzm"] = true - timber_nodenames["growing_trees:branch_xpzm"] = true - timber_nodenames["growing_trees:branch_xmzp"] = true - timber_nodenames["growing_trees:branch_xpzp"] = true - timber_nodenames["growing_trees:branch_zz"] = true - timber_nodenames["growing_trees:branch_xx"] = true - - if chainsaw_leaves then - timber_nodenames["growing_trees:leaves"] = true - end -end - --- Support growing_cactus -if minetest.get_modpath("growing_cactus") then - timber_nodenames["growing_cactus:sprout"] = true - timber_nodenames["growing_cactus:branch_sprout_vertical"] = true - timber_nodenames["growing_cactus:branch_sprout_vertical_fixed"] = true - timber_nodenames["growing_cactus:branch_sprout_xp"] = true - timber_nodenames["growing_cactus:branch_sprout_xm"] = true - timber_nodenames["growing_cactus:branch_sprout_zp"] = true - timber_nodenames["growing_cactus:branch_sprout_zm"] = true - timber_nodenames["growing_cactus:trunk"] = true - timber_nodenames["growing_cactus:branch_trunk"] = true - timber_nodenames["growing_cactus:branch"] = true - timber_nodenames["growing_cactus:branch_xp"] = true - timber_nodenames["growing_cactus:branch_xm"] = true - timber_nodenames["growing_cactus:branch_zp"] = true - timber_nodenames["growing_cactus:branch_zm"] = true - timber_nodenames["growing_cactus:branch_zz"] = true - timber_nodenames["growing_cactus:branch_xx"] = true -end - --- Support farming_plus -if minetest.get_modpath("farming_plus") then - if chainsaw_leaves then - timber_nodenames["farming_plus:banana_leaves"] = true - timber_nodenames["farming_plus:banana"] = true - timber_nodenames["farming_plus:cocoa_leaves"] = true - timber_nodenames["farming_plus:cocoa"] = true - end -end - --- Support nature -if minetest.get_modpath("nature") then - if chainsaw_leaves then - timber_nodenames["nature:blossom"] = true - end -end - --- Support snow -if minetest.get_modpath("snow") then - if chainsaw_leaves then - timber_nodenames["snow:needles"] = true - timber_nodenames["snow:needles_decorated"] = true - timber_nodenames["snow:star"] = true - end -end - --- Support vines (also generated by moretrees if available) -if minetest.get_modpath("vines") then - if chainsaw_leaves then - timber_nodenames["vines:vines"] = true - end -end - -if minetest.get_modpath("trunks") then - if chainsaw_leaves then - timber_nodenames["trunks:moss"] = true - timber_nodenames["trunks:moss_fungus"] = true - timber_nodenames["trunks:treeroot"] = true +local timber_nodenames = {} +for _, node in pairs(nodes) do + if chainsaw_leaves or node[2] then + timber_nodenames[node[1]] = true end end diff --git a/technic_chests/locale/fr.txt b/technic_chests/locale/fr.txt new file mode 100644 index 00000000..d6fec250 --- /dev/null +++ b/technic_chests/locale/fr.txt @@ -0,0 +1,39 @@ +# technic_chests translation template + +%s Chest = Coffre en %s +%s Locked Chest = Coffre vérouillé en %s +%s Locked Chest (owned by %s) = Coffre vérouillé en %s (appartenant à %s) +Color Filter: %s = Filtre couleur : %s +Edit chest description: = Editer la descrition du coffre + +# Colors +Black = Noir +Blue = Bleu +Brown = Marron +Cyan = Cyan +Dark Green = Vert sombre +Dark Grey = Gris sombre +Green = Vert +Grey = Gris +Magenta = Magenta +Orange = Orange +Pink = Rose +Red = Rouge +Violet = Violet +White = Blanc +Yellow = Jaune +None = Rien + +# Materials +Copper = Cuivre +Gold = Or +Iron = Fer +Mithril = Mithril +Silver = Argent +Wooden = Bois + +# Sorting +Sort = Tri +Auto-sort is %s = Tri automatique %s +Off = inactivé +On = activé diff --git a/technic_chests/locale/pt_BR.txt b/technic_chests/locale/pt_BR.txt new file mode 100644 index 00000000..35e5845c --- /dev/null +++ b/technic_chests/locale/pt_BR.txt @@ -0,0 +1,41 @@ +# Braziliam portuguese translation for technic_chests +# Tradução portuguesa brasileira para technic_chests +# By Sires + +%s Chest = Baú %s +%s Locked Chest = Baú Trancado %s +%s Locked Chest (owned by %s) = Baú Trancado %s (pertence a/à %s) +Color Filter: %s = Filtro de Cor: %s +Edit chest description: = Editar descrição do baú: + +# Colors +Black = Preto +Blue = Azul +Brown = Marrom +Cyan = Ciano +Dark Green = Verde Escuro +Dark Grey = Cinza Escuro +Green = Verde +Grey = Cinza +Magenta = Magenta +Orange = Laranja +Pink = Rosa +Red = Vermelho +Violet = Violeta +White = Branco +Yellow = Amarelo +None = Nada + +# Materials +Copper = Cobre +Gold = Ouro +Iron = Ferro +Mithril = Mithril +Silver = Prata +Wooden = de Madeira + +# Sorting +Sort = Ordenar +Auto-sort is %s = Auto-ordenação está %s +Off = Desligada +On = Ligada diff --git a/technic_chests/textures/technic_checkmark_icon.png b/technic_chests/textures/technic_checkmark_icon.png index 369d2946..d0d55fd1 100644 Binary files a/technic_chests/textures/technic_checkmark_icon.png and b/technic_chests/textures/technic_checkmark_icon.png differ diff --git a/technic_chests/textures/technic_chest_form_bg.png b/technic_chests/textures/technic_chest_form_bg.png index 37683f05..74a6a3bd 100644 Binary files a/technic_chests/textures/technic_chest_form_bg.png and b/technic_chests/textures/technic_chest_form_bg.png differ diff --git a/technic_chests/textures/technic_chest_overlay_black.png b/technic_chests/textures/technic_chest_overlay_black.png index fa25304c..d8bc5e82 100644 Binary files a/technic_chests/textures/technic_chest_overlay_black.png and b/technic_chests/textures/technic_chest_overlay_black.png differ diff --git a/technic_chests/textures/technic_chest_overlay_blue.png b/technic_chests/textures/technic_chest_overlay_blue.png index 512cd4ff..c6d4297c 100644 Binary files a/technic_chests/textures/technic_chest_overlay_blue.png and b/technic_chests/textures/technic_chest_overlay_blue.png differ diff --git a/technic_chests/textures/technic_chest_overlay_brown.png b/technic_chests/textures/technic_chest_overlay_brown.png index 64c1d55a..189b5161 100644 Binary files a/technic_chests/textures/technic_chest_overlay_brown.png and b/technic_chests/textures/technic_chest_overlay_brown.png differ diff --git a/technic_chests/textures/technic_chest_overlay_cyan.png b/technic_chests/textures/technic_chest_overlay_cyan.png index 46732f4a..6fb7568e 100644 Binary files a/technic_chests/textures/technic_chest_overlay_cyan.png and b/technic_chests/textures/technic_chest_overlay_cyan.png differ diff --git a/technic_chests/textures/technic_chest_overlay_dark_green.png b/technic_chests/textures/technic_chest_overlay_dark_green.png index 941236b1..4f4fb2bb 100644 Binary files a/technic_chests/textures/technic_chest_overlay_dark_green.png and b/technic_chests/textures/technic_chest_overlay_dark_green.png differ diff --git a/technic_chests/textures/technic_chest_overlay_dark_grey.png b/technic_chests/textures/technic_chest_overlay_dark_grey.png index e6b8f77d..a8ca5858 100644 Binary files a/technic_chests/textures/technic_chest_overlay_dark_grey.png and b/technic_chests/textures/technic_chest_overlay_dark_grey.png differ diff --git a/technic_chests/textures/technic_chest_overlay_green.png b/technic_chests/textures/technic_chest_overlay_green.png index 4b9543fc..97091252 100644 Binary files a/technic_chests/textures/technic_chest_overlay_green.png and b/technic_chests/textures/technic_chest_overlay_green.png differ diff --git a/technic_chests/textures/technic_chest_overlay_grey.png b/technic_chests/textures/technic_chest_overlay_grey.png index 8a1c9f0f..0e5da713 100644 Binary files a/technic_chests/textures/technic_chest_overlay_grey.png and b/technic_chests/textures/technic_chest_overlay_grey.png differ diff --git a/technic_chests/textures/technic_chest_overlay_magenta.png b/technic_chests/textures/technic_chest_overlay_magenta.png index 75b220d9..1a6eb97f 100644 Binary files a/technic_chests/textures/technic_chest_overlay_magenta.png and b/technic_chests/textures/technic_chest_overlay_magenta.png differ diff --git a/technic_chests/textures/technic_chest_overlay_orange.png b/technic_chests/textures/technic_chest_overlay_orange.png index 02c095d4..7a79117b 100644 Binary files a/technic_chests/textures/technic_chest_overlay_orange.png and b/technic_chests/textures/technic_chest_overlay_orange.png differ diff --git a/technic_chests/textures/technic_chest_overlay_pink.png b/technic_chests/textures/technic_chest_overlay_pink.png index 0b6ccb42..0ddff584 100644 Binary files a/technic_chests/textures/technic_chest_overlay_pink.png and b/technic_chests/textures/technic_chest_overlay_pink.png differ diff --git a/technic_chests/textures/technic_chest_overlay_red.png b/technic_chests/textures/technic_chest_overlay_red.png index 4b446429..e5cedb42 100644 Binary files a/technic_chests/textures/technic_chest_overlay_red.png and b/technic_chests/textures/technic_chest_overlay_red.png differ diff --git a/technic_chests/textures/technic_chest_overlay_violet.png b/technic_chests/textures/technic_chest_overlay_violet.png index 89471f93..bdbe88b2 100644 Binary files a/technic_chests/textures/technic_chest_overlay_violet.png and b/technic_chests/textures/technic_chest_overlay_violet.png differ diff --git a/technic_chests/textures/technic_chest_overlay_white.png b/technic_chests/textures/technic_chest_overlay_white.png index b49e2534..389a496d 100644 Binary files a/technic_chests/textures/technic_chest_overlay_white.png and b/technic_chests/textures/technic_chest_overlay_white.png differ diff --git a/technic_chests/textures/technic_chest_overlay_yellow.png b/technic_chests/textures/technic_chest_overlay_yellow.png index d5632576..db65b54e 100644 Binary files a/technic_chests/textures/technic_chest_overlay_yellow.png and b/technic_chests/textures/technic_chest_overlay_yellow.png differ diff --git a/technic_chests/textures/technic_colorbutton0.png b/technic_chests/textures/technic_colorbutton0.png index 35b7db27..64905041 100644 Binary files a/technic_chests/textures/technic_colorbutton0.png and b/technic_chests/textures/technic_colorbutton0.png differ diff --git a/technic_chests/textures/technic_colorbutton1.png b/technic_chests/textures/technic_colorbutton1.png index cbf095df..5497c53d 100644 Binary files a/technic_chests/textures/technic_colorbutton1.png and b/technic_chests/textures/technic_colorbutton1.png differ diff --git a/technic_chests/textures/technic_colorbutton10.png b/technic_chests/textures/technic_colorbutton10.png index 8dfc5f02..d659c8cf 100644 Binary files a/technic_chests/textures/technic_colorbutton10.png and b/technic_chests/textures/technic_colorbutton10.png differ diff --git a/technic_chests/textures/technic_colorbutton11.png b/technic_chests/textures/technic_colorbutton11.png index 3b279e00..bce51dd5 100644 Binary files a/technic_chests/textures/technic_colorbutton11.png and b/technic_chests/textures/technic_colorbutton11.png differ diff --git a/technic_chests/textures/technic_colorbutton12.png b/technic_chests/textures/technic_colorbutton12.png index a387b5f9..bb1137c8 100644 Binary files a/technic_chests/textures/technic_colorbutton12.png and b/technic_chests/textures/technic_colorbutton12.png differ diff --git a/technic_chests/textures/technic_colorbutton13.png b/technic_chests/textures/technic_colorbutton13.png index b1e7790c..551404f9 100644 Binary files a/technic_chests/textures/technic_colorbutton13.png and b/technic_chests/textures/technic_colorbutton13.png differ diff --git a/technic_chests/textures/technic_colorbutton14.png b/technic_chests/textures/technic_colorbutton14.png index c4ad4868..ebc890cd 100644 Binary files a/technic_chests/textures/technic_colorbutton14.png and b/technic_chests/textures/technic_colorbutton14.png differ diff --git a/technic_chests/textures/technic_colorbutton15.png b/technic_chests/textures/technic_colorbutton15.png index b7060d67..b670a8a7 100644 Binary files a/technic_chests/textures/technic_colorbutton15.png and b/technic_chests/textures/technic_colorbutton15.png differ diff --git a/technic_chests/textures/technic_colorbutton2.png b/technic_chests/textures/technic_colorbutton2.png index caf1fc6f..fc3da7e7 100644 Binary files a/technic_chests/textures/technic_colorbutton2.png and b/technic_chests/textures/technic_colorbutton2.png differ diff --git a/technic_chests/textures/technic_colorbutton3.png b/technic_chests/textures/technic_colorbutton3.png index 6ac79a35..65f60fa2 100644 Binary files a/technic_chests/textures/technic_colorbutton3.png and b/technic_chests/textures/technic_colorbutton3.png differ diff --git a/technic_chests/textures/technic_colorbutton4.png b/technic_chests/textures/technic_colorbutton4.png index dc435921..547fb499 100644 Binary files a/technic_chests/textures/technic_colorbutton4.png and b/technic_chests/textures/technic_colorbutton4.png differ diff --git a/technic_chests/textures/technic_colorbutton5.png b/technic_chests/textures/technic_colorbutton5.png index 98b8c67f..d36eb3d1 100644 Binary files a/technic_chests/textures/technic_colorbutton5.png and b/technic_chests/textures/technic_colorbutton5.png differ diff --git a/technic_chests/textures/technic_colorbutton6.png b/technic_chests/textures/technic_colorbutton6.png index 66478bc5..1874356b 100644 Binary files a/technic_chests/textures/technic_colorbutton6.png and b/technic_chests/textures/technic_colorbutton6.png differ diff --git a/technic_chests/textures/technic_colorbutton7.png b/technic_chests/textures/technic_colorbutton7.png index 85f6b93b..01cad366 100644 Binary files a/technic_chests/textures/technic_colorbutton7.png and b/technic_chests/textures/technic_colorbutton7.png differ diff --git a/technic_chests/textures/technic_colorbutton8.png b/technic_chests/textures/technic_colorbutton8.png index 868c35d0..4ef53ab4 100644 Binary files a/technic_chests/textures/technic_colorbutton8.png and b/technic_chests/textures/technic_colorbutton8.png differ diff --git a/technic_chests/textures/technic_colorbutton9.png b/technic_chests/textures/technic_colorbutton9.png index 50eac0b5..db64417b 100644 Binary files a/technic_chests/textures/technic_colorbutton9.png and b/technic_chests/textures/technic_colorbutton9.png differ diff --git a/technic_chests/textures/technic_copper_chest_front.png b/technic_chests/textures/technic_copper_chest_front.png index add51e86..54e24da4 100644 Binary files a/technic_chests/textures/technic_copper_chest_front.png and b/technic_chests/textures/technic_copper_chest_front.png differ diff --git a/technic_chests/textures/technic_copper_chest_inventory.png b/technic_chests/textures/technic_copper_chest_inventory.png index 70da5108..2f4cb125 100644 Binary files a/technic_chests/textures/technic_copper_chest_inventory.png and b/technic_chests/textures/technic_copper_chest_inventory.png differ diff --git a/technic_chests/textures/technic_copper_chest_lock_overlay.png b/technic_chests/textures/technic_copper_chest_lock_overlay.png index 49f7f2a9..d5924031 100644 Binary files a/technic_chests/textures/technic_copper_chest_lock_overlay.png and b/technic_chests/textures/technic_copper_chest_lock_overlay.png differ diff --git a/technic_chests/textures/technic_copper_chest_side.png b/technic_chests/textures/technic_copper_chest_side.png index 2231ccef..420a84cc 100644 Binary files a/technic_chests/textures/technic_copper_chest_side.png and b/technic_chests/textures/technic_copper_chest_side.png differ diff --git a/technic_chests/textures/technic_copper_chest_top.png b/technic_chests/textures/technic_copper_chest_top.png index 69f10786..31a51ecf 100644 Binary files a/technic_chests/textures/technic_copper_chest_top.png and b/technic_chests/textures/technic_copper_chest_top.png differ diff --git a/technic_chests/textures/technic_form_bg.png b/technic_chests/textures/technic_form_bg.png index 37683f05..74a6a3bd 100644 Binary files a/technic_chests/textures/technic_form_bg.png and b/technic_chests/textures/technic_form_bg.png differ diff --git a/technic_chests/textures/technic_gold_chest_front.png b/technic_chests/textures/technic_gold_chest_front.png index 27036d72..db566ded 100644 Binary files a/technic_chests/textures/technic_gold_chest_front.png and b/technic_chests/textures/technic_gold_chest_front.png differ diff --git a/technic_chests/textures/technic_gold_chest_inventory.png b/technic_chests/textures/technic_gold_chest_inventory.png index d4aa8b30..a549cbb8 100644 Binary files a/technic_chests/textures/technic_gold_chest_inventory.png and b/technic_chests/textures/technic_gold_chest_inventory.png differ diff --git a/technic_chests/textures/technic_gold_chest_lock_overlay.png b/technic_chests/textures/technic_gold_chest_lock_overlay.png index 51dea715..cec7369a 100644 Binary files a/technic_chests/textures/technic_gold_chest_lock_overlay.png and b/technic_chests/textures/technic_gold_chest_lock_overlay.png differ diff --git a/technic_chests/textures/technic_gold_chest_side.png b/technic_chests/textures/technic_gold_chest_side.png index 9a0de397..d556c141 100644 Binary files a/technic_chests/textures/technic_gold_chest_side.png and b/technic_chests/textures/technic_gold_chest_side.png differ diff --git a/technic_chests/textures/technic_gold_chest_top.png b/technic_chests/textures/technic_gold_chest_top.png index abfc081d..79b0367a 100644 Binary files a/technic_chests/textures/technic_gold_chest_top.png and b/technic_chests/textures/technic_gold_chest_top.png differ diff --git a/technic_chests/textures/technic_iron_chest_front.png b/technic_chests/textures/technic_iron_chest_front.png index 8c00473a..b0cffb5f 100644 Binary files a/technic_chests/textures/technic_iron_chest_front.png and b/technic_chests/textures/technic_iron_chest_front.png differ diff --git a/technic_chests/textures/technic_iron_chest_inventory.png b/technic_chests/textures/technic_iron_chest_inventory.png index a33967bd..10837958 100644 Binary files a/technic_chests/textures/technic_iron_chest_inventory.png and b/technic_chests/textures/technic_iron_chest_inventory.png differ diff --git a/technic_chests/textures/technic_iron_chest_lock_overlay.png b/technic_chests/textures/technic_iron_chest_lock_overlay.png index 1750b82e..b7409301 100644 Binary files a/technic_chests/textures/technic_iron_chest_lock_overlay.png and b/technic_chests/textures/technic_iron_chest_lock_overlay.png differ diff --git a/technic_chests/textures/technic_iron_chest_side.png b/technic_chests/textures/technic_iron_chest_side.png index 7233688f..ecb3e821 100644 Binary files a/technic_chests/textures/technic_iron_chest_side.png and b/technic_chests/textures/technic_iron_chest_side.png differ diff --git a/technic_chests/textures/technic_iron_chest_top.png b/technic_chests/textures/technic_iron_chest_top.png index 48d24375..248f8f67 100644 Binary files a/technic_chests/textures/technic_iron_chest_top.png and b/technic_chests/textures/technic_iron_chest_top.png differ diff --git a/technic_chests/textures/technic_main_inventory.png b/technic_chests/textures/technic_main_inventory.png index b65dabbb..b9030b54 100644 Binary files a/technic_chests/textures/technic_main_inventory.png and b/technic_chests/textures/technic_main_inventory.png differ diff --git a/technic_chests/textures/technic_mithril_chest_front.png b/technic_chests/textures/technic_mithril_chest_front.png index f0e0c235..1cde4212 100644 Binary files a/technic_chests/textures/technic_mithril_chest_front.png and b/technic_chests/textures/technic_mithril_chest_front.png differ diff --git a/technic_chests/textures/technic_mithril_chest_inventory.png b/technic_chests/textures/technic_mithril_chest_inventory.png index d4aa8b30..a549cbb8 100644 Binary files a/technic_chests/textures/technic_mithril_chest_inventory.png and b/technic_chests/textures/technic_mithril_chest_inventory.png differ diff --git a/technic_chests/textures/technic_mithril_chest_lock_overlay.png b/technic_chests/textures/technic_mithril_chest_lock_overlay.png index d227c51b..ec5ceec0 100644 Binary files a/technic_chests/textures/technic_mithril_chest_lock_overlay.png and b/technic_chests/textures/technic_mithril_chest_lock_overlay.png differ diff --git a/technic_chests/textures/technic_mithril_chest_side.png b/technic_chests/textures/technic_mithril_chest_side.png index 1c2c3a7b..12f6f1e5 100644 Binary files a/technic_chests/textures/technic_mithril_chest_side.png and b/technic_chests/textures/technic_mithril_chest_side.png differ diff --git a/technic_chests/textures/technic_mithril_chest_top.png b/technic_chests/textures/technic_mithril_chest_top.png index e196baf0..d3a66cee 100644 Binary files a/technic_chests/textures/technic_mithril_chest_top.png and b/technic_chests/textures/technic_mithril_chest_top.png differ diff --git a/technic_chests/textures/technic_pencil_icon.png b/technic_chests/textures/technic_pencil_icon.png index 8079edef..f8511c74 100644 Binary files a/technic_chests/textures/technic_pencil_icon.png and b/technic_chests/textures/technic_pencil_icon.png differ diff --git a/technic_chests/textures/technic_silver_chest_front.png b/technic_chests/textures/technic_silver_chest_front.png index 5ae58316..e21046a7 100644 Binary files a/technic_chests/textures/technic_silver_chest_front.png and b/technic_chests/textures/technic_silver_chest_front.png differ diff --git a/technic_chests/textures/technic_silver_chest_inventory.png b/technic_chests/textures/technic_silver_chest_inventory.png index b2fe835b..b273cae3 100644 Binary files a/technic_chests/textures/technic_silver_chest_inventory.png and b/technic_chests/textures/technic_silver_chest_inventory.png differ diff --git a/technic_chests/textures/technic_silver_chest_lock_overlay.png b/technic_chests/textures/technic_silver_chest_lock_overlay.png index cb1bdb0e..af71a01d 100644 Binary files a/technic_chests/textures/technic_silver_chest_lock_overlay.png and b/technic_chests/textures/technic_silver_chest_lock_overlay.png differ diff --git a/technic_chests/textures/technic_silver_chest_side.png b/technic_chests/textures/technic_silver_chest_side.png index 4b4ce545..98912abd 100644 Binary files a/technic_chests/textures/technic_silver_chest_side.png and b/technic_chests/textures/technic_silver_chest_side.png differ diff --git a/technic_chests/textures/technic_silver_chest_top.png b/technic_chests/textures/technic_silver_chest_top.png index 79196d63..773fa69b 100644 Binary files a/technic_chests/textures/technic_silver_chest_top.png and b/technic_chests/textures/technic_silver_chest_top.png differ diff --git a/technic_chests/textures/technic_wooden_chest_inventory.png b/technic_chests/textures/technic_wooden_chest_inventory.png index 5ffbc120..2fdc53cd 100644 Binary files a/technic_chests/textures/technic_wooden_chest_inventory.png and b/technic_chests/textures/technic_wooden_chest_inventory.png differ diff --git a/technic_chests/textures/x32/technic_copper_chest_front.png b/technic_chests/textures/x32/technic_copper_chest_front.png index 17694358..6d64f250 100644 Binary files a/technic_chests/textures/x32/technic_copper_chest_front.png and b/technic_chests/textures/x32/technic_copper_chest_front.png differ diff --git a/technic_chests/textures/x32/technic_copper_chest_side.png b/technic_chests/textures/x32/technic_copper_chest_side.png index 2c7943f3..e20e5023 100644 Binary files a/technic_chests/textures/x32/technic_copper_chest_side.png and b/technic_chests/textures/x32/technic_copper_chest_side.png differ diff --git a/technic_chests/textures/x32/technic_copper_chest_top.png b/technic_chests/textures/x32/technic_copper_chest_top.png index 2ab81047..f162215a 100644 Binary files a/technic_chests/textures/x32/technic_copper_chest_top.png and b/technic_chests/textures/x32/technic_copper_chest_top.png differ diff --git a/technic_chests/textures/x32/technic_gold_chest_front.png b/technic_chests/textures/x32/technic_gold_chest_front.png index 9bc9615f..11b1f35f 100644 Binary files a/technic_chests/textures/x32/technic_gold_chest_front.png and b/technic_chests/textures/x32/technic_gold_chest_front.png differ diff --git a/technic_chests/textures/x32/technic_gold_chest_side.png b/technic_chests/textures/x32/technic_gold_chest_side.png index 5d5ad0f7..7c105de1 100644 Binary files a/technic_chests/textures/x32/technic_gold_chest_side.png and b/technic_chests/textures/x32/technic_gold_chest_side.png differ diff --git a/technic_chests/textures/x32/technic_gold_chest_top.png b/technic_chests/textures/x32/technic_gold_chest_top.png index f9c8fecc..fb22d620 100644 Binary files a/technic_chests/textures/x32/technic_gold_chest_top.png and b/technic_chests/textures/x32/technic_gold_chest_top.png differ diff --git a/technic_chests/textures/x32/technic_iron_chest_front.png b/technic_chests/textures/x32/technic_iron_chest_front.png index 79d5b49e..d87425a9 100644 Binary files a/technic_chests/textures/x32/technic_iron_chest_front.png and b/technic_chests/textures/x32/technic_iron_chest_front.png differ diff --git a/technic_chests/textures/x32/technic_iron_chest_side.png b/technic_chests/textures/x32/technic_iron_chest_side.png index e12daa5c..5a18893b 100644 Binary files a/technic_chests/textures/x32/technic_iron_chest_side.png and b/technic_chests/textures/x32/technic_iron_chest_side.png differ diff --git a/technic_chests/textures/x32/technic_iron_chest_top.png b/technic_chests/textures/x32/technic_iron_chest_top.png index da1ab7b2..d81afb47 100644 Binary files a/technic_chests/textures/x32/technic_iron_chest_top.png and b/technic_chests/textures/x32/technic_iron_chest_top.png differ diff --git a/technic_chests/textures/x32/technic_mithril_chest_front.png b/technic_chests/textures/x32/technic_mithril_chest_front.png index 9f7ca7eb..2e578f65 100644 Binary files a/technic_chests/textures/x32/technic_mithril_chest_front.png and b/technic_chests/textures/x32/technic_mithril_chest_front.png differ diff --git a/technic_chests/textures/x32/technic_mithril_chest_side.png b/technic_chests/textures/x32/technic_mithril_chest_side.png index 0763511c..7692d7bb 100644 Binary files a/technic_chests/textures/x32/technic_mithril_chest_side.png and b/technic_chests/textures/x32/technic_mithril_chest_side.png differ diff --git a/technic_chests/textures/x32/technic_mithril_chest_top.png b/technic_chests/textures/x32/technic_mithril_chest_top.png index 24295762..e4bfbf8c 100644 Binary files a/technic_chests/textures/x32/technic_mithril_chest_top.png and b/technic_chests/textures/x32/technic_mithril_chest_top.png differ diff --git a/technic_chests/textures/x32/technic_silver_chest_front.png b/technic_chests/textures/x32/technic_silver_chest_front.png index fe5ce2cb..37d7cd0a 100644 Binary files a/technic_chests/textures/x32/technic_silver_chest_front.png and b/technic_chests/textures/x32/technic_silver_chest_front.png differ diff --git a/technic_chests/textures/x32/technic_silver_chest_side.png b/technic_chests/textures/x32/technic_silver_chest_side.png index 3a2ed4a3..0bdee368 100644 Binary files a/technic_chests/textures/x32/technic_silver_chest_side.png and b/technic_chests/textures/x32/technic_silver_chest_side.png differ diff --git a/technic_chests/textures/x32/technic_silver_chest_top.png b/technic_chests/textures/x32/technic_silver_chest_top.png index 353a11cf..99103e41 100644 Binary files a/technic_chests/textures/x32/technic_silver_chest_top.png and b/technic_chests/textures/x32/technic_silver_chest_top.png differ diff --git a/technic_cnc/textures/technic_cnc_bottom.png b/technic_cnc/textures/technic_cnc_bottom.png index e600cb1d..fc907e37 100644 Binary files a/technic_cnc/textures/technic_cnc_bottom.png and b/technic_cnc/textures/technic_cnc_bottom.png differ diff --git a/technic_cnc/textures/technic_cnc_cylinder.png b/technic_cnc/textures/technic_cnc_cylinder.png index 48921bdb..c82e8ce5 100644 Binary files a/technic_cnc/textures/technic_cnc_cylinder.png and b/technic_cnc/textures/technic_cnc_cylinder.png differ diff --git a/technic_cnc/textures/technic_cnc_cylinder_horizontal.png b/technic_cnc/textures/technic_cnc_cylinder_horizontal.png index 82eb24ca..edf07c35 100644 Binary files a/technic_cnc/textures/technic_cnc_cylinder_horizontal.png and b/technic_cnc/textures/technic_cnc_cylinder_horizontal.png differ diff --git a/technic_cnc/textures/technic_cnc_element_cross.png b/technic_cnc/textures/technic_cnc_element_cross.png index cc665710..6f879b31 100644 Binary files a/technic_cnc/textures/technic_cnc_element_cross.png and b/technic_cnc/textures/technic_cnc_element_cross.png differ diff --git a/technic_cnc/textures/technic_cnc_element_edge.png b/technic_cnc/textures/technic_cnc_element_edge.png index 1245ea7f..66682965 100644 Binary files a/technic_cnc/textures/technic_cnc_element_edge.png and b/technic_cnc/textures/technic_cnc_element_edge.png differ diff --git a/technic_cnc/textures/technic_cnc_element_end.png b/technic_cnc/textures/technic_cnc_element_end.png index 562eb2bc..e8dbbfe9 100644 Binary files a/technic_cnc/textures/technic_cnc_element_end.png and b/technic_cnc/textures/technic_cnc_element_end.png differ diff --git a/technic_cnc/textures/technic_cnc_element_straight.png b/technic_cnc/textures/technic_cnc_element_straight.png index d42966ee..5c2d5b44 100644 Binary files a/technic_cnc/textures/technic_cnc_element_straight.png and b/technic_cnc/textures/technic_cnc_element_straight.png differ diff --git a/technic_cnc/textures/technic_cnc_element_t.png b/technic_cnc/textures/technic_cnc_element_t.png index a4627640..f60b5efb 100644 Binary files a/technic_cnc/textures/technic_cnc_element_t.png and b/technic_cnc/textures/technic_cnc_element_t.png differ diff --git a/technic_cnc/textures/technic_cnc_front.png b/technic_cnc/textures/technic_cnc_front.png index 6cc04900..e1bf4192 100644 Binary files a/technic_cnc/textures/technic_cnc_front.png and b/technic_cnc/textures/technic_cnc_front.png differ diff --git a/technic_cnc/textures/technic_cnc_front_active.png b/technic_cnc/textures/technic_cnc_front_active.png index f7a3c7f7..2c53defb 100644 Binary files a/technic_cnc/textures/technic_cnc_front_active.png and b/technic_cnc/textures/technic_cnc_front_active.png differ diff --git a/technic_cnc/textures/technic_cnc_full.png b/technic_cnc/textures/technic_cnc_full.png index 60f8a819..7f403649 100644 Binary files a/technic_cnc/textures/technic_cnc_full.png and b/technic_cnc/textures/technic_cnc_full.png differ diff --git a/technic_cnc/textures/technic_cnc_half.png b/technic_cnc/textures/technic_cnc_half.png index 2c4d3a89..e32dd6a9 100644 Binary files a/technic_cnc/textures/technic_cnc_half.png and b/technic_cnc/textures/technic_cnc_half.png differ diff --git a/technic_cnc/textures/technic_cnc_milling_background.png b/technic_cnc/textures/technic_cnc_milling_background.png index 6a9c2f46..56bccc1d 100644 Binary files a/technic_cnc/textures/technic_cnc_milling_background.png and b/technic_cnc/textures/technic_cnc_milling_background.png differ diff --git a/technic_cnc/textures/technic_cnc_oblate_spheroid.png b/technic_cnc/textures/technic_cnc_oblate_spheroid.png index b196e7d8..7109d3ef 100644 Binary files a/technic_cnc/textures/technic_cnc_oblate_spheroid.png and b/technic_cnc/textures/technic_cnc_oblate_spheroid.png differ diff --git a/technic_cnc/textures/technic_cnc_onecurvededge.png b/technic_cnc/textures/technic_cnc_onecurvededge.png index 8325846d..4bdceba1 100644 Binary files a/technic_cnc/textures/technic_cnc_onecurvededge.png and b/technic_cnc/textures/technic_cnc_onecurvededge.png differ diff --git a/technic_cnc/textures/technic_cnc_pyramid.png b/technic_cnc/textures/technic_cnc_pyramid.png index d8cc713e..2f299a2a 100644 Binary files a/technic_cnc/textures/technic_cnc_pyramid.png and b/technic_cnc/textures/technic_cnc_pyramid.png differ diff --git a/technic_cnc/textures/technic_cnc_side.png b/technic_cnc/textures/technic_cnc_side.png index 1ecbbacc..4feb412c 100644 Binary files a/technic_cnc/textures/technic_cnc_side.png and b/technic_cnc/textures/technic_cnc_side.png differ diff --git a/technic_cnc/textures/technic_cnc_slope.png b/technic_cnc/textures/technic_cnc_slope.png index 493d5609..d2b3ce4d 100644 Binary files a/technic_cnc/textures/technic_cnc_slope.png and b/technic_cnc/textures/technic_cnc_slope.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_edge.png b/technic_cnc/textures/technic_cnc_slope_edge.png index 1b601c41..3906f50b 100644 Binary files a/technic_cnc/textures/technic_cnc_slope_edge.png and b/technic_cnc/textures/technic_cnc_slope_edge.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png b/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png index 350c22dc..f507d0fe 100644 Binary files a/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png and b/technic_cnc/textures/technic_cnc_slope_edge_upsdwn.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_inner_edge.png b/technic_cnc/textures/technic_cnc_slope_inner_edge.png index 3f5ab9e4..0184ef1d 100644 Binary files a/technic_cnc/textures/technic_cnc_slope_inner_edge.png and b/technic_cnc/textures/technic_cnc_slope_inner_edge.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png b/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png index a1fee787..8b4aa25f 100644 Binary files a/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png and b/technic_cnc/textures/technic_cnc_slope_inner_edge_upsdwn.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_lying.png b/technic_cnc/textures/technic_cnc_slope_lying.png index 099ed593..32ff8abe 100644 Binary files a/technic_cnc/textures/technic_cnc_slope_lying.png and b/technic_cnc/textures/technic_cnc_slope_lying.png differ diff --git a/technic_cnc/textures/technic_cnc_slope_upsdwn.png b/technic_cnc/textures/technic_cnc_slope_upsdwn.png index 2a34b8bb..d15bf2ba 100644 Binary files a/technic_cnc/textures/technic_cnc_slope_upsdwn.png and b/technic_cnc/textures/technic_cnc_slope_upsdwn.png differ diff --git a/technic_cnc/textures/technic_cnc_sphere.png b/technic_cnc/textures/technic_cnc_sphere.png index 791b32b4..61e71ff9 100644 Binary files a/technic_cnc/textures/technic_cnc_sphere.png and b/technic_cnc/textures/technic_cnc_sphere.png differ diff --git a/technic_cnc/textures/technic_cnc_spike.png b/technic_cnc/textures/technic_cnc_spike.png index b445b404..cf826679 100644 Binary files a/technic_cnc/textures/technic_cnc_spike.png and b/technic_cnc/textures/technic_cnc_spike.png differ diff --git a/technic_cnc/textures/technic_cnc_stick.png b/technic_cnc/textures/technic_cnc_stick.png index acaf1cba..c2846429 100644 Binary files a/technic_cnc/textures/technic_cnc_stick.png and b/technic_cnc/textures/technic_cnc_stick.png differ diff --git a/technic_cnc/textures/technic_cnc_top.png b/technic_cnc/textures/technic_cnc_top.png index 51233341..7fcf6175 100644 Binary files a/technic_cnc/textures/technic_cnc_top.png and b/technic_cnc/textures/technic_cnc_top.png differ diff --git a/technic_cnc/textures/technic_cnc_top_active.png b/technic_cnc/textures/technic_cnc_top_active.png index 2bc9d815..24e3cd41 100644 Binary files a/technic_cnc/textures/technic_cnc_top_active.png and b/technic_cnc/textures/technic_cnc_top_active.png differ diff --git a/technic_cnc/textures/technic_cnc_twocurvededge.png b/technic_cnc/textures/technic_cnc_twocurvededge.png index b50a2579..5d7fbe5e 100644 Binary files a/technic_cnc/textures/technic_cnc_twocurvededge.png and b/technic_cnc/textures/technic_cnc_twocurvededge.png differ diff --git a/technic_worldgen/locale/fr.txt b/technic_worldgen/locale/fr.txt new file mode 100644 index 00000000..5bdd1486 --- /dev/null +++ b/technic_worldgen/locale/fr.txt @@ -0,0 +1,37 @@ +# template.txt +# technic_worldgen translation template + +###crafts.lua +Uranium Lump = Morceau d'uranium +Uranium Ingot = Lingot d'uranium +Chromium Lump = Morceau de chrome +Chromium Ingot = Lingot de chrome +Zinc Lump = Morceau de zinc +Zinc Ingot = Lingot de zinc +Brass Ingot = Lingot de laiton +Wrought Iron Ingot = Lingot de fer forgé +Cast Iron Ingot = Lingot de fonte +Carbon Steel Ingot = Lingot d'acier au carbone +Stainless Steel Ingot = Lingot d'acier inoxydable +Iron = Fer + +###nodes.lua +Uranium Ore = Minerai d'uranium +Chromium Ore = Minerai de chrome +Zinc Ore = Minerai de zinc +Granite = Granite +Marble = Marbre +Marble Bricks = Briques en marbre +Uranium Block = Bloc d'uranium +Chromium Block = Bloc de chrome +Zinc Block = Bloc de zinc +Wrought Iron Block = Bloc de fer forgé +Cast Iron Block = Bloc de fonte +Carbon Steel Block = Bloc d'acier au carbone +Stainless Steel Block = Bloc d'acier inoxydable +Brass Block = Bloc de laiton +Wrought Iron = Fer forgé + +###rubber.lua +Rubber Tree Sapling = Pousse d'arbre à caoutchouc +Rubber Tree = Arbre à caoutchouc diff --git a/technic_worldgen/locale/pt_BR.txt b/technic_worldgen/locale/pt_BR.txt new file mode 100644 index 00000000..b20368f6 --- /dev/null +++ b/technic_worldgen/locale/pt_BR.txt @@ -0,0 +1,38 @@ +# Braziliam portuguese translation for technic_worldgen +# Tradução portuguesa brasileira para technic_worldgen +# By Sires + +###crafts.lua +Uranium Lump = Pedaço de Urânio +Uranium Ingot = Lingote de Urânio +Chromium Lump = Pedaço de Crômio +Chromium Ingot = Lingote de Crômio +Zinc Lump = Pedaço de Zinco +Zinc Ingot = Lingote de Zinco +Brass Ingot = Lingote de Latão +Wrought Iron Ingot = Lingote de Ferro Forjado +Cast Iron Ingot = Lingote de Ferro Fundido +Carbon Steel Ingot = Lingote de Aço Carbono +Stainless Steel Ingot = Lingote de Ferro Inoxidável +Iron = Ferro + +###nodes.lua +Uranium Ore = Minério de Urânio +Chromium Ore = Minério de Crômio +Zinc Ore = Minério de Zinco +Granite = Granito +Marble = Mármore +Marble Bricks = Tijolos de Mármore +Uranium Block = Bloco de Urânio +Chromium Block = Bloco de Crômio +Zinc Block = Bloco de Zinco +Wrought Iron Block = Bloco de Ferro Forjado +Cast Iron Block = Bloco de Ferro Fundido +Carbon Steel Block = Bloco de Aço Carbono +Stainless Steel Block = Bloco de Aço Inoxidável +Brass Block = Bloco de Latão +Wrought Iron = Ferro Forjado + +###rubber.lua +Rubber Tree Sapling = Muda de Árvore de Borracha +Rubber Tree = Árvore de Borracha diff --git a/technic_worldgen/textures/technic_brass_dust.png b/technic_worldgen/textures/technic_brass_dust.png index 63d9ba4e..007bf81f 100644 Binary files a/technic_worldgen/textures/technic_brass_dust.png and b/technic_worldgen/textures/technic_brass_dust.png differ diff --git a/technic_worldgen/textures/technic_carbon_steel_block.png b/technic_worldgen/textures/technic_carbon_steel_block.png index f3cfdc1d..1841f779 100644 Binary files a/technic_worldgen/textures/technic_carbon_steel_block.png and b/technic_worldgen/textures/technic_carbon_steel_block.png differ diff --git a/technic_worldgen/textures/technic_carbon_steel_ingot.png b/technic_worldgen/textures/technic_carbon_steel_ingot.png index c30ec80d..ea260106 100644 Binary files a/technic_worldgen/textures/technic_carbon_steel_ingot.png and b/technic_worldgen/textures/technic_carbon_steel_ingot.png differ diff --git a/technic_worldgen/textures/technic_cast_iron_block.png b/technic_worldgen/textures/technic_cast_iron_block.png index 2df61e52..cc980012 100644 Binary files a/technic_worldgen/textures/technic_cast_iron_block.png and b/technic_worldgen/textures/technic_cast_iron_block.png differ diff --git a/technic_worldgen/textures/technic_cast_iron_ingot.png b/technic_worldgen/textures/technic_cast_iron_ingot.png index 5c182ce8..c18ee71f 100644 Binary files a/technic_worldgen/textures/technic_cast_iron_ingot.png and b/technic_worldgen/textures/technic_cast_iron_ingot.png differ diff --git a/technic_worldgen/textures/technic_chromium_block.png b/technic_worldgen/textures/technic_chromium_block.png index ad173ca9..f5cdfe95 100644 Binary files a/technic_worldgen/textures/technic_chromium_block.png and b/technic_worldgen/textures/technic_chromium_block.png differ diff --git a/technic_worldgen/textures/technic_chromium_ingot.png b/technic_worldgen/textures/technic_chromium_ingot.png index 248b0c3c..92b279c1 100644 Binary files a/technic_worldgen/textures/technic_chromium_ingot.png and b/technic_worldgen/textures/technic_chromium_ingot.png differ diff --git a/technic_worldgen/textures/technic_chromium_lump.png b/technic_worldgen/textures/technic_chromium_lump.png index 0fe03a12..7c950abe 100644 Binary files a/technic_worldgen/textures/technic_chromium_lump.png and b/technic_worldgen/textures/technic_chromium_lump.png differ diff --git a/technic_worldgen/textures/technic_granite.png b/technic_worldgen/textures/technic_granite.png index abb13850..88a7b329 100644 Binary files a/technic_worldgen/textures/technic_granite.png and b/technic_worldgen/textures/technic_granite.png differ diff --git a/technic_worldgen/textures/technic_marble.png b/technic_worldgen/textures/technic_marble.png index 846a1701..3c3913d4 100644 Binary files a/technic_worldgen/textures/technic_marble.png and b/technic_worldgen/textures/technic_marble.png differ diff --git a/technic_worldgen/textures/technic_marble_bricks.png b/technic_worldgen/textures/technic_marble_bricks.png index 2ea1e421..7db142f5 100644 Binary files a/technic_worldgen/textures/technic_marble_bricks.png and b/technic_worldgen/textures/technic_marble_bricks.png differ diff --git a/technic_worldgen/textures/technic_mineral_chromium.png b/technic_worldgen/textures/technic_mineral_chromium.png index c66f1c54..26af3233 100644 Binary files a/technic_worldgen/textures/technic_mineral_chromium.png and b/technic_worldgen/textures/technic_mineral_chromium.png differ diff --git a/technic_worldgen/textures/technic_mineral_sulfur.png b/technic_worldgen/textures/technic_mineral_sulfur.png index 26cb19db..28445b35 100644 Binary files a/technic_worldgen/textures/technic_mineral_sulfur.png and b/technic_worldgen/textures/technic_mineral_sulfur.png differ diff --git a/technic_worldgen/textures/technic_mineral_uranium.png b/technic_worldgen/textures/technic_mineral_uranium.png index aad9c077..da0319ec 100644 Binary files a/technic_worldgen/textures/technic_mineral_uranium.png and b/technic_worldgen/textures/technic_mineral_uranium.png differ diff --git a/technic_worldgen/textures/technic_mineral_zinc.png b/technic_worldgen/textures/technic_mineral_zinc.png index 598efebf..1251bea3 100644 Binary files a/technic_worldgen/textures/technic_mineral_zinc.png and b/technic_worldgen/textures/technic_mineral_zinc.png differ diff --git a/technic_worldgen/textures/technic_rubber.png b/technic_worldgen/textures/technic_rubber.png index 9ed4a9df..eb78e9fc 100644 Binary files a/technic_worldgen/textures/technic_rubber.png and b/technic_worldgen/textures/technic_rubber.png differ diff --git a/technic_worldgen/textures/technic_rubber_leaves.png b/technic_worldgen/textures/technic_rubber_leaves.png index ae013e0a..ffd63f5f 100644 Binary files a/technic_worldgen/textures/technic_rubber_leaves.png and b/technic_worldgen/textures/technic_rubber_leaves.png differ diff --git a/technic_worldgen/textures/technic_rubber_sapling.png b/technic_worldgen/textures/technic_rubber_sapling.png index e5c9f5de..7d3dbf21 100644 Binary files a/technic_worldgen/textures/technic_rubber_sapling.png and b/technic_worldgen/textures/technic_rubber_sapling.png differ diff --git a/technic_worldgen/textures/technic_rubber_tree_empty.png b/technic_worldgen/textures/technic_rubber_tree_empty.png index 1792951e..dc36fa56 100644 Binary files a/technic_worldgen/textures/technic_rubber_tree_empty.png and b/technic_worldgen/textures/technic_rubber_tree_empty.png differ diff --git a/technic_worldgen/textures/technic_rubber_tree_full.png b/technic_worldgen/textures/technic_rubber_tree_full.png index 08067eff..def5cf62 100644 Binary files a/technic_worldgen/textures/technic_rubber_tree_full.png and b/technic_worldgen/textures/technic_rubber_tree_full.png differ diff --git a/technic_worldgen/textures/technic_rubber_tree_grindings.png b/technic_worldgen/textures/technic_rubber_tree_grindings.png index 9f2f5d6a..500e4640 100644 Binary files a/technic_worldgen/textures/technic_rubber_tree_grindings.png and b/technic_worldgen/textures/technic_rubber_tree_grindings.png differ diff --git a/technic_worldgen/textures/technic_stainless_steel_block.png b/technic_worldgen/textures/technic_stainless_steel_block.png index e4517689..e1c58658 100644 Binary files a/technic_worldgen/textures/technic_stainless_steel_block.png and b/technic_worldgen/textures/technic_stainless_steel_block.png differ diff --git a/technic_worldgen/textures/technic_sulfur_dust.png b/technic_worldgen/textures/technic_sulfur_dust.png index 04ffee07..4222c3b2 100644 Binary files a/technic_worldgen/textures/technic_sulfur_dust.png and b/technic_worldgen/textures/technic_sulfur_dust.png differ diff --git a/technic_worldgen/textures/technic_uranium_block.png b/technic_worldgen/textures/technic_uranium_block.png index 99dd51c1..3b47e7b0 100644 Binary files a/technic_worldgen/textures/technic_uranium_block.png and b/technic_worldgen/textures/technic_uranium_block.png differ diff --git a/technic_worldgen/textures/technic_uranium_ingot.png b/technic_worldgen/textures/technic_uranium_ingot.png index 38978f86..a9777f97 100644 Binary files a/technic_worldgen/textures/technic_uranium_ingot.png and b/technic_worldgen/textures/technic_uranium_ingot.png differ diff --git a/technic_worldgen/textures/technic_uranium_lump.png b/technic_worldgen/textures/technic_uranium_lump.png index 2f5a66c1..c0efc194 100644 Binary files a/technic_worldgen/textures/technic_uranium_lump.png and b/technic_worldgen/textures/technic_uranium_lump.png differ diff --git a/technic_worldgen/textures/technic_wrought_iron_block.png b/technic_worldgen/textures/technic_wrought_iron_block.png index cf6c9616..ccb6e96c 100644 Binary files a/technic_worldgen/textures/technic_wrought_iron_block.png and b/technic_worldgen/textures/technic_wrought_iron_block.png differ diff --git a/technic_worldgen/textures/technic_wrought_iron_ingot.png b/technic_worldgen/textures/technic_wrought_iron_ingot.png index af00ea02..b8dd3860 100644 Binary files a/technic_worldgen/textures/technic_wrought_iron_ingot.png and b/technic_worldgen/textures/technic_wrought_iron_ingot.png differ diff --git a/technic_worldgen/textures/technic_zinc_block.png b/technic_worldgen/textures/technic_zinc_block.png index 5ae79472..9b94a6b6 100644 Binary files a/technic_worldgen/textures/technic_zinc_block.png and b/technic_worldgen/textures/technic_zinc_block.png differ diff --git a/technic_worldgen/textures/technic_zinc_ingot.png b/technic_worldgen/textures/technic_zinc_ingot.png index a36a11cf..9585447c 100644 Binary files a/technic_worldgen/textures/technic_zinc_ingot.png and b/technic_worldgen/textures/technic_zinc_ingot.png differ diff --git a/technic_worldgen/textures/technic_zinc_lump.png b/technic_worldgen/textures/technic_zinc_lump.png index 1a620ab5..f6c4f782 100644 Binary files a/technic_worldgen/textures/technic_zinc_lump.png and b/technic_worldgen/textures/technic_zinc_lump.png differ diff --git a/technic_worldgen/textures/x32/technic_brass_ingot.png b/technic_worldgen/textures/x32/technic_brass_ingot.png index 2d8b1535..538e08cb 100644 Binary files a/technic_worldgen/textures/x32/technic_brass_ingot.png and b/technic_worldgen/textures/x32/technic_brass_ingot.png differ diff --git a/technic_worldgen/textures/x32/technic_chromium_ingot.png b/technic_worldgen/textures/x32/technic_chromium_ingot.png index 91d5b20e..0353e0aa 100644 Binary files a/technic_worldgen/textures/x32/technic_chromium_ingot.png and b/technic_worldgen/textures/x32/technic_chromium_ingot.png differ diff --git a/technic_worldgen/textures/x32/technic_chromium_lump.png b/technic_worldgen/textures/x32/technic_chromium_lump.png index 1588f928..c3326c6b 100644 Binary files a/technic_worldgen/textures/x32/technic_chromium_lump.png and b/technic_worldgen/textures/x32/technic_chromium_lump.png differ diff --git a/technic_worldgen/textures/x32/technic_concrete_block.png b/technic_worldgen/textures/x32/technic_concrete_block.png index 91364f33..71914c9f 100644 Binary files a/technic_worldgen/textures/x32/technic_concrete_block.png and b/technic_worldgen/textures/x32/technic_concrete_block.png differ diff --git a/technic_worldgen/textures/x32/technic_granite.png b/technic_worldgen/textures/x32/technic_granite.png index abb13850..88a7b329 100644 Binary files a/technic_worldgen/textures/x32/technic_granite.png and b/technic_worldgen/textures/x32/technic_granite.png differ diff --git a/technic_worldgen/textures/x32/technic_marble.png b/technic_worldgen/textures/x32/technic_marble.png index 846a1701..3c3913d4 100644 Binary files a/technic_worldgen/textures/x32/technic_marble.png and b/technic_worldgen/textures/x32/technic_marble.png differ diff --git a/technic_worldgen/textures/x32/technic_marble_bricks.png b/technic_worldgen/textures/x32/technic_marble_bricks.png index 2ea1e421..7db142f5 100644 Binary files a/technic_worldgen/textures/x32/technic_marble_bricks.png and b/technic_worldgen/textures/x32/technic_marble_bricks.png differ diff --git a/technic_worldgen/textures/x32/technic_mineral_chromium.png b/technic_worldgen/textures/x32/technic_mineral_chromium.png index c66f1c54..26af3233 100644 Binary files a/technic_worldgen/textures/x32/technic_mineral_chromium.png and b/technic_worldgen/textures/x32/technic_mineral_chromium.png differ diff --git a/technic_worldgen/textures/x32/technic_mineral_uranium.png b/technic_worldgen/textures/x32/technic_mineral_uranium.png index aad9c077..da0319ec 100644 Binary files a/technic_worldgen/textures/x32/technic_mineral_uranium.png and b/technic_worldgen/textures/x32/technic_mineral_uranium.png differ diff --git a/technic_worldgen/textures/x32/technic_mineral_zinc.png b/technic_worldgen/textures/x32/technic_mineral_zinc.png index 598efebf..1251bea3 100644 Binary files a/technic_worldgen/textures/x32/technic_mineral_zinc.png and b/technic_worldgen/textures/x32/technic_mineral_zinc.png differ diff --git a/technic_worldgen/textures/x32/technic_rebar.png b/technic_worldgen/textures/x32/technic_rebar.png index 16d1fc54..fc0b9636 100644 Binary files a/technic_worldgen/textures/x32/technic_rebar.png and b/technic_worldgen/textures/x32/technic_rebar.png differ diff --git a/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png b/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png index 46fa2969..03bb722b 100644 Binary files a/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png and b/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png differ diff --git a/technic_worldgen/textures/x32/technic_uranium.png b/technic_worldgen/textures/x32/technic_uranium.png index 54225f8c..c961f83a 100644 Binary files a/technic_worldgen/textures/x32/technic_uranium.png and b/technic_worldgen/textures/x32/technic_uranium.png differ diff --git a/technic_worldgen/textures/x32/technic_zinc_ingot.png b/technic_worldgen/textures/x32/technic_zinc_ingot.png index 096ff9c7..031e1ec9 100644 Binary files a/technic_worldgen/textures/x32/technic_zinc_ingot.png and b/technic_worldgen/textures/x32/technic_zinc_ingot.png differ diff --git a/technic_worldgen/textures/x32/technic_zinc_lump.png b/technic_worldgen/textures/x32/technic_zinc_lump.png index d28a6dcd..85eea7a0 100644 Binary files a/technic_worldgen/textures/x32/technic_zinc_lump.png and b/technic_worldgen/textures/x32/technic_zinc_lump.png differ diff --git a/teleport_request/LICENSE.md b/teleport_request/LICENSE.md index 24a9a3d5..8000a6fa 100644 --- a/teleport_request/LICENSE.md +++ b/teleport_request/LICENSE.md @@ -1,11 +1,504 @@ -####DO WHAT YOU WANT TO PUBLIC LICENSE (DWYWPL) + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 -December 2nd 2015 -License Copyright (C) 2015 Michael Tomaino (PlatinumArts@gmail.com) -[www.sandboxgamemaker.com/DWYWPL/](www.sandboxgamemaker.com/DWYWPL/) + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -#####DO WHAT YOU WANT TO PUBLIC LICENSE -######TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] -1. You are allowed to do whatever you want to with what content is using this license. -2. This content is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this content. + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random + Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/teleport_request/README.md b/teleport_request/README.md index 4044acd1..2042c6d2 100644 --- a/teleport_request/README.md +++ b/teleport_request/README.md @@ -1,76 +1,132 @@ -##*tps_teleport* is a mod for Minetest game servers. +# Teleport Request +A mod that allows players to send a teleport request. +**(See "How to use" below for more information.)** -##Description: -[The Pixel Shadow](https://minetest.tv/) Minetest game servers have switched from "teleport" to "teleport request" via the *tps_teleport* mod. This mod makes it so players must send a request to another player in order to teleport to them. Before they will be allowed to do so, the player must accept the request. This prevents malicious users from teleporting to players' private areas without their permission. It also enhances the overall privacy of our services since if denied teleport, a player must instead travel to the area and "use the front door" so to speak... which might be a locked iron door. +## Privileges: +Each command needs a privilege. These are the following privileges: +- **tp** is requiered in order to use all commands. +- **tp_tpc** is requiered in order to use `/tpc` +- **tp_tpc** is requiered in order to use `/tpe` +- **tp_tpc** is requiered in order to use `/tpj` +- **interact** is also requiered to use all commands. +**tp_admin** overrides everything: e.g. you can teleport to players even when they haven't decided to accept, or not. You can also teleport him/her to you (this happens only when `enable_immediate_teleport` is enabled on `config.lua`). +Players can also teleport to coordinates, however, if the area is protected, the teleport will be denied. -##Privileges: -- **interact** Permits use of /tpr and /tphr -- **tp_tpc** Permits use of /tpc -- **tp_admin** Admin priv allows admin to teleport anywhere without permission +## How to use: +Each command does a function. "**Example Usage**" is an example of how to use the command. +Note there must be 2 players in order to make the commands to work: a player must send a request to another player (**see https://wiki.minetest.net/Server or see https://wiki.minetest.net/Setting_up_a_server for more information**). +There are two methods of sending a request: +1. A request which teleports you to the specified player (command `/tpr `). +2. A request which teleports the specified player to you (command `/tphr `). -Players may also teleport to coordinates, however if the area is protected, the teleport will be denied. - -##Usage: +To accept a request some sent you, you must use `/tpy`. +These are the following commands available in-game: ``` /tpr [playername] ``` - **Name:** Teleport Request - **Description:** Requests permission to teleport to another player, where [playername] is their exact name. -- **Required Privilege:** interact +- **Required Privileges:** `interact, tp` - **Example Usage:** */tpr RobbieF* - requests permission from RobbieF to teleport to them. -- **Notes:** Usernames are case-sensitive. +- **Notes:** Usernames are case-sensitive. If you have "tp_admin" privilege, you will immediately teleport to the specificed player (does not apply if `enable_immediate_teleport` setting is disabled, enabled by default). ``` /tphr [playername] ``` - **Name:** Teleport Here Request - **Description:** Request permission to teleport another player to you. -- **Required Privilege:** interact +- **Required Privileges:** `interact, tp` - **Example Usage:** /tphr RobbieF - requests RobbieF to teleport to you. -- **Notes:** Usernames are case-sensitive. +- **Notes:** Usernames are case-sensitive. If you have "tp_admin" privilege, RobbieF will teleport to you immediately (does not apply if `enable_immediate_teleport` setting is disabled, enabled by default). ``` /tpc [x,y,z] ``` - **Name:** Teleport to Coordinates - **Description:** Teleport to coordinates. -- **Required Privilege:** interact, tp_tpc -- **Notes:** Honors area protection: if the area is protected, it must be owned by you in order to teleport to it. +- **Required Privileges:** `interact, tp_tpc, tp` +- **Notes:** Honors area protection: if the area is protected, it must be owned by you in order to teleport to it, or you must have "areas" privilege in order to teleport to those coordinates (this works only when [areas](https://github.com/minetest-mods/areas) is installed). ``` /tpj [axis] [distance] ``` - **Name:** Teleport Jump - **Description:** Teleport a specified distance along a single specified axis. -- **Required Privilege:** interact +- **Required Privilege:** `interact", tp, tp_tpc` - **Available Options for *axis*:** x, y, z - **Example Usage:** '/tpj y 10' - teleport 10 nodes into the air. ``` /tpe ``` - **Name:** Teleport Evade - **Description:** In a sticky situation? Evade your enemy by teleporting to several nearby coordinates in random pattern. There's no knowing where you'll end up. -- **Required Privilege:** interact +- **Required Privileges:** `interact, tp_tpc, tp` - **Example Usage:** '/tpe' - teleports you to a random number of random coordinates in an evasive pattern. ``` /tpy ``` - **Description:** Accept a user's request to teleport to you or teleport you to them. ``` /tpn ``` -- **Description:** Deny a user's request to teleport to youor teleport you to them. +- **Description:** Deny a user's request to teleport to you or teleport you to them. -###Please Note: -Players with the 'tp_admin' privilege override all the required privileges above, except 'interact'. +## Dependencies +There are no dependencies. +However, optional dependencies are: +- [areas](https://github.com/minetest-mods/areas) +- [intllib](https://github.com/minetest-mods/intllib) +- [beerchat](https://github.com/pandorabox-io/beerchat) +- [chat2](https://github.com/minetest-mods/chat2) -##Contributors: +## Requirements +This mod requieres MT/MTG 5.0.0+ to run. +Older versions not supported. + +## Bugfixes & suggestions +Report bugs or suggest ideas by [creating an issue](https://github.com/ChaosWormz/teleport-request/issues/new). +If you know how to fix an issue, or want something to be added, consider opening a [pull request](https://github.com/ChaosWormz/teleport-request/compare). + +## License +[LGPL-2.1](https://github.com/ChaosWormz/teleport-request/blob/master/LICENSE.md) for everything. + +## Contributors: - [RobbieF](https://minetest.tv) | [GitHub](https://github.com/Cat5TV) - [DonBatman](https://github.com/donbatman) -- [NathanS21](http://nathansalapat.com/) +- [NathanS21](http://nathansalapat.com/) | [GitHub](https://github.com/NathanSalapat) - [ChaosWormz](https://github.com/ChaosWormz) -- [Traxie21](https://github.com/Traxie21) The original creater of this mod -- All those who contributed to the original mod (please see init.lua) +- [Panquesito7](https://github.com/Panquesito7) +- [coil0](https://github.com/coil0) +- [Zeno-](https://github.com/Zeno-) +- [indriApollo](https://github.com/indriApollo) +- [Billy-S](https://github.com/Billy-S) +- Traxie21, the original creator of this mod (however, he/she does not have a GitHub account anymore). -##To Do: +All those who contributed to the original mod (please see `init.lua`). + +## Configuring the mod +Open your `minetest.conf` located in your Minetest directory. +Set the values of the settings you'd like to. + +Available options are: +``` +tp.timeout_delay = 60 +tp.enable_immediate_teleport = true +tp_enable_tpp_command = false +``` +Those values are the default values of the mod. +You can also go to your Minetest, Settings tab, All settings, Mods, and you'll find `tpr` there. +Or another way to do it, is changing the values in `settingtypes.txt`. + +## Installation +- Unzip the archive, rename the folder to tpr and +place it in ..minetest/mods/ + +- GNU/Linux: If you use a system-wide installation place + it in ~/.minetest/mods/. + +- If you only want this to be used in a single world, place + the folder in ..worldmods/ in your world directory. + +For further information or help, see: +https://wiki.minetest.net/Installing_Mods + +## TODO: - Make it so if a player attempts to teleport to coordinates within a protected area owned by another player, and that player is online, the owner receives a request to allow or deny the user from teleporting to their area. - Add limitations to /tpc which only allow a user to teleport X number of blocks. Prevents users from teleporting to the edge of the world. -- Make it so tp_admin priv also overrides need for player to accept /tpr or /tphr - Assess value in changing all tpr-based chat commands to one global command such as /tp to reduce the chance of confusion between tps_admin and the original mod (and also make it so people don't have to remember so many commands). - Create a better sound effect for teleport and apply it to all teleport methods (not just /tpc) -- Add a handful of coordinates which can be set in config and teleported to by anyone regardless of their protection status (eg., Spawn). -- Add a privilege which is required in order to use all commands. I haven't added such a thing since it hasn't been needed on our servers, but I imagine it would be useful on other servers who desire to grant these features only to specific players. -- Create a new function for the actual setpos() to remove all the redundant code each time the player is moved and the sound played. - Rewrite to place all chat commands into one single command much like how /teleport works. -- Add a [different] sound effect at the source coords when a TP takes place (so other players hear it when to teleport away). - Make evade respect land: no teleporting inside land, but instead make sure player is standing on surface or in water. + +If you think something else should be added to this list, [submit an issue](https://github.com/ChaosWormz/teleport-request/issues/new). diff --git a/teleport_request/config.lua b/teleport_request/config.lua new file mode 100644 index 00000000..7bf3e602 --- /dev/null +++ b/teleport_request/config.lua @@ -0,0 +1,62 @@ +--[[ +Configuration + +Copyright (C) 2015-2019 ChaosWormz + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +USA +--]] + +-- Load support for intllib. +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") + +-- Timeout delay and mod version. +tp.timeout_delay = tonumber(minetest.settings:get("tp.timeout_delay")) or 60 +tp.version = "1.5" + +-- Enable teleporting immediately to the specified player for those with "tp_admin" privilege. +tp.enable_immediate_teleport = minetest.settings:get_bool("tp.enable_immediate_teleport") + +local chatmsg, source, target, name2, target_coords, pos + +-- Set the values of the positions of your places, players will be able to teleport to them (no matter if it is protected, or not). +-- You must activate "enable_tpp_command" in order to make this to work. +tp.available_places = { + spawn = {x = 0, y = 0, z = 0}, -- Set coordinates of spawn here. + shop = {x = 0, y = 0, z = 0}, -- Set coordinates of the shop here. +} + +-- Enable tpp command +tp.enable_tpp_command = minetest.settings:get_bool("tp.enable_tpp_command") + +-- Register privileges +minetest.register_privilege("tp", { + description = S("Let players teleport to other players (request will be sent)"), + give_to_singleplayer = false, + give_to_admin = true, +}) + +minetest.register_privilege("tp_admin", { + description = S("Gives full admin-access to a player."), + give_to_singleplayer = false, + give_to_admin = true, +}) + +minetest.register_privilege("tp_tpc", { + description = S("Allow player to teleport to coordinates (if allowed by area protection)"), + give_to_singleplayer = false, + give_to_admin = true, +}) diff --git a/teleport_request/depends.txt b/teleport_request/depends.txt deleted file mode 100644 index a18cd910..00000000 --- a/teleport_request/depends.txt +++ /dev/null @@ -1 +0,0 @@ -areas diff --git a/teleport_request/init.lua b/teleport_request/init.lua index f51c5555..0fbd7afa 100644 --- a/teleport_request/init.lua +++ b/teleport_request/init.lua @@ -1,30 +1,79 @@ --- Originally Teleport Request by Traxie21 and released with the WTFPL license --- https://forum.minetest.net/viewtopic.php?id=4457 --- Updates by Zeno and ChaosWormz --- New release by RobbieF under new mod: tps_teleport - http://blog.minetest.tv/teleport-request/ +--[[ +Copyright (C) 2015-2019 ChaosWormz -local timeout_delay = 60 +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. -local version = "1.5" +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. -local tpr_list = {} -local tphr_list = {} +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +USA + +---------------------------------------------------------------------------- + +Originally made by Traxie21 and released with the WTFPL license. +Forum link: https://forum.minetest.net/viewtopic.php?id=4457 + +Updates by Zeno, Panquesito7 and ChaosWormz. +License: LGPL-2.1 for everything. + +Optional dependencies: areas, intllib +New release by RobbieF under new mod: tps_teleport - http://blog.minetest.tv/teleport-request/ +--]] + +tp = {} + +-- Load support for intllib. +local MP = minetest.get_modpath(minetest.get_current_modname()) +local S, NS = dofile(MP.."/intllib.lua") + +-- Load configuration. +dofile(MP.."/config.lua") + +tp.tpr_list = {} +tp.tphr_list = {} local map_size = 30912 -local function can_teleport(to) - return to.x < map_size and to.x > -map_size and to.y < map_size and to.y > -map_size and to.z < map_size and to.z > -map_size +function tp.can_teleport(to) + return to.x < map_size and to.x > -map_size and to.y < map_size and to.y > -map_size and to.z < map_size and to.z > -map_size end -minetest.register_privilege("tp_admin", { - description = "Admin overrides for tps_teleport.", - give_to_singleplayer=false -}) -minetest.register_privilege("tp_tpc", { - description = "Allow player to teleport to coordinates (if permitted by area protection).", - give_to_singleplayer=true -}) +-- Teleport player to a player (used in "/tpr" and in "/tphr" command). +function tp.tpr_teleport_player() + local target_coords = source:get_pos() + local target_sound = target:get_pos() + target:set_pos(tp.find_free_position_near(target_coords)) + minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10}) + minetest.sound_play("whoosh", {pos = target_sound, gain = 0.5, max_hear_distance = 10}) + --tp.parti2(target_coords) +end -local function find_free_position_near(pos) +-- TPC & TPJ +function tp.tpc_teleport_player(player) + local pname = minetest.get_player_by_name(player) + minetest.sound_play("whoosh", {pos = pname:get_pos(), gain = 0.5, max_hear_distance = 10}) + pname:set_pos(tp.find_free_position_near(target_coords)) + minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10}) + --tp.parti2(target_coords) +end + +-- TPP +function tp.tpp_teleport_player(player) + local pname = minetest.get_player_by_name(player) + minetest.sound_play("whoosh", {pos = pname:get_pos(), gain = 0.5, max_hear_distance = 10}) + pname:set_pos(tp.find_free_position_near(pos)) + minetest.sound_play("whoosh", {pos = pos, gain = 0.5, max_hear_distance = 10}) + --tp.parti2(target_coords) +end + +function tp.find_free_position_near(pos) local tries = { {x=1,y=0,z=0}, {x=-1,y=0,z=0}, @@ -40,7 +89,7 @@ local function find_free_position_near(pos) return pos, false end -local function parti(pos) +function tp.parti(pos) minetest.add_particlespawner(50, 0.4, {x=pos.x + 0.5, y=pos.y, z=pos.z + 0.5}, {x=pos.x - 0.5, y=pos.y, z=pos.z - 0.5}, {x=0, y=5, z=0}, {x=0, y=0, z=0}, @@ -51,7 +100,7 @@ local function parti(pos) "tps_portal_parti.png") end -local function parti2(pos) +function tp.parti2(pos) minetest.add_particlespawner(50, 0.4, {x=pos.x + 0.5, y=pos.y + 10, z=pos.z + 0.5}, {x=pos.x - 0.5, y=pos.y, z=pos.z - 0.5}, {x=0, y=-5, z=0}, {x=0, y=0, z=0}, @@ -62,58 +111,182 @@ local function parti2(pos) "tps_portal_parti.png") end ---Teleport Request System -local function tpr_send(sender, receiver) +-- Teleport Request System +function tp.clear_tpr_list(name) + if tp.tpr_list[name] then + tp.tpr_list[name] = nil + return + end +end + +function tp.clear_tphr_list(name) + if tp.tphr_list[name] then + tp.tphr_list[name] = nil + return + end +end + +-- Clear requests when the player leaves +minetest.register_on_leaveplayer(function(name) + if tp.tpr_list[name] then + tp.tpr_list[name] = nil + return + end + + if tp.tphr_list[name] then + tp.tphr_list[name] = nil + return + end +end) + +function tp.tpr_send(sender, receiver) + -- Compatibility with beerchat (UNTESTED) + if minetest.get_modpath("beerchat") and not minetest.check_player_privs(sender, {tp_admin = true}) then + if minetest.get_player_by_name(sender):get_attribute("beerchat:muted:" .. sender) then + minetest.chat_send_player(sender, S("You are not allowed to send requests because you're muted.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("You are not allowed to send requests because you're muted."), 0xFFFFFF) + end + return + end + end + if minetest.check_player_privs(sender, {tp_admin = true}) and tp.enable_immediate_teleport then if receiver == "" then - minetest.chat_send_player(sender, "Usage: /tpr ") + minetest.chat_send_player(sender, S("Usage: /tpr ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("Usage: /tpr "), 0xFFFFFF) + end + return + end + if not minetest.get_player_by_name(receiver) then + minetest.chat_send_player(sender, S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online"), 0xFFFFFF) + end + return + end + tp.tpr_list[receiver] = sender + tp.tpr_accept(receiver) + minetest.chat_send_player(sender, S("You are teleporting to @1.", receiver)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("You are teleporting to @1.", receiver), 0xFFFFFF) + end + return + end + + if receiver == "" then + minetest.chat_send_player(sender, S("Usage: /tpr ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("Usage: /tpr "), 0xFFFFFF) + end return end if not minetest.get_player_by_name(receiver) then - minetest.chat_send_player(sender, "There is no player by that name. Keep in mind this is case sensitive, and the player must be online.") + minetest.chat_send_player(sender, S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online"), 0xFFFFFF) + end return end - - minetest.chat_send_player(receiver, sender ..' is requesting to teleport to you. /tpy to accept.') - minetest.chat_send_player(sender, 'Teleport request sent! It will time out in '.. timeout_delay ..' seconds.') - - --Write name values to list and clear old values. - tpr_list[receiver] = sender - --Teleport timeout delay - minetest.after(timeout_delay, function(name) - if tpr_list[name] then - tpr_list[name] = nil + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(receiver), S("@1 is requesting to teleport to you. /tpy to accept", sender), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(sender), S("Teleport request sent! It will timeout in @1 seconds", tp.timeout_delay), 0xFFFFFF) + end + minetest.chat_send_player(receiver, S("@1 is requesting to teleport to you. /tpy to accept", sender)) + minetest.chat_send_player(sender, S("Teleport request sent! It will timeout in @1 seconds", tp.timeout_delay)) + -- Write name values to list and clear old values. + tp.tpr_list[receiver] = sender + -- Teleport timeout delay + minetest.after(tp.timeout_delay, function(name) + if tp.tpr_list[name] then + tp.tpr_list[name] = nil + minetest.chat_send_player(sender, S("Request timed-out.")) + minetest.chat_send_player(receiver, S("Request timed-out.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("Request timed-out."), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(receiver), S("Request timed-out."), 0xFFFFFF) + end + return end - end, sender) + end, receiver) end -local function tphr_send(sender, receiver) +function tp.tphr_send(sender, receiver) + -- Compatibility with beerchat (UNTESTED) + if minetest.get_modpath("beerchat") and not minetest.check_player_privs(sender, {tp_admin = true}) then + if minetest.get_player_by_name(sender):get_attribute("beerchat:muted:" .. sender) then + minetest.chat_send_player(sender, S("You are not allowed to send requests because you're muted.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("You are not allowed to send requests because you're muted."), 0xFFFFFF) + end + return + end + end + if minetest.check_player_privs(sender, {tp_admin = true}) and tp.enable_immediate_teleport then if receiver == "" then - minetest.chat_send_player(sender, "Usage: /tphr ") + minetest.chat_send_player(sender, S("Usage: /tphr ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("Usage. /tphr "), 0xFFFFFF) + end + return + end + if not minetest.get_player_by_name(receiver) then + minetest.chat_send_player(sender, S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online"), 0xFFFFFF) + end + return + end + tp.tphr_list[receiver] = sender + tp.tpr_accept(receiver) + minetest.chat_send_player(sender, S("@1 is teleporting to you.", receiver)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("@1 is teleporting to you.", receiver), 0xFFFFFF) + end + return + end + if receiver == "" then + minetest.chat_send_player(sender, S("Usage: /tphr ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("Usage. /tphr "), 0xFFFFFF) + end return end if not minetest.get_player_by_name(receiver) then - minetest.chat_send_player(sender, "There is no player by that name. Keep in mind this is case sensitive, and the player must be online.") + minetest.chat_send_player(sender, S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("There is no player by that name. Keep in mind this is case-sensitive, and the player must be online"), 0xFFFFFF) + end return end - - minetest.chat_send_player(receiver, sender ..' is requesting that you teleport to them. /tpy to accept; /tpn to deny') - minetest.chat_send_player(sender, 'Teleport request sent! It will time out in '.. timeout_delay ..' seconds.') - - --Write name values to list and clear old values. - tphr_list[receiver] = sender - --Teleport timeout delay - minetest.after(timeout_delay, function(name) - if tphr_list[name] then - tphr_list[name] = nil + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(receiver), S("@1 is requesting that you teleport to them. /tpy to accept; /tpn to deny", sender), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(sender), S("Teleport request sent! It will timeout in @1 seconds", tp.timeout_delay), 0xFFFFFF) + end + minetest.chat_send_player(receiver, S("@1 is requesting that you teleport to them. /tpy to accept; /tpn to deny", sender)) + minetest.chat_send_player(sender, S("Teleport request sent! It will timeout in @1 seconds", tp.timeout_delay)) + -- Write name values to list and clear old values. + tp.tphr_list[receiver] = sender + -- Teleport timeout delay + minetest.after(tp.timeout_delay, function(name) + if tp.tphr_list[name] then + tp.tphr_list[name] = nil + minetest.chat_send_player(sender, S("Request timed-out.")) + minetest.chat_send_player(receiver, S("Request timed-out.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(sender), S("Request timed-out"), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(receiver), S("Request timed-out"), 0xFFFFFF) + end + return end - end, sender) + end, receiver) end -local function tpc_send(player,coordinates) +function tp.tpc_send(player, coordinates) - local posx,posy,posz = string.match(coordinates, "^(-?%d+),(-?%d+),(-?%d+)$") + local posx,posy,posz = string.match(coordinates, "^(-?%d+), (-?%d+), (-?%d+)$") local pname = minetest.get_player_by_name(player) if posx ~= nil or posy ~= nil or posz ~= nil then @@ -123,121 +296,157 @@ local function tpc_send(player,coordinates) end if posx==nil or posy==nil or posz==nil or string.len(posx) > 6 or string.len(posy) > 6 or string.len(posz) > 6 then - minetest.chat_send_player(player, "Usage: /tpc ") + minetest.chat_send_player(player, S("Usage: /tpc ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Usage: /tpc "), 0xFFFFFF) + end return nil end - local target_coords={x=posx, y=posy, z=posz} + target_coords = {x=posx, y=posy, z=posz} - if can_teleport(target_coords) == false then - minetest.chat_send_player("You cannot teleport to a location outside the map!") + if tp.can_teleport(target_coords) == false then + minetest.chat_send_player(player, S("You cannot teleport to a location outside the map!")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("You cannot teleport to a location outside the map!"), 0xFFFFFF) + end return nil end -- If the area is protected, reject the user's request to teleport to these coordinates -- In future release we'll actually query the player who owns the area, if they're online, and ask for their permission. -- Admin user (priv "tp_admin") overrides all protection - if minetest.check_player_privs(pname, {tp_admin=true}) then - minetest.chat_send_player(player, 'Teleporting to '..posx..','..posy..','..posz) - pname:setpos(find_free_position_near(target_coords)) - minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10}) - --parti2(target_coords) + if minetest.check_player_privs(pname, {tp_admin = true}) then + tp.tpc_teleport_player(player) + minetest.chat_send_player(player, S("Teleporting to: @1, @2, @3", posx, posy, posz)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Teleporting to: @1, @2, @3", posx, posy, posz), 0xFFFFFF) + end else - if minetest.check_player_privs(pname, {tp_tpc=true}) then + if minetest.check_player_privs(pname, {tp_tpc = true}) then local protected = minetest.is_protected(target_coords,pname) - if protected then + if protected and minetest.get_modpath("areas") then if not areas:canInteract(target_coords, player) then local owners = areas:getNodeOwners(target_coords) - minetest.chat_send_player(player,("Error: %s is protected by %s."):format(minetest.pos_to_string(target_coords),table.concat(owners, ", "))) + minetest.chat_send_player(player, S("Error: @1 is protected by @2.", minetest.pos_to_string(target_coords), table.concat(owners, ", "))) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Error: @1 is protected by @2.", minetest.pos_to_string(target_coords), table.concat(owners, ", ")), 0xFFFFFF) + end return end end - minetest.chat_send_player(player, 'Teleporting to '..posx..','..posy..','..posz) - pname:setpos(find_free_position_near(target_coords)) - minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10}) - --parti2(target_coords) + tp.tpc_teleport_player(player) + minetest.chat_send_player(player, S("Teleporting to: @1, @2, @3", posx, posy, posz)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Teleporting to: @1, @2, @3", posx, posy, posz), 0xFFFFFF) + end else - minetest.chat_send_player(player, "Error: You do not have permission to teleport to coordinates.") + minetest.chat_send_player(player, S("Error: You do not have permission to teleport to those coordinates.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Error: You do not have permission to teleport to those coordinates."), 0xFFFFFF) + end return end end end -local function tpr_deny(name) - if tpr_list[name] then - minetest.chat_send_player(tpr_list[name], 'Teleport request denied.') - tpr_list[name] = nil - end - if tphr_list[name] then - minetest.chat_send_player(tphr_list[name], 'Teleport request denied.') - tphr_list[name] = nil +function tp.tpr_deny(name) + if tp.tpr_list[name] then + name2 = tp.tpr_list[name] + minetest.chat_send_player(name2, S("Teleport request denied.")) + minetest.chat_send_player(name, S("You denied the request @1 sent you.", name2)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(name2), S("Teleport request denied."), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(name), S("You denied the request @1 sent you.", name2), 0xFFFFFF) + end + tp.tpr_list[name] = nil + elseif tp.tphr_list[name] then + name2 = tp.tphr_list[name] + minetest.chat_send_player(name2, S("Teleport request denied.")) + minetest.chat_send_player(name, S("You denied the request @1 sent you.", name2)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(name2), S("Teleport request denied."), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(name), S("You denied the request @1 sent you.", name2), 0xFFFFFF) + end + tp.tphr_list[name] = nil + else + minetest.chat_send_player(name, S("Usage: /tpn allows you to deny teleport requests sent to you by other players.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(name), S("Usage: /tpn allows you to deny teleport requests sent to you by other players."), 0xFFFFFF) + end + return end end ---Teleport Accept Systems -local function tpr_accept(name, param) - - --Check to prevent constant teleporting. - if not tpr_list[name] - and not tphr_list[name] then - minetest.chat_send_player(name, "Usage: /tpy allows you to accept teleport requests sent to you by other players.") +-- Teleport Accept Systems +function tp.tpr_accept(name, param) + -- Check to prevent constant teleporting. + if not tp.tpr_list[name] and not tp.tphr_list[name] then + minetest.chat_send_player(name, S("Usage: /tpy allows you to accept teleport requests sent to you by other players")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(name), S("Usage: /tpy allows you to accept teleport requests sent to you by other players"), 0xFFFFFF) + end return end - - local chatmsg, source, target, name2 - - if tpr_list[name] then - name2 = tpr_list[name] + + if tp.tpr_list[name] then + name2 = tp.tpr_list[name] source = minetest.get_player_by_name(name) target = minetest.get_player_by_name(name2) - chatmsg = name2 .. " is teleporting to you." - tpr_list[name] = nil - elseif tphr_list[name] then - name2 = tphr_list[name] + chatmsg = S("@1 is teleporting to you.", name2) + tp.tpr_list[name] = nil + elseif tp.tphr_list[name] then + name2 = tp.tphr_list[name] source = minetest.get_player_by_name(name2) target = minetest.get_player_by_name(name) - chatmsg = "You are teleporting to " .. name2 .. "." - tphr_list[name] = nil + chatmsg = S("You are teleporting to @1.", name2) + tp.tphr_list[name] = nil else return end - + -- Could happen if either player disconnects (or timeout); if so just abort if not source or not target then + minetest.chat_send_player(name, S("@1 doesn't exist, or just disconnected/left (by timeout).", name2)) return end - - minetest.chat_send_player(name2, "Request Accepted!") + tp.tpr_teleport_player() + minetest.chat_send_player(name2, S("Request Accepted!")) minetest.chat_send_player(name, chatmsg) - - local target_coords=source:getpos() - target:setpos(find_free_position_near(target_coords)) - minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10}) - --parti2(target_coords) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(name2), S("Request Accepted!"), 0xFFFFFF) + chat2.send_message(minetest.get_player_by_name(name), chatmsg, 0xFFFFFF) + end end -- Teleport Jump - Relative Position Teleportation by number of nodes -local function tpj(player,param) +function tp.tpj(player, param) local pname = minetest.get_player_by_name(player) if param == "" then - minetest.chat_send_player(player, "Usage. ") + minetest.chat_send_player(player, S("Usage: ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Usage: "), 0xFFFFFF) + end return false end local args = param:split(" ") -- look into this. Can it crash if the player does not have two parameters? if #args < 2 then - minetest.chat_send_player(player, "Usage. ") + minetest.chat_send_player(player, S("Usage: ")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Usage: "), 0xFFFFFF) + end return false end if not tonumber(args[2]) then - return false, "Not a Number!" + return false, S("Not a number!") end -- Initially generate the target coords from the player's current position (since it's relative) and then perform the math. - local target_coords = minetest.get_player_by_name(player):getpos() + target_coords = minetest.get_player_by_name(player):get_pos() if args[1] == "x" then target_coords["x"] = target_coords["x"] + tonumber(args[2]) elseif args[1] == "y" then @@ -245,21 +454,28 @@ local function tpj(player,param) elseif args[1] == "z" then target_coords["z"] = target_coords["z"] + tonumber(args[2]) else - minetest.chat_send_player(player,"Not a valid axis. Valid options are X, Y or Z.") + minetest.chat_send_player(player, S("Not a valid axis. Valid options are X, Y or Z")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Not a valid axis. Valid options are X, Y or Z"), 0xFFFFFF) + end return end - if can_teleport(target_coords) == false then - minetest.chat_send_player(player, "You cannot teleport to a location outside the map!") + if tp.can_teleport(target_coords) == false then + minetest.chat_send_player(player, S("You cannot teleport to a location outside the map!")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("You cannot teleport to a location outside the map!"), 0xFFFFFF) + end return end - pname:setpos(find_free_position_near(target_coords)) - minetest.sound_play("whoosh", {pos = target_coords, gain = 0.5, max_hear_distance = 10}) - --parti2(target_coords) + tp.tpc_teleport_player(player) end -- Evade -local function tpe(player) - minetest.chat_send_player(player, "EVADE!") +function tp.tpe(player) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("EVADE!"), 0xFFFFFF) + end + minetest.chat_send_player(player, S("EVADE!")) local mindistance = 15 local maxdistance = 50 local times = math.random(6,20) -- how many times to jump - minimum,maximum @@ -277,57 +493,110 @@ local function tpe(player) distance = isnegative .. math.random(mindistance,maxdistance) -- the distance to jump axis = options[math.random(3)] local command = axis .. " " .. distance - tpj(player,command) + tp.tpj(player, command) end ) iteration = iteration + 0.5 end end +-- Register chatcommands +if tp.enable_tpp_command then + minetest.register_chatcommand("tpp", { + description = S("Teleport to a place (i.e., spawn, shop)."), + params = S(" | leave empty to see available places"), + privs = {}, + func = function(player, param) + local pname = minetest.get_player_by_name(player) + + -- Show the available places to the player (taken from shivajiva101's POI mod, thanks!). + if param == "" then + local places = {} + if not tp.available_places then tp.available_places = {} end + for key, value in pairs(tp.available_places) do + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), key, 0xFFFFFF) + end + table.insert(places, key) + end + if #places == 0 then + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("There are no places yet."), 0xFFFFFF) + end + return true, S("There are no places yet.") + end + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Usage: /tpp "), 0xFFFFFF) + end + table.insert(places, S("Usage: /tpp ")) + return true, table.concat(places, "\n") + -- Teleport player to the specified place (taken from shivajiva101's POI mod, thanks!). + elseif tp.available_places[param] then + pos = {x = tp.available_places[param].x, y = tp.available_places[param].y, z = tp.available_places[param].z} + tp.tpp_teleport_player(player) + minetest.chat_send_player(player, S("Teleporting to @1.", param)) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("Teleporting to @1.", param), 0xFFFFFF) + end + -- Check if the place exists. + elseif not tp.available_places[param] then + minetest.chat_send_player(player, S("There is no place by that name. Keep in mind this is case-sensitive.")) + if minetest.get_modpath("chat2") then + chat2.send_message(minetest.get_player_by_name(player), S("There is no place by that name. Keep in mind this is case-sensitive."), 0xFFFFFF) + end + return + end + end, + }) +end + minetest.register_chatcommand("tpr", { - description = "Request teleport to another player", - params = " | leave playername empty to see help message", - privs = {interact=true}, - func = tpr_send + description = S("Request teleport to another player"), + params = S(" | leave playername empty to see help message"), + privs = {interact = true, tp = true}, + func = tp.tpr_send }) minetest.register_chatcommand("tphr", { - description = "Request player to teleport to you", - params = " | leave playername empty to see help message", - privs = {interact=true}, - func = tphr_send + description = S("Request player to teleport to you"), + params = S(" | leave playername empty to see help message"), + privs = {interact = true, tp = true}, + func = tp.tphr_send }) minetest.register_chatcommand("tpc", { - description = "Teleport to coordinates", - params = " | leave coordinates empty to see help message", - privs = {interact=true,tp_tpc=true}, - func = tpc_send + description = S("Teleport to coordinates"), + params = S(" | leave coordinates empty to see help message"), + privs = {interact = true, tp_tpc = true, tp = true}, + func = tp.tpc_send }) minetest.register_chatcommand("tpj", { - description = "Teleport to relative position", - params = " | leave empty to see help message", - privs = {interact=true,tp_tpc=true}, - func = tpj + description = S("Teleport to relative position"), + params = S(" | leave empty to see help message"), + privs = {interact = true, tp_tpc = true, tp = true}, + func = tp.tpj }) minetest.register_chatcommand("tpe", { - description = "Evade Enemy", - privs = {interact=true,tp_tpc=true}, - func = tpe + description = S("Evade Enemy"), + privs = {interact = true, tp_tpc = true, tp = true}, + func = tp.tpe }) minetest.register_chatcommand("tpy", { - description = "Accept teleport requests from another player", - privs = {interact=true}, - func = tpr_accept + description = S("Accept teleport requests from another player"), + privs = {interact = true, tp = true}, + func = tp.tpr_accept }) minetest.register_chatcommand("tpn", { - description = "Deny teleport requests from another player", - privs = {interact=true}, - func = tpr_deny + description = S("Deny teleport requests from another player"), + privs = {interact = true, tp = true}, + func = tp.tpr_deny }) -minetest.log("info", "[Teleport Request] TPS Teleport v" .. version .. " Loaded.") +-- Log +if minetest.settings:get_bool("log_mods") then + minetest.log("action", S("[Teleport Request] TPS Teleport v@1 Loaded!", tp.version)) +end diff --git a/teleport_request/intllib.lua b/teleport_request/intllib.lua new file mode 100644 index 00000000..6669d720 --- /dev/null +++ b/teleport_request/intllib.lua @@ -0,0 +1,45 @@ + +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- 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/teleport_request/locale/es.po b/teleport_request/locale/es.po new file mode 100644 index 00000000..af580f89 --- /dev/null +++ b/teleport_request/locale/es.po @@ -0,0 +1,197 @@ +# Spanish translation for Teleport Request. +# Copyright (C) 2015-2019 ChaosWormz and contributors. +# This file is distributed under under the same license as the Teleport Request package. +# Panquesito7, 2019. + +msgid "" +msgstr "" +"Project-Id-Version: Teleport Request\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-07-12 5:07+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: FULL NAME \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: config.lua +msgid "Let players teleport to other players (request will be sent)" +msgstr "Permite que los jugadores se teletransporten a otros jugadores (se enviará una solicitud)" + +#: config.lua +msgid "Gives full admin-access to a player." +msgstr "Da acceso total de administrador a un jugador." + +#: config.lua +msgid "Allow player to teleport to coordinates (if allowed by area protection)" +msgstr "Permite a los jugadores teletransportarse a las coordenadas especificadas (si esta permitido por la protección de la área)" + +#: init.lua +msgid "You are not allowed to send requests because you're muted." +msgstr "No tienes permiso para mandar solicitudes de teletransporte porque estás silenciado." + +#: init.lua +msgid "Usage: /tpr " +msgstr "Uso: /tpr " + +#: init.lua +msgid "There is no player by that name. Keep in mind this is case-sensitive, and the player must be online" +msgstr "No hay jugador con ese nombre. Tenga en cuenta que esto es caso-sensitivo, y el jugador debe de estar én linea." + +#: init.lua +msgid "You are teleporting to @1." +msgstr "Te estas teletransportando a @1." + +#: init.lua +msgid "@1 is requesting to teleport to you. /tpy to accept" +msgstr "@1 esta pidiendo teletransportarse a ti. /tpy para aceptar" + +#: init.lua +msgid "Teleport request sent! It will timeout in @1 seconds" +msgstr "¡Solicitud enviada! Se agotara en @1 segundos" + +#: init.lua +msgid "Request timed-out." +msgstr "La solicitud enviada expiró." + +#: init.lua +msgid "@1 is teleporting to you." +msgstr "@1 se esta teletransportando a ti." + +#: init.lua +msgid "Usage: /tphr " +msgstr "Uso: /tphr " + +#: init.lua +msgid "@1 is requesting that you teleport to them. /tpy to accept; /tpn to deny" +msgstr "@1 esta pidiendo que tu te teletransportes a el/ella. /tpy para aceptar, /tpn para denegar" + +#: init.lua +msgid "Usage: /tpc " +msgstr "Uso: /tpc " + +#: init.lua +msgid "You cannot teleport to a location outside the map!" +msgstr "¡No puedes teletransportarte afuera del mundo!" + +#: init.lua +msgid "Teleporting to: @1, @2, @3" +msgstr "Teletransportandose a: @1, @2, @3" + +#: init.lua +msgid "Error: @1 is protected by @2." +msgstr "Error: @1 esta protegido por @2." + +#: init.lua +msgid "Error: You do not have permission to teleport to those coordinates." +msgstr "Error: No tienes permiso para teletransportarte a esas coordenadas." + +#: init.lua +msgid "Teleport request denied." +msgstr "Solicitud denegada." + +#: init.lua +msgid "You denied the request @1 sent you." +msgstr "Tú denegaste la solicitud de teletransporte que @1 te mando." + +#: init.lua +msgid "Usage: /tpn allows you to deny teleport requests sent to you by other players." +msgstr "Uso: /tpn te permite denegar solicitudes enviadas para ti de otros jugadores." + +#: init.lua +msgid "Usage: /tpy allows you to accept teleport requests sent to you by other players" +msgstr "Uso: /tpy te permite aceptar solicitudes enviadas para ti de otros jugadores" + +#: init.lua +msgid "@1 doesn't exist, or just disconnected/left (by timeout)." +msgstr "@1 no existe, o se desconecto/fue." + +#: init.lua +msgid "Request Accepted!" +msgstr "¡Solicitud aceptada!" + +#: init.lua +msgid "Usage: " +msgstr "Uso: " + +#: init.lua +msgid "Not a number!" +msgstr "¡No un número!" + +#: init.lua +msgid "Not a valid axis. Valid options are X, Y or Z" +msgstr "Eje invalido. Opciones validas son x, y, o z" + +#: init.lua +msgid "EVADE!" +msgstr "¡EVADIR!" + +#: init.lua +msgid "Request teleport to another player." +msgstr "Enviar solicitud para teletransportarte a otro jugador." + +#: init.lua +msgid " | leave playername empty to see help message" +msgstr " | Deje el nombre del jugador vacío para ver el mensaje de ayuda" + +#: init.lua +msgid "Request player to teleport to you" +msgstr "Solicita al jugador que se teletransporte a ti." + +#: init.lua +msgid "Teleport to coordinates" +msgstr "Teletransportarse a las coordenadas especificadas." + +#: init.lua +msgid " | leave coordinates empty to see help message" +msgstr " | Deje las coordenadas vacías para ver el mensaje de ayuda" + +#: init.lua +msgid "Teleport to relative position" +msgstr "Teletransportarse a la posición relativa." + +#: init.lua +msgid " | leave empty to see help message" +msgstr " | Deje vacío para ver el mensaje de ayuda" + +#: init.lua +msgid "Evade Enemy" +msgstr "Evadir enemigo." + +#: init.lua +msgid "Teleport to a place (i.e., spawn, shop)." +msgstr "Teletransportarse a un lugar (p.ej., la tienda, la ciudad)." + +#: init.lua +msgid " | leave empty to see available places" +msgstr " | Deje vacío para ver los lugares disponibles" + +#: init.lua +msgid "There are no places yet." +msgstr "Todavia no hay lugares." + +#: init.lua +msgid "Usage: /tpp " +msgstr "Uso: /tpp " + +#: init.lua +msgid "Teleporting to @1." +msgstr "Teletransportandose a @1." + +#: init.lua +msgid "There is no place by that name. Keep in mind this is case-sensitive." +msgstr "No hay lugar con ese nombre. Tenga en cuenta que esto es caso-sensitivo." + +#: init.lua +msgid "Accept teleport requests from another player" +msgstr "Aceptar solicitudes de otro jugador." + +#: init.lua +msgid "Deny teleport requests from another player" +msgstr "Denegar solicitudos de otro jugador." + +#: init.lua +msgid "[Teleport Request] TPS Teleport v@1 Loaded!" +msgstr "[TPS] Solicitud de teletransporte v@1 Cargado!" diff --git a/teleport_request/locale/template.pot b/teleport_request/locale/template.pot new file mode 100644 index 00000000..71dd5dfd --- /dev/null +++ b/teleport_request/locale/template.pot @@ -0,0 +1,197 @@ +# Template translation for Teleport Request. +# Copyright (C) 2015-2019 ChaosWormz and contributors. +# This file is distributed under under the same license as the Teleport Request package. +# Panquesito7, 2019. + +msgid "" +msgstr "" +"Project-Id-Version: Teleport Request\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-07-12 5:07+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: FULL NAME \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: config.lua +msgid "Let players teleport to other players (request will be sent)" +msgstr "" + +#: config.lua +msgid "Gives full admin-access to a player." +msgstr "" + +#: config.lua +msgid "Allow player to teleport to coordinates (if allowed by area protection)" +msgstr "" + +#: init.lua +msgid "You are not allowed to send requests because you're muted." +msgstr "" + +#: init.lua +msgid "Usage: /tpr " +msgstr "" + +#: init.lua +msgid "There is no player by that name. Keep in mind this is case sensitive, and the player must be online" +msgstr "" + +#: init.lua +msgid "You are teleporting to @1." +msgstr "" + +#: init.lua +msgid "@1 is requesting to teleport to you. /tpy to accept" +msgstr "" + +#: init.lua +msgid "Teleport request sent! It will timeout in @1 seconds" +msgstr "" + +#: init.lua +msgid "Request timed-out." +msgstr "" + +#: init.lua +msgid "@1 is teleporting to you." +msgstr "" + +#: init.lua +msgid "Usage: /tphr " +msgstr "" + +#: init.lua +msgid "@1 is requesting that you teleport to them. /tpy to accept; /tpn to deny" +msgstr "" + +#: init.lua +msgid "Usage: /tpc " +msgstr "" + +#: init.lua +msgid "You cannot teleport to a location outside the map!" +msgstr "" + +#: init.lua +msgid "Teleporting to: @1, @2, @3" +msgstr "" + +#: init.lua +msgid "Error: @1 is protected by @2." +msgstr "" + +#: init.lua +msgid "Error: You do not have permission to teleport to those coordinates." +msgstr "" + +#: init.lua +msgid "Teleport request denied." +msgstr "" + +#: init.lua +msgid "You denied the request @1 sent you." +msgstr "" + +#: init.lua +msgid "Usage: /tpn allows you to deny teleport requests sent to you by other players." +msgstr "" + +#: init.lua +msgid "Usage: /tpy allows you to accept teleport requests sent to you by other players" +msgstr "" + +#: init.lua +msgid "@1 doesn't exist, or just disconnected/left (by timeout)." +msgstr "" + +#: init.lua +msgid "Request Accepted!" +msgstr "" + +#: init.lua +msgid "Usage: " +msgstr "" + +#: init.lua +msgid "Not a number!" +msgstr "" + +#: init.lua +msgid "Not a valid axis. Valid options are X, Y or Z" +msgstr "" + +#: init.lua +msgid "EVADE!" +msgstr "" + +#: init.lua +msgid "Teleport to a place (i.e., spawn, shop)." +msgstr "" + +#: init.lua +msgid " | leave empty to see available places" +msgstr "" + +#: init.lua +msgid "There are no places yet." +msgstr "" + +#: init.lua +msgid "Usage: /tpp " +msgstr "" + +#: init.lua +msgid "Teleporting to @1." +msgstr "" + +#: init.lua +msgid "There is no place by that name. Keep in mind this is case-sensitive." +msgstr "" + +#: init.lua +msgid "Request teleport to another player." +msgstr "" + +#: init.lua +msgid " | leave playername empty to see help message" +msgstr "" + +#: init.lua +msgid "Request player to teleport to you" +msgstr "" + +#: init.lua +msgid "Teleport to coordinates" +msgstr "" + +#: init.lua +msgid " | leave coordinates empty to see help message" +msgstr "" + +#: init.lua +msgid "Teleport to relative position" +msgstr "" + +#: init.lua +msgid " | leave empty to see help message" +msgstr "" + +#: init.lua +msgid "Evade Enemy" +msgstr "" + +#: init.lua +msgid "Accept teleport requests from another player" +msgstr "" + +#: init.lua +msgid "Deny teleport requests from another player" +msgstr "" + +#: init.lua +msgid "[Teleport Request] TPS Teleport v@1 Loaded!" +msgstr "" diff --git a/teleport_request/mod.conf b/teleport_request/mod.conf new file mode 100644 index 00000000..0ed6a1db --- /dev/null +++ b/teleport_request/mod.conf @@ -0,0 +1,3 @@ +name = tpr +optional_depends = areas, intllib, beerchat, chat2 +description = Allows players to send a request to other players to teleport to them, and do much more. diff --git a/teleport_request/settingtypes.txt b/teleport_request/settingtypes.txt new file mode 100644 index 00000000..7a40d9dc --- /dev/null +++ b/teleport_request/settingtypes.txt @@ -0,0 +1,8 @@ +# Timeout delay (default is 60) +tp.timeout_delay (Timeout delay after a request is sent) int 60 + +# Enables immediate teleport to players for those who have tp_admin privilege (enabled by default) +tp.enable_immediate_teleport (Immediate teleport for those with tp_admin privilege) bool true + +# Enables Teleport To Place command (disabled by default) +tp.enable_tpp_command (Enable Teleport To Place command) bool false diff --git a/unified_inventory/callbacks.lua b/unified_inventory/callbacks.lua index e6ea3e78..8bfe6b60 100644 --- a/unified_inventory/callbacks.lua +++ b/unified_inventory/callbacks.lua @@ -47,6 +47,15 @@ minetest.register_on_joinplayer(function(player) refill:set_size("main", 1) end) +local function apply_new_filter(player, search_text, new_dir) + local player_name = player:get_player_name() + minetest.sound_play("click", {to_player=player_name, gain = 0.1}) + unified_inventory.apply_filter(player, search_text, new_dir) + unified_inventory.current_searchbox[player_name] = search_text + unified_inventory.set_inventory_formspec(player, + unified_inventory.current_page[player_name]) +end + minetest.register_on_player_receive_fields(function(player, formname, fields) local player_name = player:get_player_name() @@ -60,7 +69,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.searchbox and fields.searchbox ~= unified_inventory.current_searchbox[player_name] then unified_inventory.current_searchbox[player_name] = fields.searchbox - unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) end for i, def in pairs(unified_inventory.buttons) do @@ -112,21 +120,18 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) unified_inventory.current_page[player_name]) end + -- Check clicked item image button local clicked_item for name, value in pairs(fields) do - if string.sub(name, 1, 12) == "item_button_" then - local new_dir, mangled_item = string.match(name, "^item_button_([a-z]+)_(.*)$") + local new_dir, mangled_item = string.match(name, "^item_button_([a-z]+)_(.*)$") + if new_dir and mangled_item then clicked_item = unified_inventory.demangle_for_formspec(mangled_item) if string.sub(clicked_item, 1, 6) == "group:" then - minetest.sound_play("click", {to_player=player_name, gain = 0.1}) - unified_inventory.apply_filter(player, clicked_item, new_dir) - unified_inventory.current_searchbox[player_name] = clicked_item - unified_inventory.set_inventory_formspec(player, - unified_inventory.current_page[player_name]) + -- Change search filter to this group + apply_new_filter(player, clicked_item, new_dir) return end - if new_dir == "recipe" - or new_dir == "usage" then + if new_dir == "recipe" or new_dir == "usage" then unified_inventory.current_craft_direction[player_name] = new_dir end break @@ -145,6 +150,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) unified_inventory.alternate[player_name] = 1 unified_inventory.set_inventory_formspec(player, "craftguide") elseif player_creative then + -- Creative page: Add entire stack to inventory local inv = player:get_inventory() local stack = ItemStack(clicked_item) stack:set_count(stack:get_stack_max()) @@ -162,12 +168,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.sound_play("paperflip2", {to_player=player_name, gain = 1.0}) elseif fields.searchresetbutton then - unified_inventory.apply_filter(player, "", "nochange") - unified_inventory.current_searchbox[player_name] = "" - unified_inventory.set_inventory_formspec(player, - unified_inventory.current_page[player_name]) - minetest.sound_play("click", - {to_player=player_name, gain = 0.1}) + apply_new_filter(player, "", "nochange") end -- alternate buttons diff --git a/unifiedbricks/init.lua b/unifiedbricks/init.lua index e72b7f42..de71175f 100644 --- a/unifiedbricks/init.lua +++ b/unifiedbricks/init.lua @@ -107,6 +107,7 @@ minetest.register_node("unifiedbricks:brickblock", { groups = {cracky=3, not_in_creative_inventory=1, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.override_item("default:brick", { @@ -128,6 +129,7 @@ minetest.register_node("unifiedbricks:clayblock", { footstep = "", }), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.override_item("default:clay", { @@ -151,6 +153,7 @@ minetest.register_node("unifiedbricks:brickblock_multicolor_dark", { groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node("unifiedbricks:brickblock_multicolor_medium", { @@ -168,6 +171,7 @@ minetest.register_node("unifiedbricks:brickblock_multicolor_medium", { groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_node("unifiedbricks:brickblock_multicolor_light", { @@ -185,6 +189,7 @@ minetest.register_node("unifiedbricks:brickblock_multicolor_light", { groups = {cracky=3, ud_param2_colorable = 1}, sounds = default.node_sound_stone_defaults(), on_construct = unifieddyes.on_construct, + on_dig = unifieddyes.on_dig, }) minetest.register_craft( { diff --git a/unifieddyes/API.md b/unifieddyes/API.md index 6f1b9d0b..08b2ee2f 100644 --- a/unifieddyes/API.md +++ b/unifieddyes/API.md @@ -12,8 +12,8 @@ minetest.register_node("mymod:colored_node", { paramtype2 = "color", palette = "unifieddyes_palette_extended.png", groups = {snappy = 1, cracky = 2, ud_param2_colorable = 1} - on_construct = unifieddyes.on_construct, - airbrush_replacement_node = "mymod:my_other_colored_node" + airbrush_replacement_node = "mymod:my_other_colored_node", + on_dig = unifieddyes.on_dig }) ``` @@ -32,12 +32,14 @@ minetest.register_node("mymod:colored_node", { If your node if of the kind where you need the split palette, but you need to put the *full color name* into the node name, as opposed to just the hue, then add the keys `ud_color_start` and `ud_color_end` and set them to the positions of the first and last characters of the color name (where 1 is the first character of the mod name at the start of the node name, i.e. "mymod:foo_bar_orange_baz" would have the start set to 15 and the end at 20). -`on_construct`: see below. - `airbrush_replacement_node`: The node to swap in when the airbrush is used on this node. For example, you could `minetest.override_item()` on some default node to add this field, pointing to a colorable node of your own, so that when the default node is painted, it's replaced with yours in the new color. #### Function calls +**`unifieddyes.on_dig(pos, node, digger)`** + +Set in a node definition's `on_dig` callback, this makes sure that if the player digs a neutral node, i.e. a colorable node that was left uncolored/white after placing, they receive a version of that item that has been stripped of its itemstack color setting, so that it is identical to what would have been in their inventory when that node was originally placed. This prevents the engine splitting stacks of that item due to technically-different but visually-identical itemstack coloring. This function is only needed in the definition of colorable versions of a node, not any uncolored counterparts. For example, if you have a mod that has a simple, wooden chair, and the mod turns it into one with a colored seat cushion when you airbrush or craft it with dye, then only that latter colored-seat version needs this function. + **`unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)` `unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)`** @@ -86,10 +88,6 @@ This is called when a node is punched while wielding the airbrush. This one does just what it sounds like - it shows the color selector formspec. -**`unifieddyes.on_construct(pos)`** - -This function, usually called from your node definition's `on_construct`, just sets the `palette = "ext"` metadata key for the node after it's been placed. This can then be read in an LBM to determine if this node needs to be converted from the old 89-color palette to the extended 256-color palette. Although it is good practice to call this for any node that uses the 256-color palette, it isn't actually necessary as long as the node has never used the 89-color palette, and won't be subjected to an LBM that changes its color. - **`unifieddyes.register_color_craft(recipe)`** This will loop through all of Unified Dyes' color lists, generating one recipe for every color in the palette given in the call. Example usage: @@ -127,7 +125,6 @@ Makes a colored itemstack out of the given `itemstack` and `color` (as a dye, e. Does just what it sounds like - it registers all the nodes that are needed for a given base node (`def`) to be able to use the split palette, each named according to `name`, with the palette hue appended. If a custom drop is needed, it can be passed along (only a string is allowed here, specifying a single item). - #### Tables In addition to the above API calls, Unified Dyes provides several useful tables @@ -151,8 +148,8 @@ If your mod used the old paradigm where you craft a neutral-colored item, place ```lua place_param2 = 240, after_dig_node = unifieddyes.after_dig_node, - after_place_node = unifieddyes.recolor_on_place, - ud_replacement_node = "mod:some_node" + ud_replacement_node = "mod:some_node", + on_dig = unifieddyes.on_dig ``` * Add the `airbrush_replacement_node` key to the node definition, if needed. @@ -167,10 +164,9 @@ If your mod used the old paradigm where you craft a neutral-colored item, place * Convert that remaining texture to grayscale, enhance its contrast as much as you can without distorting it, and rename it and the node it'll be used to something neutral-sounding. -* Add the `on_construct` and `palette` keys to your neutral node definition, for example: +* Add the `palette` key to your neutral node definition, for example: `palette = "unifieddyes_palette_extended.png",` - `on_construct = unifieddyes.on_construct,` * Adjust your node's groups to specify that the node can be colored. Example (note the last item): @@ -180,7 +176,7 @@ If your mod used the old paradigm where you craft a neutral-colored item, place * Add the above recipes helper call (which replaces those delted recipes) -* If your colored node is based on someone else's neutral node, for example if you made a mod that creates multiple colors of minetest_game's default clay, you may find it best to create a single "stand-in" node that's identical to the neutral node, but named for your mod, hidden from the creative inventory, and which has a properly-prepared grayscale texture image in addition to the above keys. Use `minetest.override_item()` to add the `on_construct`, `palette`, and `airbrush_replacement_node` keys, and the `ud_param2_colorable` group, to that "someone else's" node. Then use that node and your custom, hidden node in the craft helper call. +* If your colored node is based on someone else's neutral node, for example if you made a mod that creates multiple colors of minetest_game's default clay, you may find it best to create a single "stand-in" node that's identical to the neutral node, but named for your mod, hidden from the creative inventory, and which has a properly-prepared grayscale texture image in addition to the above keys. Use `minetest.override_item()` to add the `palette` and `airbrush_replacement_node` keys, and the `ud_param2_colorable` group, to that "someone else's" node. Then use that node and your custom, hidden node in the craft helper call. * You will need to write a run-only-once LBM to convert your old statically-colored nodes to use hardware coloring. See above for functions that will help reduce the work required for this part. diff --git a/unifieddyes/init.lua b/unifieddyes/init.lua index 3f0f8278..ca3912d4 100644 --- a/unifieddyes/init.lua +++ b/unifieddyes/init.lua @@ -195,6 +195,44 @@ minetest.register_on_placenode( end ) +-- The complementary function: strip-off the color if the node being dug is still white/neutral + +local function move_item(item, pos, inv) + if not creative_mode or not inv:contains_item("main", item, true) then + inv:add_item("main", item) + end + minetest.remove_node(pos) +end + +function unifieddyes.on_dig(pos, node, digger) + + local playername = digger:get_player_name() + if minetest.is_protected(pos, playername) then + minetest.record_protection_violation(pos, playername) + return + end + + local oldparam2 = minetest.get_node(pos).param2 + local def = minetest.registered_items[node.name] + local del_color + + if def.paramtype2 == "color" and oldparam2 == 240 and def.palette == "unifieddyes_palette_extended.png" then + del_color = true + elseif def.paramtype2 == "colorwallmounted" and math.floor(oldparam2 / 8) == 0 and def.palette == "unifieddyes_palette_colorwallmounted.png" then + del_color = true + elseif def.paramtype2 == "colorfacedir" and math.floor(oldparam2 / 32) == 0 and string.find(def.palette, "unifieddyes_palette_") then + del_color = true + end + + local inv = digger:get_inventory() + + if del_color then + if inv:room_for_item("main", node.name) then move_item(node.name, pos, inv) end + else + return minetest.node_dig(pos, node, digger) + end +end + -- just stubs to keep old mods from crashing when expecting auto-coloring -- or getting back the dye on dig. diff --git a/unifieddyes/locale/ru.txt b/unifieddyes/locale/ru.txt new file mode 100644 index 00000000..41172083 --- /dev/null +++ b/unifieddyes/locale/ru.txt @@ -0,0 +1,74 @@ +# Translation by @drakes_journey + +Lime Dye = Лаймовая краска +Aqua Dye = Аквамариновая краска +Sky-blue Dye = Голубая краска +Red-violet Dye = Красно-фиолетовая краска +Light Grey Dye = Светло-серая краска + +Dark Red Dye (low saturation) = Темная красная краска (низкая насыщенность) +Dark Orange Dye (low saturation) = Темная оранжевая краска (низкая насыщенность) +Dark Yellow Dye (low saturation) = Темная желтая краска (низкая насыщенность) +Dark Lime Dye (low saturation) = Темная лаймовая краска (низкая насыщенность) +Dark Green Dye (low saturation) = Темная зеленая краска (низкая насыщенность) +Dark Aqua Dye (low saturation) = Темная аквамариновая краска (низкая насыщенность) +Dark Cyan Dye (low saturation) = Темная бирюзовая краска (низкая насыщенность) +Dark Sky-blue Dye (low saturation) = Темная голубая краска (низкая насыщенность) +Dark Blue Dye (low saturation) = Темная синяя краска (низкая насыщенность) +Dark Violet Dye (low saturation) = Темная фиолетовая краска (низкая насыщенность) +Dark Magenta Dye (low saturation) = Темная пурпурная краска (низкая насыщенность) +Dark Red-violet Dye (low saturation) = Темная краснофиолетовая краска (низкая насыщенность) + +Dark Red Dye = Темная красная краска +Dark Orange Dye = Темная оранжевая краска +Dark Yellow Dye = Темная желтая краска +Dark Lime Dye = Темная зеленая краска +Dark Green Dye = Темная зеленая краска +Dark Aqua Dye = Темная аквамариновая краска +Dark Cyan Dye = Темная бирюзовая краска +Dark Sky-blue Dye = Темная голубая краска +Dark Blue Dye = Темная синяя краска +Dark Violet Dye = Темная фиолетовая краска +Dark Magenta Dye = Темная пурпурная краска +Dark Red-violet Dye = Темная красно-фиолетовая краска + +Medium Red Dye (low saturation) = Средне-красная краска (низкая насыщенность) +Medium Orange Dye (low saturation) = Средне-оранжевая краска (низкая насыщенность) +Medium Yellow Dye (low saturation) = Средне-желтая краска (низкая насыщенность) +Medium Lime Dye (low saturation) = Средне-зеленая краска (низкая насыщенность) +Medium Green Dye (low saturation) = Средне-зеленая краска (низкая насыщенность) +Medium Aqua Dye (low saturation) = Средне-аквамариновая краска (низкая насыщенность) +Medium Cyan Dye (low saturation) = Средне-бирюзовая краска (низкая насыщенность) +Medium Sky-blue Dye (low saturation) = Средне-голубая краска (низкая насыщенность) +Medium Blue Dye (low saturation) = Средне-синяя краска (низкая насыщенность) +Medium Violet Dye (low saturation) = Средне-фиолетовая краска (низкая насыщенность) +Medium Magenta Dye (low saturation) = Средне-пурпурная краска (низкая насыщенность) +Medium Red-violet Dye (low saturation) = Средне-краснофиолетовая краска (низкая насыщенность) + +Medium Red Dye = Средне-красная краска +Medium Orange Dye = Средне-оранжевая краска +Medium Yellow Dye = Средне-желтая краска +Medium Lime Dye = Средне-лаймовая краска +Medium Green Dye = Средне-зеленая краска +Medium Aqua Dye = Средне-аквамариновая краска +Medium Cyan Dye = Средне-бирюзовая краска +Medium Sky-blue = Средне-голубая краска +Medium Blue Dye = Средне-синяя краска +Medium Violet Dye = Средне-фиолетовая краска +Medium Magenta Dye = Средне-пурпурная краска +Medium Red-violet Dye = Средне-краснофиолетовая краска + +Red Dye (low saturation) = Красная краска (низкая насыщенность) +Orange Dye (low saturation) = Оранжевая краска (низкая насыщенность) +Yellow Dye (low saturation) = Желтая краска (низкая насыщенность) +Lime Dye (low saturation) = Лаймовая краска (низкая насыщенность) +Green Dye (low saturation) = Зеленая краска (низкая насыщенность) +Aqua Dye (low saturation) = Аквамариновая краска (низкая насыщенность) +Cyan Dye (low saturation) = Бирюзовая краска (низкая насыщенность) +Sky-blue Dye (low saturation) = Голубая краска (низкая насыщенность) +Blue Dye (low saturation) = Синяя краска (низкая насыщенность) +Violet Dye (low saturation) = Фиолетовая краска (низкая насыщенность) +Magenta Dye (low saturation) = Пурпурная краска (низкая насыщенность) +Red-violet Dye (low saturation) = Краснофиолетовая краска (низкая насыщенность) + +[UnifiedDyes] Loaded! = [UnifiedDyes] загружен! diff --git a/worldedit/common.lua b/worldedit/common.lua index be9a2c9c..c62957f2 100644 --- a/worldedit/common.lua +++ b/worldedit/common.lua @@ -107,7 +107,9 @@ end function mh.finish(manip, data) -- Update map - manip:set_data(data) + if data ~= nil then + manip:set_data(data) + end manip:write_to_map() manip:update_map() end diff --git a/worldedit/cuboid.lua b/worldedit/cuboid.lua index ce207615..d98e25c3 100644 --- a/worldedit/cuboid.lua +++ b/worldedit/cuboid.lua @@ -149,7 +149,7 @@ end -- Return the marker that is closest to the player worldedit.marker_get_closest_to_player = function(name) - local playerpos = minetest.get_player_by_name(name):getpos() + local playerpos = minetest.get_player_by_name(name):get_pos() local dist1 = vector.distance(playerpos, worldedit.pos1[name]) local dist2 = vector.distance(playerpos, worldedit.pos2[name]) @@ -255,4 +255,4 @@ worldedit.translate_direction = function(name, direction) end return resaxis, resdir -end \ No newline at end of file +end diff --git a/worldedit/init.lua b/worldedit/init.lua index a38e3e65..4ba84433 100644 --- a/worldedit/init.lua +++ b/worldedit/init.lua @@ -15,14 +15,6 @@ local ver = {major=1, minor=2} worldedit.version = ver worldedit.version_string = string.format("%d.%d", ver.major, ver.minor) -if not minetest.get_voxel_manip then - local err_msg = "This version of WorldEdit requires Minetest 0.4.8 or later! You have an old version." - minetest.log("error", string.rep("#", 128)) - minetest.log("error", err_msg) - minetest.log("error", string.rep("#", 128)) - error(err_msg) -end - local path = minetest.get_modpath(minetest.get_current_modname()) local function load_module(path) diff --git a/worldedit/manipulations.lua b/worldedit/manipulations.lua index a6aad16a..25aa1411 100644 --- a/worldedit/manipulations.lua +++ b/worldedit/manipulations.lua @@ -76,9 +76,6 @@ function worldedit.replace(pos1, pos2, search_node, replace_node, inverse) local count = 0 - --- TODO: This could be shortened by checking `inverse` in the loop, - -- but that would have a speed penalty. Is the penalty big enough - -- to matter? if not inverse then for i in area:iterp(pos1, pos2) do if data[i] == search_id then @@ -101,27 +98,47 @@ function worldedit.replace(pos1, pos2, search_node, replace_node, inverse) end +local function deferred_execution(next_one, finished) + -- Allocate 100% of server step for execution (might lag a little) + local allocated_usecs = + tonumber(minetest.settings:get("dedicated_server_step")) * 1000000 + local function f() + local deadline = minetest.get_us_time() + allocated_usecs + repeat + local is_done = next_one() + if is_done then + if finished then + finished() + end + return + end + until minetest.get_us_time() >= deadline + minetest.after(0, f) + end + f() +end + --- Duplicates a region `amount` times with offset vector `direction`. --- Stacking is spread across server steps, one copy per step. +-- Stacking is spread across server steps. -- @return The number of nodes stacked. function worldedit.stack2(pos1, pos2, direction, amount, finished) + -- Protect arguments from external changes during execution + pos1 = table.copy(pos1) + pos2 = table.copy(pos2) + direction = table.copy(direction) + local i = 0 local translated = {x=0, y=0, z=0} - local function next_one() - if i < amount then - i = i + 1 - translated.x = translated.x + direction.x - translated.y = translated.y + direction.y - translated.z = translated.z + direction.z - worldedit.copy2(pos1, pos2, translated) - minetest.after(0, next_one) - else - if finished then - finished() - end - end + local function step() + translated.x = translated.x + direction.x + translated.y = translated.y + direction.y + translated.z = translated.z + direction.z + worldedit.copy2(pos1, pos2, translated) + i = i + 1 + return i >= amount end - next_one() + deferred_execution(step, finished) + return worldedit.volume(pos1, pos2) * amount end @@ -135,54 +152,47 @@ end function worldedit.copy(pos1, pos2, axis, amount) local pos1, pos2 = worldedit.sort_pos(pos1, pos2) + local dim = vector.add(vector.subtract(pos2, pos1), 1) + if amount > 0 and amount < dim[axis] then + -- Source and destination region are overlapping and moving needs to + -- happen in reverse. + -- FIXME: I can't be bothered, so just defer to the legacy code for now. + return worldedit.legacy_copy(pos1, pos2, axis, amount) + end + + local off = {x=0, y=0, z=0} + off[axis] = amount + return worldedit.copy2(pos1, pos2, off) +end + +-- This function is not offical part of the API and may be removed at any time. +function worldedit.legacy_copy(pos1, pos2, axis, amount) + local pos1, pos2 = worldedit.sort_pos(pos1, pos2) + worldedit.keep_loaded(pos1, pos2) local get_node, get_meta, set_node = minetest.get_node, minetest.get_meta, minetest.set_node - -- Copy things backwards when negative to avoid corruption. - -- FIXME: Lots of code duplication here. - if amount < 0 then - local pos = {} - pos.x = pos1.x - while pos.x <= pos2.x do - pos.y = pos1.y - while pos.y <= pos2.y do - pos.z = pos1.z - while pos.z <= pos2.z do - local node = get_node(pos) -- Obtain current node - local meta = get_meta(pos):to_table() -- Get meta of current node - local value = pos[axis] -- Store current position - pos[axis] = value + amount -- Move along axis - set_node(pos, node) -- Copy node to new position - get_meta(pos):from_table(meta) -- Set metadata of new node - pos[axis] = value -- Restore old position - pos.z = pos.z + 1 - end - pos.y = pos.y + 1 + -- Copy things backwards + local pos = {} + pos.x = pos2.x + while pos.x >= pos1.x do + pos.y = pos2.y + while pos.y >= pos1.y do + pos.z = pos2.z + while pos.z >= pos1.z do + local node = get_node(pos) -- Obtain current node + local meta = get_meta(pos):to_table() -- Get meta of current node + local value = pos[axis] -- Store current position + pos[axis] = value + amount -- Move along axis + set_node(pos, node) -- Copy node to new position + get_meta(pos):from_table(meta) -- Set metadata of new node + pos[axis] = value -- Restore old position + pos.z = pos.z - 1 end - pos.x = pos.x + 1 - end - else - local pos = {} - pos.x = pos2.x - while pos.x >= pos1.x do - pos.y = pos2.y - while pos.y >= pos1.y do - pos.z = pos2.z - while pos.z >= pos1.z do - local node = get_node(pos) -- Obtain current node - local meta = get_meta(pos):to_table() -- Get meta of current node - local value = pos[axis] -- Store current position - pos[axis] = value + amount -- Move along axis - set_node(pos, node) -- Copy node to new position - get_meta(pos):from_table(meta) -- Set metadata of new node - pos[axis] = value -- Restore old position - pos.z = pos.z - 1 - end - pos.y = pos.y - 1 - end - pos.x = pos.x - 1 + pos.y = pos.y - 1 end + pos.x = pos.x - 1 end return worldedit.volume(pos1, pos2) end @@ -195,28 +205,70 @@ end function worldedit.copy2(pos1, pos2, off) local pos1, pos2 = worldedit.sort_pos(pos1, pos2) - worldedit.keep_loaded(pos1, pos2) + local src_manip, src_area = mh.init(pos1, pos2) + local src_stride = {x=1, y=src_area.ystride, z=src_area.zstride} + local src_offset = vector.subtract(pos1, src_area.MinEdge) - local get_node, get_meta, set_node = minetest.get_node, - minetest.get_meta, minetest.set_node - local pos = {} - pos.x = pos2.x - while pos.x >= pos1.x do - pos.y = pos2.y - while pos.y >= pos1.y do - pos.z = pos2.z - while pos.z >= pos1.z do - local node = get_node(pos) -- Obtain current node - local meta = get_meta(pos):to_table() -- Get meta of current node - local newpos = vector.add(pos, off) -- Calculate new position - set_node(newpos, node) -- Copy node to new position - get_meta(newpos):from_table(meta) -- Set metadata of new node - pos.z = pos.z - 1 + local dpos1 = vector.add(pos1, off) + local dpos2 = vector.add(pos2, off) + local dim = vector.add(vector.subtract(pos2, pos1), 1) + + local dst_manip, dst_area = mh.init(dpos1, dpos2) + local dst_stride = {x=1, y=dst_area.ystride, z=dst_area.zstride} + local dst_offset = vector.subtract(dpos1, dst_area.MinEdge) + + local function do_copy(src_data, dst_data) + for z = 0, dim.z-1 do + local src_index_z = (src_offset.z + z) * src_stride.z + 1 -- +1 for 1-based indexing + local dst_index_z = (dst_offset.z + z) * dst_stride.z + 1 + for y = 0, dim.y-1 do + local src_index_y = src_index_z + (src_offset.y + y) * src_stride.y + local dst_index_y = dst_index_z + (dst_offset.y + y) * dst_stride.y + -- Copy entire row at once + local src_index_x = src_index_y + src_offset.x + local dst_index_x = dst_index_y + dst_offset.x + for x = 0, dim.x-1 do + dst_data[dst_index_x + x] = src_data[src_index_x + x] + end end - pos.y = pos.y - 1 end - pos.x = pos.x - 1 end + + -- Copy node data + local src_data = src_manip:get_data() + local dst_data = dst_manip:get_data() + do_copy(src_data, dst_data) + dst_manip:set_data(dst_data) + + -- Copy param1 + src_manip:get_light_data(src_data) + dst_manip:get_light_data(dst_data) + do_copy(src_data, dst_data) + dst_manip:set_light_data(dst_data) + + -- Copy param2 + src_manip:get_param2_data(src_data) + dst_manip:get_param2_data(dst_data) + do_copy(src_data, dst_data) + dst_manip:set_param2_data(dst_data) + + mh.finish(dst_manip) + src_data = nil + dst_data = nil + + -- Copy metadata + local get_meta = minetest.get_meta + for z = 0, dim.z-1 do + for y = 0, dim.y-1 do + for x = 0, dim.x-1 do + local pos = {x=pos1.x+x, y=pos1.y+y, z=pos1.z+z} + local meta = get_meta(pos):to_table() + pos = vector.add(pos, off) + get_meta(pos):from_table(meta) + end + end + end + return worldedit.volume(pos1, pos2) end @@ -225,16 +277,32 @@ end function worldedit.move(pos1, pos2, axis, amount) local pos1, pos2 = worldedit.sort_pos(pos1, pos2) + local dim = vector.add(vector.subtract(pos2, pos1), 1) + if math.abs(amount) < dim[axis] then + -- Source and destination region are overlapping + -- FIXME: I can't be bothered, so just defer to the legacy code for now. + return worldedit.legacy_move(pos1, pos2, axis, amount) + end + + -- Copy stuff to new location + local off = {x=0, y=0, z=0} + off[axis] = amount + worldedit.copy2(pos1, pos2, off) + -- Nuke old area + worldedit.set(pos1, pos2, "air") + + return worldedit.volume(pos1, pos2) +end + +-- This function is not offical part of the API and may be removed at any time. +function worldedit.legacy_move(pos1, pos2, axis, amount) + local pos1, pos2 = worldedit.sort_pos(pos1, pos2) + worldedit.keep_loaded(pos1, pos2) - --- TODO: Move slice by slice using schematic method in the move axis - -- and transfer metadata in separate loop (and if the amount is - -- greater than the length in the axis, copy whole thing at a time and - -- erase original after, using schematic method). local get_node, get_meta, set_node, remove_node = minetest.get_node, minetest.get_meta, minetest.set_node, minetest.remove_node -- Copy things backwards when negative to avoid corruption. - --- FIXME: Lots of code duplication here. if amount < 0 then local pos = {} pos.x = pos1.x @@ -285,31 +353,29 @@ end --- Duplicates a region along `axis` `amount` times. --- Stacking is spread across server steps, one copy per step. +-- Stacking is spread across server steps. -- @param pos1 -- @param pos2 -- @param axis Axis direction, "x", "y", or "z". -- @param count -- @return The number of nodes stacked. -function worldedit.stack(pos1, pos2, axis, count) +function worldedit.stack(pos1, pos2, axis, count, finished) local pos1, pos2 = worldedit.sort_pos(pos1, pos2) local length = pos2[axis] - pos1[axis] + 1 if count < 0 then count = -count length = -length end - local amount = 0 - local copy = worldedit.copy - local i = 1 - local function next_one() - if i <= count then - i = i + 1 - amount = amount + length - copy(pos1, pos2, axis, amount) - minetest.after(0, next_one) - end + + local i, distance = 0, 0 + local function step() + distance = distance + length + worldedit.copy(pos1, pos2, axis, distance) + i = i + 1 + return i >= count end - next_one() + deferred_execution(step, finished) + return worldedit.volume(pos1, pos2) * count end @@ -638,7 +704,7 @@ function worldedit.clear_objects(pos1, pos2) -- Avoid players and WorldEdit entities if not obj:is_player() and (not entity or not entity.name:find("^worldedit:")) then - local pos = obj:getpos() + local pos = obj:get_pos() if pos.x >= pos1x and pos.x <= pos2x and pos.y >= pos1y and pos.y <= pos2y and pos.z >= pos1z and pos.z <= pos2z then diff --git a/worldedit/mod.conf b/worldedit/mod.conf new file mode 100644 index 00000000..95634775 --- /dev/null +++ b/worldedit/mod.conf @@ -0,0 +1,2 @@ +name = worldedit +description = WorldEdit main functionality & API diff --git a/worldedit/serialization.lua b/worldedit/serialization.lua index e796fc14..ddc59cd3 100644 --- a/worldedit/serialization.lua +++ b/worldedit/serialization.lua @@ -196,7 +196,7 @@ end -- @return The number of nodes. function worldedit.allocate(origin_pos, value) local nodes = load_schematic(value) - if not nodes then return nil end + if not nodes or #nodes == 0 then return nil end return worldedit.allocate_with_nodes(origin_pos, nodes) end diff --git a/worldedit/visualization.lua b/worldedit/visualization.lua index 5ac49f3b..326a6c1d 100644 --- a/worldedit/visualization.lua +++ b/worldedit/visualization.lua @@ -6,6 +6,7 @@ minetest.register_node("worldedit:placeholder", { paramtype = "light", sunlight_propagates = true, diggable = false, + pointable = false, walkable = false, groups = {not_in_creative_inventory=1}, }) diff --git a/worldedit_commands/depends.txt b/worldedit_commands/depends.txt deleted file mode 100644 index df8caff2..00000000 --- a/worldedit_commands/depends.txt +++ /dev/null @@ -1 +0,0 @@ -worldedit \ No newline at end of file diff --git a/worldedit_commands/init.lua b/worldedit_commands/init.lua index 61aafc1b..9cd5eeb2 100644 --- a/worldedit_commands/init.lua +++ b/worldedit_commands/init.lua @@ -93,14 +93,6 @@ function worldedit.player_axis(name) return "z", dir.z > 0 and 1 or -1 end -local function mkdir(path) - if minetest.mkdir then - minetest.mkdir(path) - else - os.execute('mkdir "' .. path .. '"') - end -end - local function check_filename(name) return name:find("^[%w%s%^&'@{}%[%],%$=!%-#%(%)%%%.%+~_]+$") ~= nil end @@ -257,7 +249,7 @@ minetest.register_chatcommand("/pos1", { description = "Set WorldEdit region position 1 to the player's location", privs = {worldedit=true}, func = function(name, param) - local pos = minetest.get_player_by_name(name):getpos() + local pos = minetest.get_player_by_name(name):get_pos() pos.x, pos.y, pos.z = math.floor(pos.x + 0.5), math.floor(pos.y + 0.5), math.floor(pos.z + 0.5) worldedit.pos1[name] = pos worldedit.mark_pos1(name) @@ -270,7 +262,7 @@ minetest.register_chatcommand("/pos2", { description = "Set WorldEdit region position 2 to the player's location", privs = {worldedit=true}, func = function(name, param) - local pos = minetest.get_player_by_name(name):getpos() + local pos = minetest.get_player_by_name(name):get_pos() pos.x, pos.y, pos.z = math.floor(pos.x + 0.5), math.floor(pos.y + 0.5), math.floor(pos.z + 0.5) worldedit.pos2[name] = pos worldedit.mark_pos2(name) @@ -827,8 +819,12 @@ minetest.register_chatcommand("/stack", { axis, sign = worldedit.player_axis(name) repetitions = repetitions * sign end - local count = worldedit.stack(worldedit.pos1[name], worldedit.pos2[name], axis, repetitions) - worldedit.player_notify(name, count .. " nodes stacked") + + local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] + local count = worldedit.volume(pos1, pos2) * math.abs(repetitions) + worldedit.stack(pos1, pos2, axis, repetitions, function() + worldedit.player_notify(name, count .. " nodes stacked") + end) end, function(name, param) local found, _, axis, repetitions = param:find("^([xyz%?])%s+([+-]?%d+)$") @@ -836,8 +832,9 @@ minetest.register_chatcommand("/stack", { worldedit.player_notify(name, "invalid usage: " .. param) return end + local count = check_region(name, param) - if count then return (tonumber(repetitions) + 1) * count end + if count then return tonumber(repetitions) * count end return nil end), }) @@ -846,15 +843,9 @@ minetest.register_chatcommand("/stack2", { params = " ", description = "Stack the current WorldEdit region times by offset , , ", privs = {worldedit=true}, - func = function(name, param) - local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] - if pos1 == nil or pos2 == nil then - worldedit.player_notify(name, "Select a position first!") - return - end + func = safe_region(function(name, param) local repetitions, incs = param:match("(%d+)%s*(.+)") if repetitions == nil then - worldedit.player_notify(name, "invalid count: " .. param) return end repetitions = tonumber(repetitions) @@ -866,15 +857,24 @@ minetest.register_chatcommand("/stack2", { end x, y, z = tonumber(x), tonumber(y), tonumber(z) + local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name] local count = worldedit.volume(pos1, pos2) * repetitions + worldedit.stack2(pos1, pos2, {x=x, y=y, z=z}, repetitions, function() + worldedit.player_notify(name, count .. " nodes stacked") + end) + end, + function(name, param) + local repetitions, incs = param:match("(%d+)%s*(.+)") + if repetitions == nil then + worldedit.player_notify(name, "invalid count: " .. param) + return + end + repetitions = tonumber(repetitions) - return safe_region(function() - worldedit.stack2(pos1, pos2, {x=x, y=y, z=z}, repetitions, - function() worldedit.player_notify(name, count .. " nodes stacked") end) - end, function() - return count - end)(name,param) -- more hax --wip: clean this up a little bit - end + local count = check_region(name, param) + if count then return repetitions * count end + return nil + end), }) @@ -990,7 +990,7 @@ minetest.register_chatcommand("/rotate", { worldedit.player_notify(name, "invalid usage: " .. param) return nil end - if angle % 90 ~= 0 then + if angle % 90 ~= 0 or angle % 360 == 0 then worldedit.player_notify(name, "invalid usage: angle must be multiple of 90") return nil end @@ -1115,7 +1115,7 @@ minetest.register_chatcommand("/save", { local path = minetest.get_worldpath() .. "/schems" -- Create directory if it does not already exist - mkdir(path) + minetest.mkdir(path) local filename = path .. "/" .. param .. ".we" local file, err = io.open(filename, "wb") @@ -1158,14 +1158,20 @@ minetest.register_chatcommand("/allocate", { file:close() local version = worldedit.read_header(value) - if version == 0 then + if version == nil or version == 0 then worldedit.player_notify(name, "File is invalid!") return elseif version > worldedit.LATEST_SERIALIZATION_VERSION then worldedit.player_notify(name, "File was created with newer version of WorldEdit!") + return end local nodepos1, nodepos2, count = worldedit.allocate(pos, value) + if not nodepos1 then + worldedit.player_notify(name, "Schematic empty, nothing allocated") + return + end + worldedit.pos1[name] = nodepos1 worldedit.mark_pos1(name) worldedit.pos2[name] = nodepos2 @@ -1213,7 +1219,7 @@ minetest.register_chatcommand("/load", { file:close() local version = worldedit.read_header(value) - if version == 0 then + if version == nil or version == 0 then worldedit.player_notify(name, "File is invalid!") return elseif version > worldedit.LATEST_SERIALIZATION_VERSION then @@ -1276,7 +1282,7 @@ minetest.register_chatcommand("/mtschemcreate", { local path = minetest.get_worldpath() .. "/schems" -- Create directory if it does not already exist - mkdir(path) + minetest.mkdir(path) local filename = path .. "/" .. param .. ".mts" local ret = minetest.create_schematic(worldedit.pos1[name], diff --git a/worldedit_commands/mark.lua b/worldedit_commands/mark.lua index 9d41bda3..fa588d6a 100644 --- a/worldedit_commands/mark.lua +++ b/worldedit_commands/mark.lua @@ -64,7 +64,7 @@ worldedit.mark_region = function(name) local vec = vector.subtract(pos2, pos1) local maxside = math.max(vec.x, math.max(vec.y, vec.z)) - local limit = tonumber(minetest.setting_get("active_object_send_range_blocks")) * 16 + local limit = tonumber(minetest.settings:get("active_object_send_range_blocks")) * 16 if maxside > limit * 1.5 then -- The client likely won't be able to see the plane markers as intended anyway, -- thus don't place them and also don't load the area into memory @@ -101,7 +101,7 @@ worldedit.mark_region = function(name) visual_size={x=sizez * 2, y=sizey * 2}, collisionbox = {-thickness, -sizey, -sizez, thickness, sizey, sizez}, }) - marker:setyaw(math.pi / 2) + marker:set_yaw(math.pi / 2) marker:get_luaentity().player_name = name table.insert(markers, marker) end diff --git a/worldedit_commands/mod.conf b/worldedit_commands/mod.conf new file mode 100644 index 00000000..28e9ac8e --- /dev/null +++ b/worldedit_commands/mod.conf @@ -0,0 +1,3 @@ +name = worldedit_commands +description = WorldEdit chat commands +depends = worldedit diff --git a/worldedit_gui/depends.txt b/worldedit_gui/depends.txt deleted file mode 100644 index dbc8f19a..00000000 --- a/worldedit_gui/depends.txt +++ /dev/null @@ -1,7 +0,0 @@ -worldedit -worldedit_commands -unified_inventory? -inventory_plus? -sfinv? -creative? -smart_inventory? diff --git a/worldedit_gui/init.lua b/worldedit_gui/init.lua index b88a82ec..424d61f0 100644 --- a/worldedit_gui/init.lua +++ b/worldedit_gui/init.lua @@ -70,7 +70,7 @@ local get_formspec = function(name, identifier) end --implement worldedit.show_page(name, page) in different ways depending on the available APIs -if rawget(_G, "unified_inventory") then --unified inventory installed +if minetest.global_exists("unified_inventory") then -- unified inventory installed local old_func = worldedit.register_gui_function worldedit.register_gui_function = function(identifier, options) old_func(identifier, options) @@ -103,7 +103,7 @@ if rawget(_G, "unified_inventory") then --unified inventory installed player:set_inventory_formspec(get_formspec(name, page)) end end -elseif rawget(_G, "inventory_plus") then --inventory++ installed +elseif minetest.global_exists("inventory_plus") then -- inventory++ installed minetest.register_on_joinplayer(function(player) local can_worldedit = minetest.check_player_privs(player:get_player_name(), {worldedit=true}) if can_worldedit then @@ -134,7 +134,7 @@ elseif rawget(_G, "inventory_plus") then --inventory++ installed inventory_plus.set_inventory_formspec(player, get_formspec(name, page)) end end -elseif rawget(_G, "smart_inventory") then -- smart_inventory installed +elseif minetest.global_exists("smart_inventory") then -- smart_inventory installed -- redefinition: Update the code element on inventory page to show the we-page function worldedit.show_page(name, page) local state = smart_inventory.get_page_state("worldedit_gui", name) @@ -183,7 +183,7 @@ elseif rawget(_G, "smart_inventory") then -- smart_inventory installed smartfs_callback = smart_worldedit_gui_callback, sequence = 99 }) -elseif rawget(_G, "sfinv") then --sfinv installed (part of minetest_game since 0.4.15) +elseif minetest.global_exists("sfinv") then -- sfinv installed assert(sfinv.enabled) local orig_get = sfinv.pages["sfinv:crafting"].get sfinv.override_page("sfinv:crafting", { @@ -194,21 +194,13 @@ elseif rawget(_G, "sfinv") then --sfinv installed (part of minetest_game since 0 end }) - --compatibility with pre-0.4.16 sfinv - local set_page = sfinv.set_page or function(player, name) - --assumptions: src pg has no leave callback, dst pg has no enter callback - local ctx = {page=name} - sfinv.contexts[player:get_player_name()] = ctx - sfinv.set_player_inventory_formspec(player, ctx) - end - --show the form when the button is pressed and hide it when done minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.worldedit_gui then --main page worldedit.show_page(player:get_player_name(), "worldedit_gui") return true elseif fields.worldedit_gui_exit then --return to original page - set_page(player, "sfinv:crafting") + sfinv.set_page(player, "sfinv:crafting") return true end return false @@ -222,11 +214,11 @@ elseif rawget(_G, "sfinv") then --sfinv installed (part of minetest_game since 0 end else error( - "worldedit_gui requires a supported \"gui management\" mod to be installed\n".. - "To use the GUI you need to either\n".. - "* Use minetest_game (at least 0.4.15) or a subgame with compatible sfinv\n".. - "* Install Unified Inventory or Inventory++\n".. - "If you do not want to use worldedit_gui, disable it by editing world.mt or from the Main Menu" + "worldedit_gui requires a supported gui management mod to be installed.\n".. + "To use the it you need to either:\n".. + "* use minetest_game or another sfinv-compatible subgame\n".. + "* install Unified Inventory, Inventory++ or Smart Inventory\n".. + "If you don't want to use worldedit_gui, disable it by editing world.mt or from the main menu." ) end diff --git a/worldedit_gui/mod.conf b/worldedit_gui/mod.conf new file mode 100644 index 00000000..d5b2fd50 --- /dev/null +++ b/worldedit_gui/mod.conf @@ -0,0 +1,4 @@ +name = worldedit_gui +description = WorldEdit GUI +depends = worldedit, worldedit_commands +optional_depends = unified_inventory, inventory_plus, sfinv, creative, smart_inventory diff --git a/worldedit_shortcommands/depends.txt b/worldedit_shortcommands/depends.txt deleted file mode 100644 index de1cb6c7..00000000 --- a/worldedit_shortcommands/depends.txt +++ /dev/null @@ -1 +0,0 @@ -worldedit_commands diff --git a/worldedit_shortcommands/mod.conf b/worldedit_shortcommands/mod.conf new file mode 100644 index 00000000..8df801c4 --- /dev/null +++ b/worldedit_shortcommands/mod.conf @@ -0,0 +1,3 @@ +name = worldedit_shortcommands +description = WorldEdit command short aliases +depends = worldedit_commands