From 8f085b2c7fd80bbb575c103976904747a5aa93c6 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sat, 28 Jan 2017 12:17:05 -0500 Subject: [PATCH] Rewrote the mod to use the new param2 color method New dependency on Unified Dyes. This change comes with a few neutral-to-positive side effects: 1) Minor recipe changes were necessary since there are only two blocks and two poles now. 2) All recipes, node names, etc. were updated to current minetest API. 3) Where recipes called for leaves or sticks, I used groups. 4) the "wavy" (formerly "grey") block and fence/pole can now be colored as well. 5) Inside the conversion LBM, some of the original colors were re-mapped to the closest Unified Dyes equivalents, to try to keep the on-screen appearance mostly the same after conversion. 6) Aside from "BTM" and "Health", all block and pole nodes can take on the entire Unified Dyes palette instead of just the 9 originally offered. Mod works the same as others that depend on Unified Dyes - craft and place a block or pole, then right-click on it with dye to colorize it. --- blocks.lua | 1043 +++++++------------------- depends.txt | 1 + textures/bobblocks_block.png | Bin 0 -> 652 bytes textures/bobblocks_block_off.png | Bin 0 -> 604 bytes textures/bobblocks_blueblock.png | Bin 3193 -> 0 bytes textures/bobblocks_greenblock.png | Bin 3193 -> 0 bytes textures/bobblocks_greyblock.png | Bin 3193 -> 0 bytes textures/bobblocks_indigoblock.png | Bin 3193 -> 0 bytes textures/bobblocks_invbluepole.png | Bin 3211 -> 0 bytes textures/bobblocks_invgreenpole.png | Bin 3211 -> 0 bytes textures/bobblocks_invgreypole.png | Bin 3211 -> 0 bytes textures/bobblocks_invindigopole.png | Bin 3211 -> 0 bytes textures/bobblocks_invorangepole.png | Bin 3211 -> 0 bytes textures/bobblocks_invredpole.png | Bin 3211 -> 0 bytes textures/bobblocks_invvioletpole.png | Bin 3211 -> 0 bytes textures/bobblocks_invwhitepole.png | Bin 3211 -> 0 bytes textures/bobblocks_invyellowpole.png | Bin 3211 -> 0 bytes textures/bobblocks_orangeblock.png | Bin 3193 -> 0 bytes textures/bobblocks_pole_inv.png | Bin 0 -> 452 bytes textures/bobblocks_redblock.png | Bin 3193 -> 0 bytes textures/bobblocks_redblock_off.png | Bin 3193 -> 0 bytes textures/bobblocks_violetblock.png | Bin 3193 -> 0 bytes textures/bobblocks_wavyblock.png | Bin 0 -> 1868 bytes textures/bobblocks_wavypole_inv.png | Bin 0 -> 747 bytes textures/bobblocks_whiteblock.png | Bin 3193 -> 0 bytes textures/bobblocks_yellowblock.png | Bin 3193 -> 0 bytes 26 files changed, 261 insertions(+), 783 deletions(-) create mode 100644 textures/bobblocks_block.png create mode 100644 textures/bobblocks_block_off.png delete mode 100644 textures/bobblocks_blueblock.png delete mode 100644 textures/bobblocks_greenblock.png delete mode 100644 textures/bobblocks_greyblock.png delete mode 100644 textures/bobblocks_indigoblock.png delete mode 100644 textures/bobblocks_invbluepole.png delete mode 100644 textures/bobblocks_invgreenpole.png delete mode 100644 textures/bobblocks_invgreypole.png delete mode 100644 textures/bobblocks_invindigopole.png delete mode 100644 textures/bobblocks_invorangepole.png delete mode 100644 textures/bobblocks_invredpole.png delete mode 100644 textures/bobblocks_invvioletpole.png delete mode 100644 textures/bobblocks_invwhitepole.png delete mode 100644 textures/bobblocks_invyellowpole.png delete mode 100644 textures/bobblocks_orangeblock.png create mode 100644 textures/bobblocks_pole_inv.png delete mode 100644 textures/bobblocks_redblock.png delete mode 100644 textures/bobblocks_redblock_off.png delete mode 100644 textures/bobblocks_violetblock.png create mode 100644 textures/bobblocks_wavyblock.png create mode 100644 textures/bobblocks_wavypole_inv.png delete mode 100644 textures/bobblocks_whiteblock.png delete mode 100644 textures/bobblocks_yellowblock.png diff --git a/blocks.lua b/blocks.lua index 58c173d..110dfd6 100644 --- a/blocks.lua +++ b/blocks.lua @@ -1,844 +1,321 @@ -- BobBlocks mod by RabbiBob -- State Changes -local update_bobblock = function (pos, node) - local nodename="" - local param2="" - --Switch Block State - if - -- Start Blocks - node.name == 'bobblocks:redblock_off' then nodename = 'bobblocks:redblock' - elseif node.name == 'bobblocks:redblock' then nodename = 'bobblocks:redblock_off' - elseif node.name == 'bobblocks:orangeblock_off' then nodename = 'bobblocks:orangeblock' - elseif node.name == 'bobblocks:orangeblock' then nodename = 'bobblocks:orangeblock_off' - elseif node.name == 'bobblocks:yellowblock_off' then nodename = 'bobblocks:yellowblock' - elseif node.name == 'bobblocks:yellowblock' then nodename = 'bobblocks:yellowblock_off' - elseif node.name == 'bobblocks:greenblock_off' then nodename = 'bobblocks:greenblock' - elseif node.name == 'bobblocks:greenblock' then nodename = 'bobblocks:greenblock_off' - elseif node.name == 'bobblocks:blueblock_off' then nodename = 'bobblocks:blueblock' - elseif node.name == 'bobblocks:blueblock' then nodename = 'bobblocks:blueblock_off' - elseif node.name == 'bobblocks:indigoblock_off' then nodename = 'bobblocks:indigoblock' - elseif node.name == 'bobblocks:indigoblock' then nodename = 'bobblocks:indigoblock_off' - elseif node.name == 'bobblocks:violetblock_off' then nodename = 'bobblocks:violetblock' - elseif node.name == 'bobblocks:violetblock' then nodename = 'bobblocks:violetblock_off' - elseif node.name == 'bobblocks:whiteblock_off' then nodename = 'bobblocks:whiteblock' - elseif node.name == 'bobblocks:whiteblock' then nodename = 'bobblocks:whiteblock_off' - -- Start Poles - elseif node.name == 'bobblocks:redpole_off' then nodename = 'bobblocks:redpole' - elseif node.name == 'bobblocks:redpole' then nodename = 'bobblocks:redpole_off' - elseif node.name == 'bobblocks:orangepole_off' then nodename = 'bobblocks:orangepole' - elseif node.name == 'bobblocks:orangepole' then nodename = 'bobblocks:orangepole_off' - elseif node.name == 'bobblocks:yellowpole_off' then nodename = 'bobblocks:yellowpole' - elseif node.name == 'bobblocks:yellowpole' then nodename = 'bobblocks:yellowpole_off' - elseif node.name == 'bobblocks:greenpole_off' then nodename = 'bobblocks:greenpole' - elseif node.name == 'bobblocks:greenpole' then nodename = 'bobblocks:greenpole_off' - elseif node.name == 'bobblocks:bluepole_off' then nodename = 'bobblocks:bluepole' - elseif node.name == 'bobblocks:bluepole' then nodename = 'bobblocks:bluepole_off' - elseif node.name == 'bobblocks:indigopole_off' then nodename = 'bobblocks:indigopole' - elseif node.name == 'bobblocks:indigopole' then nodename = 'bobblocks:indigopole_off' - elseif node.name == 'bobblocks:violetpole_off' then nodename = 'bobblocks:violetpole' - elseif node.name == 'bobblocks:violetpole' then nodename = 'bobblocks:violetpole_off' - elseif node.name == 'bobblocks:whitepole_off' then nodename = 'bobblocks:whitepole' - elseif node.name == 'bobblocks:whitepole' then nodename = 'bobblocks:whitepole_off' - end - minetest.add_node(pos, {name = nodename}) +bobblocks = {} +bobblocks.old_static_nodes = {} + +bobblocks.colorlist = { + "red", + "orange", + "yellow", + "green", + "blue", + "indigo", + "violet", + "white", + "grey" +} + +bobblocks.update_bobblock = function (pos, node) + local newnode = node + if string.find(newnode.name, "_off") then + newnode.name = string.sub(newnode.name, 1, -5) + else + newnode.name = newnode.name.."_off" + end + + minetest.swap_node(pos, newnode) minetest.sound_play("bobblocks_glassblock", {pos = pos, gain = 1.0, max_hear_distance = 32,}) end - --- Punch Blocks -local on_bobblock_punched = function (pos, node, puncher) - if - -- Start Blocks - node.name == 'bobblocks:redblock_off' or node.name == 'bobblocks:redblock' or - node.name == 'bobblocks:orangeblock_off' or node.name == 'bobblocks:orangeblock' or - node.name == 'bobblocks:yellowblock_off' or node.name == 'bobblocks:yellowblock' or - node.name == 'bobblocks:greenblock_off' or node.name == 'bobblocks:greenblock' or - node.name == 'bobblocks:blueblock_off' or node.name == 'bobblocks:blueblock' or - node.name == 'bobblocks:indigoblock_off' or node.name == 'bobblocks:indigoblock' or - node.name == 'bobblocks:violetblock_off' or node.name == 'bobblocks:violetblock' or - node.name == 'bobblocks:whiteblock_off' or node.name == 'bobblocks:whiteblock' or - --Start Poles - node.name == 'bobblocks:redpole_off' or node.name == 'bobblocks:redpole' or - node.name == 'bobblocks:orangepole_off' or node.name == 'bobblocks:orangepole' or - node.name == 'bobblocks:yellowpole_off' or node.name == 'bobblocks:yellowpole' or - node.name == 'bobblocks:greenpole_off' or node.name == 'bobblocks:greenpole' or - node.name == 'bobblocks:bluepole_off' or node.name == 'bobblocks:bluepole' or - node.name == 'bobblocks:indigopole_off' or node.name == 'bobblocks:indigopole' or - node.name == 'bobblocks:violetpole_off' or node.name == 'bobblocks:violetpole' or - node.name == 'bobblocks:whitepole_off' or node.name == 'bobblocks:whitepole' - then - update_bobblock(pos, node) - end -end - -minetest.register_on_punchnode(on_bobblock_punched) - -- Nodes --- Misc Node + +minetest.register_node("bobblocks:block", { + description = "Bobblocks Plain Block", + drawtype = "glasslike", + tiles = {"bobblocks_block.png"}, + paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette.png", + sunlight_propagates = true, + is_ground_content = true, + sounds = default.node_sound_glass_defaults(), + light_source = LIGHT_MAX-0, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + mesecons = {conductor={ + state = mesecon.state.on, + offstate = "bobblocks:block_off" + } + }, + on_punch = bobblocks.update_bobblock, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:block", false) + end +}) + +minetest.register_node("bobblocks:block_off", { + description = "Bobblocks Plain Block (off)", + tiles = {"bobblocks_block.png"}, + paramtype2 = "color", + palette = "unifieddyes_palette.png", + is_ground_content = true, + alpha = WATER_ALPHA, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, + drop = 'bobblocks:redblock', + mesecons = {conductor={ + state = mesecon.state.off, + onstate = "bobblocks:block" + } + }, + on_punch = bobblocks.update_bobblock, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:block_off", false) + end +}) + +-- Block Poles +minetest.register_node("bobblocks:pole", { + description = "Bobblocks Pole", + drawtype = "fencelike", + tiles = {"bobblocks_block.png"}, + inventory_image = ("bobblocks_pole_inv.png"), + paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette.png", + sunlight_propagates = true, + is_ground_content = true, + sounds = default.node_sound_glass_defaults(), + light_source = LIGHT_MAX-0, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + mesecons = {conductor={ + state = mesecon.state.on, + offstate = "bobblocks:pole_off" + } + }, + on_punch = bobblocks.update_bobblock, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:pole", false) + end +}) + +minetest.register_node("bobblocks:pole_off", { + description = "Bobblocks Pole (off)", + drawtype = "fencelike", + tiles = {"bobblocks_block.png"}, + paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette.png", + sunlight_propagates = true, + is_ground_content = true, + sounds = default.node_sound_glass_defaults(), + light_source = LIGHT_MAX-10, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, + drop = 'bobblocks:redpole', + mesecons = {conductor={ + state = mesecon.state.off, + onstate = "bobblocks:pole" + } + }, + on_punch = bobblocks.update_bobblock, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:pole_off", false) + end +}) + +-- old static nodes grandfathered-in because they have a different texture or usage than the colored ones. minetest.register_node("bobblocks:btm", { description = "Bobs TransMorgifier v5", - tiles = {"bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", + tiles = {"bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm_sides.png", "bobblocks_btm.png"}, - inventory_image = "bobblocks_btm.png", + inventory_image = "bobblocks_btm.png", paramtype2 = "facedir", material = minetest.digprop_dirtlike(1.0), legacy_facedir_simple = true, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, }) - --- Start Block Nodes -minetest.register_node("bobblocks:redblock", { - description = "Red Block", +minetest.register_node("bobblocks:wavyblock", { + description = "Bobblocks Wavy-textured Block", drawtype = "glasslike", - tiles = {"bobblocks_redblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_redblock.png"), + tiles = {"bobblocks_wavyblock.png"}, paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette.png", sunlight_propagates = true, is_ground_content = true, sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ + light_source = LIGHT_MAX-0, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + mesecons = {conductor= + { state = mesecon.state.on, - offstate = "bobblocks:redblock_off" - }} + offstate = "bobblocks:wavyblock_off" + } + }, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:wavyblock", false) + end }) -minetest.register_node("bobblocks:redblock_off", { - description = "Red Block", - tiles = {"bobblocks_redblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:redblock', - mesecons = {conductor={ +minetest.register_node("bobblocks:wavyblock_off", { + description = "Bobblocks Wavy-textured Block (off)", + tiles = {"bobblocks_wavyblock.png"}, + paramtype2 = "color", + palette = "unifieddyes_palette.png", + is_ground_content = true, + alpha = WATER_ALPHA, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, + drop = 'bobblocks:wavyblock', + mesecons = {conductor= + { state = mesecon.state.off, - onstate = "bobblocks:redblock" - }} - + onstate = "bobblocks:wavyblock" + } + }, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:wavyblock_off", false) + end }) -minetest.register_node("bobblocks:orangeblock", { - description = "Orange Block", - drawtype = "glasslike", - tiles = {"bobblocks_orangeblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_orangeblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:orangeblock_off" - }} -}) - -minetest.register_node("bobblocks:orangeblock_off", { - description = "Orange Block", - tiles = {"bobblocks_orangeblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:orangeblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:orangeblock" - }} - -}) - -minetest.register_node("bobblocks:yellowblock", { - description = "Yellow Block", - drawtype = "glasslike", - tiles = {"bobblocks_yellowblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_yellowblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:yellowblock_off" - }} -}) - -minetest.register_node("bobblocks:yellowblock_off", { - description = "Yellow Block", - tiles = {"bobblocks_yellowblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:yellowblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:yellowblock" - }} - -}) - -minetest.register_node("bobblocks:greenblock", { - description = "Green Block", - drawtype = "glasslike", - tiles = {"bobblocks_greenblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_greenblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:greenblock_off" - }} -}) - -minetest.register_node("bobblocks:greenblock_off", { - description = "Green Block", - tiles = {"bobblocks_greenblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:greenblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:greenblock" - }} - -}) - - -minetest.register_node("bobblocks:blueblock", { - description = "Blue Block", - drawtype = "glasslike", - tiles = {"bobblocks_blueblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_blueblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:blueblock_off" - }} -}) - -minetest.register_node("bobblocks:blueblock_off", { - description = "Blue Block", - tiles = {"bobblocks_blueblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:blueblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:blueblock" - }} - -}) - -minetest.register_node("bobblocks:indigoblock", { - description = "Indigo Block", - drawtype = "glasslike", - tiles = {"bobblocks_indigoblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_indigoblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:indigoblock_off" - }} -}) - -minetest.register_node("bobblocks:indigoblock_off", { - description = "Indigo Block", - tiles = {"bobblocks_indigoblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:indigoblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:indigoblock" - }} - -}) - - -minetest.register_node("bobblocks:violetblock", { - description = "Violet Block", - drawtype = "glasslike", - tiles = {"bobblocks_violetblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_violetblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:violetblock_off" - }} -}) - -minetest.register_node("bobblocks:violetblock_off", { - description = "Violet Block", - tiles = {"bobblocks_violetblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:violetblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:violetblock" - }} - -}) - -minetest.register_node("bobblocks:whiteblock", { - description = "White Block", - drawtype = "glasslike", - tiles = {"bobblocks_whiteblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_whiteblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:whiteblock_off" - }} -}) - -minetest.register_node("bobblocks:whiteblock_off", { - description = "White Block", - tiles = {"bobblocks_whiteblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:whiteblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:whiteblock" - }} - -}) - - -minetest.register_node("bobblocks:greyblock", { - description = "Grey Block", - drawtype = "glasslike", - tiles = {"bobblocks_greyblock.png"}, - inventory_image = minetest.inventorycube("bobblocks_greyblock.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:greyblock_off" - }} -}) - -minetest.register_node("bobblocks:greyblock_off", { - description = "Grey Block", - tiles = {"bobblocks_greyblock.png"}, - is_ground_content = true, - alpha = WATER_ALPHA, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:greyblock', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:greyblock" - }} - -}) - - --- Block Poles -minetest.register_node("bobblocks:redpole", { - description = "Red Pole", +minetest.register_node("bobblocks:wavypole", { + description = "Wavy-textured Pole", drawtype = "fencelike", - tiles = {"bobblocks_redblock.png"}, - inventory_image = ("bobblocks_invredpole.png"), + tiles = {"bobblocks_wavyblock.png"}, + inventory_image = ("bobblocks_wavypole_inv.png"), paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette.png", sunlight_propagates = true, is_ground_content = true, sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:redpole_off" - }} + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + after_dig_node = unifieddyes.after_dig_node, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + unifieddyes.on_rightclick(pos, node, clicker, + itemstack, pointed_thing, "bobblocks:wavypole", false) + end + --light_source = LIGHT_MAX-0, }) -minetest.register_node("bobblocks:redpole_off", { - description = "Red Pole", - drawtype = "fencelike", - tiles = {"bobblocks_redblock.png"}, - inventory_image = ("bobblocks_invredpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:redpole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:redpole" - }} - -}) - -minetest.register_node("bobblocks:orangepole", { - description = "Orange Pole", - drawtype = "fencelike", - tiles = {"bobblocks_orangeblock.png"}, - inventory_image = ("bobblocks_invorangepole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:orangepole_off" - }} -}) - -minetest.register_node("bobblocks:orangepole_off", { - description = "Orange Pole", - drawtype = "fencelike", - tiles = {"bobblocks_orangeblock.png"}, - inventory_image = ("bobblocks_invorangepole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:orangepole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:orangepole" - }} - -}) - -minetest.register_node("bobblocks:yellowpole", { - description = "Yellow Pole", - drawtype = "fencelike", - tiles = {"bobblocks_yellowblock.png"}, - inventory_image = ("bobblocks_invyellowpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:yellowpole_off" - }} -}) - -minetest.register_node("bobblocks:yellowpole_off", { - description = "Yellow Pole", - drawtype = "fencelike", - tiles = {"bobblocks_yellowblock.png"}, - inventory_image = ("bobblocks_invyellowpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:yellowpole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:yellowpole" - }} - -}) - -minetest.register_node("bobblocks:greenpole", { - description = "Green Pole", - drawtype = "fencelike", - tiles = {"bobblocks_greenblock.png"}, - inventory_image = ("bobblocks_invgreenpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:greenpole_off" - }} -}) - -minetest.register_node("bobblocks:greenpole_off", { - description = "Green Pole", - drawtype = "fencelike", - tiles = {"bobblocks_greenblock.png"}, - inventory_image = ("bobblocks_invgreenpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:greenpole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:greenpole" - }} - -}) - -minetest.register_node("bobblocks:bluepole", { - description = "Blue Pole", - drawtype = "fencelike", - tiles = {"bobblocks_blueblock.png"}, - inventory_image = ("bobblocks_invbluepole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:bluepole_off" - }} -}) - -minetest.register_node("bobblocks:bluepole_off", { - description = "Blue Pole", - drawtype = "fencelike", - tiles = {"bobblocks_blueblock.png"}, - inventory_image = ("bobblocks_invbluepole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:bluepole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:bluepole" - }} - -}) - -minetest.register_node("bobblocks:indigopole", { - description = "Indigo Pole", - drawtype = "fencelike", - tiles = {"bobblocks_indigoblock.png"}, - inventory_image = ("bobblocks_invindigopole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:indigopole_off" - }} -}) - -minetest.register_node("bobblocks:indigopole_off", { - description = "Indigo Pole", - drawtype = "fencelike", - tiles = {"bobblocks_indigoblock.png"}, - inventory_image = ("bobblocks_invindigopole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:indigopole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:indigopole" - }} - -}) - -minetest.register_node("bobblocks:violetpole", { - description = "Violet Pole", - drawtype = "fencelike", - tiles = {"bobblocks_violetblock.png"}, - inventory_image = ("bobblocks_invvioletpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:violetpole_off" - }} -}) - -minetest.register_node("bobblocks:violetpole_off", { - description = "Violet Pole", - drawtype = "fencelike", - tiles = {"bobblocks_violetblock.png"}, - inventory_image = ("bobblocks_invvioletpole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:violetpole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:violetpole" - }} - -}) - -minetest.register_node("bobblocks:whitepole", { - description = "White Pole", - drawtype = "fencelike", - tiles = {"bobblocks_whiteblock.png"}, - inventory_image = ("bobblocks_invwhitepole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-0, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - mesecons = {conductor={ - state = mesecon.state.on, - offstate = "bobblocks:whitepole_off" - }} -}) - -minetest.register_node("bobblocks:whitepole_off", { - description = "White Pole", - drawtype = "fencelike", - tiles = {"bobblocks_whiteblock.png"}, - inventory_image = ("bobblocks_invwhitepole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - light_source = LIGHT_MAX-10, - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - drop = 'bobblocks:whitepole', - mesecons = {conductor={ - state = mesecon.state.off, - onstate = "bobblocks:whitepole" - }} - -}) - -minetest.register_node("bobblocks:greypole", { - description = "Grey Pole", - drawtype = "fencelike", - tiles = {"bobblocks_greyblock.png"}, - inventory_image = ("bobblocks_invgreypole.png"), - paramtype = "light", - sunlight_propagates = true, - is_ground_content = true, - sounds = default.node_sound_glass_defaults(), - groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, - --light_source = LIGHT_MAX-0, -}) - - - -- Crafts --- BTM -minetest.register_craft({ - output = 'NodeItem "bobblocks:btm" 1', - recipe = { - {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:leaves" 1', - 'node "default:mese" 1','node "default:rat" 1'}, +minetest.register_craft({ + output = "bobblocks:btm", + type = "shapeless", + recipe = { + "default:glass", + "default:torch", + "group:leaves", + "default:mese_crystal", + "default:diamond" }, }) minetest.register_craft({ - output = 'NodeItem "bobblocks:greyblock" 2', + output = "bobblocks:block 2", recipe = { - {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:cobble" 1'}, - }, -}) - --- Red / Yellow / Blue / White --- Red / Yellow -> Orange --- Red / Blue -> Violet --- Blue / Yellow -> Green --- Red / Yellow / White -> Indigo - -minetest.register_craft({ - output = 'NodeItem "bobblocks:redblock" 2', - recipe = { - {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:brick" 1'}, - }, -}) -minetest.register_craft({ - output = 'NodeItem "bobblocks:yellowblock" 2', - recipe = { - {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:sand" 1'}, - }, -}) -minetest.register_craft({ - output = 'NodeItem "bobblocks:blueblock" 2', - recipe = { - {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:gravel" 1'}, + { "default:glass", "default:torch", "default:cobble" }, }, }) minetest.register_craft({ - output = 'NodeItem "bobblocks:whiteblock" 2', + output = "bobblocks:pole", recipe = { - {'node "default:glass" 1', 'node "default:torch" 1', 'node "default:dirt" 1'}, - }, + { "bobblocks:block", "group:stick" }, + } }) - minetest.register_craft({ - output = 'NodeItem "bobblocks:orangeblock" 2', + output = "bobblocks:wavyblock 2", + type = "shapeless", recipe = { - {'node "bobblocks:redblock" 1', 'node "bobblocks:yellowblock" 1'}, - - }, -}) - - -minetest.register_craft({ - output = 'NodeItem "bobblocks:violetblock" 2', - recipe = { - {'node "bobblocks:redblock" 1', 'node "bobblocks:blueblock" 1'}, - + "bobblocks:block", + "bobblocks:block" }, }) minetest.register_craft({ - output = 'NodeItem "bobblocks:greenblock" 2', + output = "bobblocks:wavypole", recipe = { - {'node "bobblocks:blueblock" 1', 'node "bobblocks:yellowblock" 1'}, - - }, + { "bobblocks:wavyblock", "group:stick" }, + } }) +-- Convert old static nodes to the param2 scheme -minetest.register_craft({ - output = 'NodeItem "bobblocks:indigoblock" 3', - recipe = { - {'node "bobblocks:redblock" 1', 'node "bobblocks:blueblock" 1', 'node "bobblocks:whiteblock" 1'}, +for _, i in ipairs(bobblocks.colorlist) do + table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."block") + table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."block_off") + table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."pole") + table.insert(bobblocks.old_static_nodes, "bobblocks:"..i.."pole_off") +end - }, +minetest.register_lbm({ + name = "bobblocks:convert", + label = "Convert bobblocks nodes to use param2 color", + run_at_every_load = true, + nodenames = bobblocks.old_static_nodes, + action = function(pos, node) + local basename = node.name + local color = string.sub(node.name, 11) -- delete the mod name + + if string.find(color, "_off") then -- delete "_off" if it exists + color = string.sub(color, 1, -5) + end + if string.find(color, "pole") then + color = string.sub(color, 1, -5) -- delete "pole"... + else + color = string.sub(color, 1, -6) -- or delete "block" + end + + local newcolor = "medium_"..color -- the result of the above should be just the hue + + -- custom re-mappings to use unified dyes' colors that are most similar to the originals + if color == "blue" then + newcolor = "medium_skyblue" + end + if color == "indigo" then + newcolor = "light_violet" + end + if color == "violet" then + newcolor = "violet_s50" + end + if color == "white" then + newcolor = "light_grey" + end + + local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..newcolor, false) + local newnode = "bobblocks:block" + + if string.find(basename, "grey") then + paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:grey", false) + if string.find(basename, "pole") then + newnode = "bobblocks:wavypole" + else + newnode = "bobblocks:wavyblock" + end + else + if string.find(basename, "pole") then + newnode = "bobblocks:pole" + end + end + + local meta = minetest.get_meta(pos) + minetest.set_node(pos, { name = newnode, param2 = paletteidx }) + meta:set_string("dye", "unifieddyes:"..newcolor) + end }) - --- Poles - -minetest.register_craft({ - output = 'NodeItem "bobblocks:redpole" 1', - recipe = { - {'node "bobblocks:redblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:yellowpole" 1', - recipe = { - {'node "bobblocks:yellowblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:bluepole" 1', - recipe = { - {'node "bobblocks:blueblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:whitepole" 1', - recipe = { - {'node "bobblocks:whiteblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:orangepole" 1', - recipe = { - {'node "bobblocks:orangeblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:violetpole" 1', - recipe = { - {'node "bobblocks:violetblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:greenpole" 1', - recipe = { - {'node "bobblocks:greenblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:indigopole" 1', - recipe = { - {'node "bobblocks:indigoblock" 1', 'node "default:stick" 1'}, - - }, -}) - -minetest.register_craft({ - output = 'NodeItem "bobblocks:greypole" 1', - recipe = { - {'node "bobblocks:greyblock" 1', 'node "default:stick" 1'}, - - }, -}) - - --- MESECON --- Add jeija to bobblocks\default.txt and paste the below in at the bottom of bobblocks\blocks.lua - diff --git a/depends.txt b/depends.txt index aca967d..ada7093 100644 --- a/depends.txt +++ b/depends.txt @@ -1,2 +1,3 @@ default mesecons +unifieddyes diff --git a/textures/bobblocks_block.png b/textures/bobblocks_block.png new file mode 100644 index 0000000000000000000000000000000000000000..60d2374bdf641f1c06eed1e0f4c152608eb205a1 GIT binary patch literal 652 zcmV;70(1R|P)Zm-F*yLTQ}FgkmCe zYhbO>EUbHwb`%_`$u>T&0jw5Oe@zhyn)0-`7Tp>QUgp>9$!rDCCS3goEx} z6j~WbeI&(%0!DPZ6X>G1Rp!0WV*+dpfxd#QPq@6wyHHUK7#mIykrsi0I=fxV?6y&E z5I43#(k1`{X}Y|O+udC0Hi0z7T&!^`FDHgdXth?kcH*cuYZp2!ea*s-8#WgoPBg}` z@2lIm3H^}Ul208pk?Y5!o3~@0Tb`?8H$G_@U=yz1e~+axjr%ztig87^W)7&9`@4Wh z@iJe}JqVDD*A6a`LUd_4U$5gU;kQ;B=OVvK2Q*Ew z)m+h}Lnk6xJiU0qK?j#kyd(>di_fTemYcjGuk- z@;j3A(#NP3eZ}|*MxOk6{HT{!uCC@>N^7mPc03-By_9~z*H4BWkN-O7PB(8!;PE%V m{BZWp)A^78{r-=(Fa813J3YpO96g}`0000mPuX}f9&%G9tjfL6M9GLkzbI$*rG0(pqAGO>b#nJvtx9biLSQbw&cO^YLeY{lg zVCAFx`R(odkw~x-iXw;|lmeiNu=nM|rsF=N*LZ^XAW&3}c|=4|PHCQwT2v3bn)JXBSq&?|y-p^3?smFelg zp;*zVQB;-SU?z6~W~z50I65TQaJD@lN^p#mrlJV3Y0~sbn=4dXO?*^pq%`w7jweaH zb|}|l3WIj*9<#{M{HdEdDH^j4*-6XA+B!%G=67A!DgtEq3z}Z0rO`Gv&DC^a;{qlQ zMeDZi&I8R<-o5_NtnSyROTYh%>i92Etq2ihQ}Yu50000 z*T!0BTR{+vZEmb@@x7?OW{rL@^ZVy~op^uatq+3W;QFUCLD0UixxRMw!#m+( z`~Jgl{@m>4^~(qM@BO%cYd9R@^Y|@_qGz9Z?%dMy?$^8VSOL5_yazISF>AM@PG|3zJKwb@@^E~reX9NR;@lhE z?&{%T=Fpab5M^E?kJ#avSWcRH08gb1Q;=)5{@mMpH%!vjSQtCyMx)X1M>8`g90)g~ z=>bIF;7C78k_64NEXcAUxb7Z?kquCcb>!+IBMGsn0M;Z0OpUTSqoy4Oz#)Rm1-hYd zAO?cU(cJ(H&PPEY2XB@^0JXSYujhGUJ~`e-S`?fn;f*^?L%6${Ls%Mari4T(^noUx zK|UA^2ZJ=viIP|zK>G)qoUC#3cNI5m3S3wkay zUhD#9C4`O0acwLl9%T*ebV?9-4TpIY={5m~HFwa6>nVmh%rF@Y01e5IJWC#0Pg6Zm zoJV&l0(iB^!xYyU?RJk_t&?17EQkaai(Z>F?Zd`$8deXj(Hej*dPD3xq+wauYl?*A z2pn(fU_ddl@$pl@neIx{(b=+6Wqk7?Q6q%Z%E9xn9yY3q>QYE#SBn70$HQi`!LxxK zVN5py6Dy+l7C_M2P$RkGECS?3EqkWLIh6>Eaq0Ja^?I9=Q(3!Y^u1me?ubL>v4pq* zin}8NS5?(wJA06<$k63HAShBHBCCMnz#@$3sdJAzqJIelEx)3Pv9mUzRC(9!9};;u zB0~@qL(h6WT?qVLcLsP?G!5VBD_+GKvxBsL zX!!rr6~RV#iU6SVYm?_O9H}9iSS7_;SrqMWWy=-5l}9!86zMA`1)z~5Z&9a%=$axF zKQd@lIlCvjWjx2lPYYr(QfC8URZz+uE9z*P^cfqjxN|z`U17`$H+iXHN#|qhEs7bH zi;7TWz$UoJ0(avgce@N+eH|)?81-~03!`PFV6Dp4r@BQG6K5}8Jb&}%Z%a$_tomuu z+2pe3yh~^$c5Ia(?yDZS|1LgwaI6P4K<6-?o|- diff --git a/textures/bobblocks_greenblock.png b/textures/bobblocks_greenblock.png deleted file mode 100644 index 0acebc5df8a225b4e822305fe139889add1f9e37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3193 zcmbuB&2JTD6vpSBnS19_3W8v*Sfqv0#1PcPjV?67R0K`XAZpzC2e>fN7`M8!I~Q(@ zJGaJ!4MCJ8aYY0ok{AkMK}<+YNC@0J-~OI+W^UUxXWE(fo;l}v&e!|i`|W$D-r6y< zZzhVO9Vbt$p60oz|541nn*Z-79@{=U@$u(Tw0)2ML-fOs^HDT=TB`dwliy`t4g+uU)C@8lT6PBuQR;;iW@M2QU17A>FfQZ;@25eDLb&Pv2krc`bwx zafJ}aF?K0elCXx=m0Fug8?`9grtO49)bch>)AirhUwixY`*-gH9-diz`oNLJaWpyh z&at!S&N_OCb+Hx=R~&;bfrX`gQlda2JQ^)zFWY!_I6J;QzH#;M*_rL>!-o&=-nqN@ z^3tUnm&Uut4!v*0fDit2z#fhmb=+!>jgz^k@(fNJ6BFM=5YhQ;?x00N%6#AIg9p z8*W0W8zzECRrg56+#;K1rOSZOhQpye@oCyR)C$SO!vtBerwMA%WoF@Hq8{{@yAYEv zxLXEoRMk~gR&Cl2vms=pAqzL7g-t{HN-o4*5Is6pXe36W>MD78yI2Ns7>!2hj576Mobv_=I1f6M2$ij;6U~3s-9F6Isqs` z!$o7Fy=UR7I0iIG1|bQ!Xg{|NI`Y;r#pvm?cDVam4{R$bv?wMnd}ucdG~luaNn3C2 zq=bW4C|QtVGz6)Sqiz%y2SHKyI@`(0-i~r0a07iZp3H2UAtG=&7^Jjwh~Ub+o+g|nTmWE$0HjUplVjgD zmW#4UqQrt$k&M8P(lmXPKN@A68Y3zL4ROf=>?A4j0#Ku<;J^R~hCH-4%E7dHPJ}bR#c3t@Ybi>y?DEYV~Xa3Y9F^4OnU%I%NLpzkbY1T z^|;j_ZVsvsP6biuepigP7PhEx^zd1CQ-o^#XgqGl4yV25KZp7l-BbBlO~hpA=%qwr zOHTOutcQud8bN0OIfbZ+M-2$Ei-V2}N`4#A<|!p=LzKdK?A)^VmR6U6ak6J9i}oQi zV1o{sMxIR$k;_J89UnH`8;=@m(@c}lCfc=k*U{&XUi|Cg(*7l^frCJMwXU&dpQ#f7 zS{x3iyCDN8tZ5!Hiteo6;V8rb@O18}xx>#LK5+2B_3y8*oLM0Wu)vM0?x$nmShH}a zK}|VG+IWqQbp7X3h?i%VuT|F;78kN~m}bKaqqQ&B>VK;%=l-<1de!?$aQG?ebYbQ4 z%+SfP&tqZV!u~@GAHMt1`Sa((%r diff --git a/textures/bobblocks_greyblock.png b/textures/bobblocks_greyblock.png deleted file mode 100644 index c3728787cb0284dffd88a9010bafac1725eb95b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3193 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 diff --git a/textures/bobblocks_invbluepole.png b/textures/bobblocks_invbluepole.png deleted file mode 100644 index e60d3eb09e4a86d398544b0e7bac0102cec1ef43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3211 zcmb_e&ui2`6rP#PB-!nj+Sc7IMaohU3RWydmLh^b+G2ZXk+ulE75@Mc^x(PR!J{`R z-jsqDj|DH{Nhqb@LJuN{Ei6kBnyuY!lWcyBUlP3tP3EwVY$j|b?|bik-@KWZ4;JtD z=7;lykly*ZnI(*s=w~wA{h_0`81!dLi^~{ck2j517;;bMR-Y2mGZ_6S*?2QVNa5=I z%-xme-)W`rvqj_C88^LGP)c&STo{I!${4e4n^L;6@X)fXt*xz;?|I6*8D#auS`tLTh=Mu2_Z*E%bV}( zcy?Vk9YCo>gT-p;;sPNfmgS*Vt=8{S=||&m`_k}np-`yRYAG1m8Q|l-z6&EGmo;rb z*Bz7|Oh~DN%yQYt%s>es4iKIh=Nj%JGOlSFAzn)C$tyJgO5sk|b;BUw7%BqQl7Q`O zi$tDj2%eCz)A4Y@F_3^IxXAnv6Vx)m5<~Pxk8PX4YBo6%NY+Fqh7y3_95Evg&-38d zwjIOpy9t0W5jbNs2twcYg20cLn-T{~8AOCiU@%PsXOVuuGi6HrDFKjJFep(hP+^+6 zNTv)j%{C=~gi_!4&(3Usg&|4=*WD{o5J<;yId|b2bU>`&8+h6AE6Nl#H%)_59t45s z1&-qg5uj~%4FD2~s|2T@md0xU_32)T(A*GvqEso-HaJwISR$n~|E*ifxiE|zWQruP z^i)cu1OP{|Mmc1PRM0f?`8-pTsS*IZ!(A8#=>EEnB#anQB>}Z&hlPyx0F8oS7@pCv zmE0@J6db@3Eur7JZl}xZAnrmMk1Rw67@(qV$`soTJc8j^I5OTW3HD``Dyj7%g8D>z zy=|YNZJ;BWrYFPh0U%PSGYmWENO+F*%D}3^_+1J?-!BpPU>U7D#myW5A22F{F$a-{Tkc1*_g z>(^FsvOCXp@_%-T>h-$gwV4Q*=={BOpNbX}%~Gk9C@KXbo2zQITKo1DvHy2`2N_;F eKnCr0I|ZQpaqaV!cQ0;4Q|4zEXFl9pTmJ)^<#);e diff --git a/textures/bobblocks_invgreenpole.png b/textures/bobblocks_invgreenpole.png deleted file mode 100644 index 72b83c70d529abc36e1625e2e3489d1f1e9b9610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3211 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 diff --git a/textures/bobblocks_invwhitepole.png b/textures/bobblocks_invwhitepole.png deleted file mode 100644 index 3f3540130d6f7879b4d482af6b5a04f592043ef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3211 zcmb_eJ4_T&6n$^LyUVQE)j&27v)iFaVk7h#jBFt>3&GGC39TW~!cL{Lv^91nmL?Wp zg}n$w6AEKv(3J!d7lHlE=e;+cHyay^nOp4L&+O*Cxu0{+y>Fi1nY&dij20MU#ro__ z1J|1VIFA~0^SHtuym4RPl3$%&ddS$&1^wad<*N!~-j({y^@YdZc+LBM z#*^I{Ury2HoaOU*r4+UrhSBTwIOhwu7hA2?#>Pg<{Z`6ae`#`Za(U%`b?oBDt*xV@ zqd1OD(`w8&wzjvPJz1;OYUv)b1MKbXec0SwSzf8vXS>}Fiy7m*QmHhXKjAtEg7g4p z`f`7@e7@urhFr%DeLoCCz_Px+zO%bq$QR1x^5NlOij(XLaC50ts#dG#&J~d_ptpj+ zah#$z)~Z3=koTfe7d_@iMrHi)lhq3E_i*NOx}>Lp-3D*|zKZ zU^tO!rhgjA@UK)XB7qqPmr6=aa<+55gG91Y5*_RNfp*P#l$a0^B?PGtfV!J=ZN~z? zhy;^Laas?N0w7aB1o1#hFi0q2odgmIBB%%`0d};4!3?woL=*`zFol6w(bi=>`aITvS9AFBe2w2kE6#q0Opv|NdQ6$j72nM*w zZ9og4CubrVIEMW7)D|#OACOc80x*R@fF2ln8sQ)GO?u=Z1%NM5iesjaI?hY{fO07$ z5CZ@pz$7t?K!ES}Ff52P&;r1@QehNfNa);?$x2BdduXHL-&qgn`!fSEh~qT7SzOnh zn!46L>zthY>2|uu$1TtECMG5#8C@E`d~k5EzrUYSO*TZs!^5ApcYghNhyH?0lb(=x zrgL)k-NhvYOYu&EsM&0G{4;6DD2@cfTPQA1d#A0F8^&VeqX)seeYF2KEHT+yf$59jEygx znP0-#a#uy*o=^RLjzQgDTD*u6cIRdA1Vi=inQQkL8{6(K&YnJ-Vl3RZFn|2ggEnu4 z-+O$ty5v^b=3C3E)v7TDON9_o6iF$T&Ryz zfGnQ=J3BRPw@;?kv4JtawHf^S)p_&!%jd5hh&y+ zBhIVAw_rTicWl<$|mhy|nw7~_FbVW_l*W_YjHw?-T5YNFIg0LZFRigQGeX=CCf z$u$Q=sdp?OQG|71370lH&ocZ`(ntmcfD{27!I>073JFpX5c&jC{r>=*U@Ri=M-~JX z&$H4aZH}}EY?$2Sc|MGW0Mc56Ge(ms2>>4BG>PL(=LWgRoN-(fiby<4=~XHL=rPbK zfRY%HF6{&(0l*bhV{#2*I2W!4kQ9=CTA@Ld*t;Eh=iEX?&=87(5C9DTeaD?;ocTT~ z&S?|@1(kpTK%xkaz_{-@k>*-Mren1lD&hYD2ri}6+MxR@U!ll_^d z8Ad2TLc1n7cT0!>aOgbZ4*92Pl4SyokAgu1;2d2D?ZH?N5uhxDfTl=B0sz}+biNXd zD@20RlJVU2Q-YBIzzpOMr4EOYu{s(Kvs4g|OcDS#io`nZlNiq9+rvLXP-dca;JgLeGea5J972_t`fd%db5l3;}sw<3@305=` zFkP7-5`87I2^|^BLGJqfsjXYfsZd*R0raRN4T;68ur!!m!Z9$kZAe91T5#BfHy#=R zAn?|8?fg)|mTBPTZL4eqdunDXhLdJ#E`9ETG2d@Kaw*ARlC;|6f!rjO!T=IYnWgfG zzDF9_+fk+coJt_!b|NR!NCX%`8p}}1M@FG=TRc-DP$3tf8!D&Zr>OdorRcoqXCB0b5*~jg5^qjH;^VsC1Wb~<|?Wrjhe6kb7ll>ONLvL$|Q`v5(|Dt$?{QE#8f~cIPOFqvI1eQ zjp8H*0&6uYqP(gm__2zt!_cdT<00uS3075kUz^ni9vxsBP0d|ZRHTTyU{H9VqF7ZW z9>eLzy5Ug6V>uv!T>4T0X>gF6UKX?(`5A(5y!wQ7N^D0+wl^Nos@LmDBswOLrlAhQ zc+{k=u1s0#f@sh-%Hrqy8rj!J(5ep542qHn0 zr61m%vVpu>rGiUJX|ct4JQjf{fL3-4R_#;>0^wm;>8U-YmV-<_0x?5FRa7O-VT>5h z;b;W%81P!n%4%0qeDy+>Kl9bxkmK=)rQ3tf)nU8iIIspU@I=WGu|-=>h;t^ zCHFPj;OntMA_?k*>a;;DER}K9#VD=1<)-*>l5#*Mt4gg7PgH6|$1;gG@O21!#|3gs z;&XDUWy-|86C<#mOfT|&!&*B(s!jZLPT-hr{moz#U%~(pAz2X_%?MMAy5>9Am7h#v zqTd6xYnmiaIEcG6lGh13nhYr%X>fv|8smL3oW>C8-x=kWOXlels<}8wFYp{ipv~H5 zvIKS0IEX$VXE!*WihxVBYj*qUqmSRZ@ZI9#GFvnSdVwyhZz>nKgAk-lY)VKnKZYps zch5Ulf2#`D5C(EPKR3Uy_mP$5y&r%0^Qn{jxxv^1LE9)${4<(yF;uXO&Md>0#mZP3 z)_QfX+5G##)lqY4acNJ@|0w;QF4(K@p1$#y|MT31Nnqvsy?`eC4o&Y4x_evmiP74* zd(Xa=J?k&N{LQy#++fGl>dNY<9^Jfolj7M7@t@~}eSUtvU-hqCyK?3Dp>X5En_mj- O=(ESxzIx{M_x}a$`$eDt diff --git a/textures/bobblocks_pole_inv.png b/textures/bobblocks_pole_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..0005e5123457af2a3c700e5016fb79727d45ea54 GIT binary patch literal 452 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 F{{wBAm*D^a diff --git a/textures/bobblocks_violetblock.png b/textures/bobblocks_violetblock.png deleted file mode 100644 index c1a98ca86bb224f99cdf708e021256ce8d54ac9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3193 zcmb`JONbps6o#w%aeHPm35k=8F_XlZWDq47gBx+-A~NQI8a0aGLU83;q6-(UTnM^w zr5h19?gIhEIH)THMTI;RNyvji6b)n*$2)zyyV~zR)qN)k?zHaQzFk%4{Qo)sIbA(( zKYi@*#;F}s&bf_8k1QSMcV6F#gloP1`p5iCzH;P+SDo81qpx=#e7N1Y>3v6+4nFt# zML$1%^@iWIcka;Aq03jVoIQ7@X&QX~`$*IDf&B;eF6>$UVmX_c+3L&U$p>G2`H9y) zdgo-~!S~)LN#ZjMGhLXm99OyZP9N9uaqapDuEo#e^4;ank34kz&l@WOzia-^d*=?c zf8~b{KK|*c(}v>`3==@0Ns`pA1`7!YFfn65AR2}XT%vuN_{r(wkKvUw7k`-CoM)@6 ztH1ufvVZ5pXTP~n47XUAf>5Norr;Bl%`{g^Nv6F>Kt1{-EI0*{gy!2Hzi#s;tmau% zq$mb{ly2RAhdeRSFbYL)=_q2-Px5>~PDI=UMQzI%=odGUg?8B9U}Aqx1ln>*Ms69X zlElDcgxYJ7*R||Z6XFN92{Z&0aG;~N-sp33u5ls4a zD6Zn_hX|0Rn3&v`aa%>Q5KqcOisYhB`FxC^N zv7f>bhX6PZBBFxScWfpmxv;3N)`q4cU`A69hh-?+d@$hf2?1+8`WzUBs-Wx-bMrMpfl2oH6Ce$n)HcfnrT~4AgWfy$f_lVl^^c zH3w?u0MHN&O&vV^kIW- zwXY3+rIHDv$dydo(Y2F^e07AjD9+igHv)FZif7p%NnMsDHWpZi8!<45L=jr|QMR6= zD{{=ZsnmGXn&iuJ6rIrV0%|%F!b?5*J%{F}Izd;(yF6PK>FQf?6>}@+7 z4y&Q0UcqSij(dXbqphK^g$X1{UK zP<3$eZ=3S9(D`|Ni?R778Bo~dYmbV(*3g3q*GaccUhk(tqo5_WTG@aSJ zZQuR(egEZ8yB2n1!2tk4Q&*7Tje+t&$MHvDOAd{jtMb~l oYtrQZ7$`G4J6q(%r7M@tpLpc03%{JcAl##m9a}p2=u2<@1N7umP5=M^ diff --git a/textures/bobblocks_wavyblock.png b/textures/bobblocks_wavyblock.png new file mode 100644 index 0000000000000000000000000000000000000000..49979bb9939160d89cfa340d89974626ab4bf6c5 GIT binary patch literal 1868 zcmV-S2ebHzP)f)E6}{w8q)1T`^zZX0!SH`Ew4}@Am~ksMTtO5K3u2 zpZ{6amSr)<^7*`~sz3WF48!Skn#<*6Sw1;`|Knf(Apw9QDfN0C08UO$PESt>AuB5@ zS65eI80xydxw)xn8vp+M{QThHAP9m&p|G;Dq9{r}pDz>&r>Cb;6b*+%O6lI-Ua3?9 z05z-3D#$1q-i>az3jnLDtCdQ{bzQ?SR##V3^nSm8e0=P>t}M&CuKT_}nM@qV8I4AU zVPK4tB-!8JZ#J8=YA~J=Kmxw+CrP3xO0`<8R4SHbNs_d(vQjJ-`RR*`i__E7AP5vi zF${wc!W(GYcD-H~MG+yiyStmB0|3Do07L+YNQ5yK1fg238iw)Z%NLAstyarsvjE^Y z&e_@7#l;07B$vxoDwQNjIKlPxwP~8Vt^>f@+FFYK=FJ-b00y%P7$gWGF0yvJEz5GP zR}24m}(Wr_*UZpVu_4TCJ+8iZNCc#q+%L z^Yig|Y*`kcP&&C80VQNQofeBlRaGs^l4W^sZ*OgFEj@I0c6NDri7{?88Vd^xs;W{- z!!VR2>GJY&G#a_C>v^84s^xN7*L6O;?*t4IS(XJs2*a>gEIxViB$XxrwA<}oug4hM z+1c6J+Dek-^77KQ?I?;|*By;U)9I8_S}K)lwHgnVdFx34fJ8wQMM|lvst+GNoJark z>CA*HJMC2&$BEmiXs50R4P1303eRzLZJWvfKmd4I9#jMnh%C{ zyB!3U6osQJin6}GK8uj=GG#1^qI^C-kA8A; zqG{UJ)>it)^Sn-{<9VL%`>yLU#tg$yRW-fe^78V=#s&ujfEd1o9gCCsuHD?+TwGkN zudi1smGtF!JpTCcV-N(6{el1i01!gX&d#`lxE|6;eEs?rW9&GN=XsS% zMbk8lF<%DNYIS>id%n=a!^2;w2m~JGK@co2FE<(u{u^WL_3PJR7-Ebq%OZrBrm3o` z@B4;fXquMK=jVrHS=Qmj!YlL?1*9OvD;cfRlQpcMpRb90lo0cFsPKoF29iiD6?uU?6wxU{sSX_{@@)9KVS z%~GkvDVxnEH@V|DS65g3Ot06QtrtQhNxFak{_WehXKy07I5gj`)+jmP8hcsv{qlO&O4If^2LkYN}pIshaIn-L_G1wjx5LA_otm&=5Z z$z)P0mDbnSd1|Vvn(Er~yl%J4CCd#V2m(SVo6SCc{CHlVjD2%5jxb}aTrP77%Cfw+ zw$^Ag2qFD`pRdF8v*Y9Ae!uU!Zn<18l}d#|0U;!c;_B*Zni)4YH>s0mEm9PP2WmE( zcDp?s4i^>{8jZ%{;-admVHhS!k|OqcJA$TB$L><>HdMTYwM;WwG^a6@S6x8{U&||@hXC%c<|yyZ(^ZX@DgaDw-#Dx z=#o-)+od+!>Bh-=NR7RSM4X-LkeMg%`~H6KycNo?$zS#>WezjT-u~d>eOlfeQc5h# z!Z3_t?`Fg02UYuxsIv;&~Pwr#rIE&!HgvA4HJ5CkYS)(?;*3H5p% zfH;nsnVDfY9MWhs*xx_U4}H$qCEL%N!pc z|5H(y22h#eLS7)H#Pd9a5O|))#fDlB(z#B;yA|leUc<$I2a-Io*=*uEE{@~q2l$cY0G&>!Fs53q#>&bHQcC>*ru93_zYJ+S&Y_0G zGyMRLBiP;D1t1JV9LGTj@w-uIZ$?17-7dm!+cvAKt5-rgn%0%mKoQ*c6=;y4brZ5K)yjYf1j9n>^rc=7!l(==IJTr9l6 zH1pT}&d!d0fQn@zgec^9y%pzD)czzhSXx>t-h)||(P%WLXGDfkCCf7U{XPJ#R*PP* z$Kl~2^?FPHWc1?Ai$6|A=ReL%Pe!F@!&mQKa`)aH45}pQ2vN0AnIavhynb7LHmv+Z d5dQ0U{u2t{I@fCS{8In`002ovPDHLkV1j%*VT%9& literal 0 HcmV?d00001 diff --git a/textures/bobblocks_whiteblock.png b/textures/bobblocks_whiteblock.png deleted file mode 100644 index 857fa47b6ad81d30b1537946815733fa00c26a10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3193 zcmbuB%WGX#6vp>?-Fp+0v?ZEHr6r~{83;C02MS7zxvdltQ?Y{hCkP@26bFv9|9}si z2@XXRC$)}rAV}+D;ESXMi&kRm0~>PB+uyhLIXAac-N`*?@3q(Z*0&ye-~0MwryrRd zKRoW7o9wTzKF)hVpI*qbn7i>Vud(OWpL*W8+otsi+}rQWIX7`nfAzs9Hh&5hCa(Mw z965I9+UnZ&mCN6J`*m5C*!=$yMbU|SSB~Aac>coqczXKw1Cs||e&MCr+1X1MzYK!F z1wj~u8c`IZ8%3cB*MyNLiVdST5`5p6NEroG{?VgV6;%ien@u3TQqAinhpg}5Pn8r#y z!;Jh6Pa|2WCe$MeS)mfc==Vq#)27>HU`6|V3}vHp&A3_7Ocr2o00cN32X+Z$jsz4sk9o z@!$ju%2iN@B#g|dkH$uZZKmkHv7zJ! zen_iAj@Z0nZ8&;JB1Eu!W|idDt0JJSsW6~SvMdjrDuKMy>BLE*QVSjs(u3TR=_2*2 zT|#U!(BYm#HhPET3sYzkLb zRzl_A;VBtObAUPANe5(^C=WW$lvJ>#sG`yoA2n^(B@7cHbcu0L7a=S-tgcGa%;ygs zE3yEDZk^AK6AlJ@V`Jll0$(x*D1^C)V3(V*?&pfzDU1^ka9MK|*iAzsYR;3W4O8R^ z5@5GGR;U=&VA&@pDLG+I4G@y?<|h{- zgEx%U5M&7(wn&>;y`xqOoTkWZ(?uLH4x)D{Yr8N2VhiC&^+p5XYoh5M(^0I#S4?{A z7|qYmFD)-!zkXwCY6?pFsilUa7;=+V5+;%=u) z2F^b7^wq0BU;F*HhLc`=1no!rZkBo}3H!q=8tb{axy8E|`~Ch$AAcB(AL<=nJf7z1 s&d!c6z`oIcosssLnVD|V-MYN>%6rRye6Y6tgRuG!pI&|cp=V$H7wMQiQ2+n{ diff --git a/textures/bobblocks_yellowblock.png b/textures/bobblocks_yellowblock.png deleted file mode 100644 index 975ffe8c9f5f376d1fe2e50e1b1f3dbb7a08613e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3193 zcmbuB%a2r55XSGhkM5@D;bWj@a6&Q+ldvFBATco^Q8Xhm8)A$bToA*KgoVb9ZegQt zS*V1#nM7T=F)k!T{sLblM&!BF41qXdx~Fg77r(F0=|;ACdhWgF)~WMV)mK&L&L?l4 zcw?sfTsMlMnYH7qZ}D8x)rq;63-{M~?0E0^$q%AvYEGAnE?!!QqUi%`tFONO;SIMm zefOc;vv2X(>ap8*@BDV{*Q%=6^Z!SZBriOFaNpkL%U3R^b8|aqXEx8C$@cF*_s8`w zT;yEroQvW(Mla!(Cb5Z-GBl4JPBe|(cr;Pn)Q!Ef#*RxDZ=64W@`o!ofBI#o+r2b@ zIS!=taXit^^6!?Qw?o^JlKKoTzmKTXm!O(Ml$qhTiR^}{({BDb~G|McUZ|GEcu zlOknvyUngN%Tned$%rxw3PD1Hfh<^K9aicp(830bT1Yj<>S}W{PqPFtHpu|P@5DDB zBX_h})}={ZH&Nmg3>+f^y)3a%YaMtXWXGbAwhSqvD6$CRILlhCR=cb+BeSt`@_v&* zX{Je%Wf=wtrmC_cumzR%K2;c_5zVr9D+aAs**217oHse4~gw zG9!lVd7w z@a|BWiv>_l06Bo+62z z%hIgV>6oKNNKoJ*blrhd-O8#hj)~{R3&zfn6H7MIMn(ZBs&Y8o9t;K)D6iCsRj1b@ zJOLp0D;S!*E5X!QAcyp-fs6y0V3#NYZIq8FZcRob7C=HyYf$@2Z-m4e0Er}u zGl?RyCay`GKuKpSt9fW4R8bPcKECJqkVZ{Yx-O%rycsYjq^e{oL&`46XnvZxRKzu` z(dBm1#ArKL_<(}}LdJdkz__AlI0NJ$U?Qa|Egs4n5Ya^^H%*B;U7586C089CL=VZW ze3VzE;tK|BX4NhT$2VX&7mlod#jTUBMA=RCkP7yaHb zx`{*(7akdJo}XYqX6Xhyv_ZiV98d|~Pke_H3rbc^*KSN@FZ7(RC7p=A0YV#u)6}IL z6iHfTnLL165(#AmoxgKi9ccEu{E0+XD9_P%tpuoDAY7xH1?}bC}Vj|%P0*V zXT0x8REy(ZBCjP!{Ez_#{A_P;_Xk@(LK;T@4k^igox68S@##fuOV&8BywKi7TcF8n zLaSmD9bBVAEcj!WhrYluSmU7mmS9q~;!DQ_*pnSIZ#KerEks~TIwvR@{^>D9oj?>7 z4oq?outOrjk#{Np{tQ|Ie!LL89Iezu^Yg8}OMCC#-<*4P4+>BNV{{c2rPqWc8v?t> z4vH_&HWNR*0SVpT<^5i7@Xy0xl0<25S8s9gz@dXjKl}W`>C;CD0{`fBY9Cdf2KfWZ z*hhJ3#i#-E}M c`_`RXn;*SDSU$e+Kxk{PpIH6&wRg`w0v>CIwg3PC