From d2a6c9aa90c7be10b906bd7f3c80909bf140eaf4 Mon Sep 17 00:00:00 2001
From: Tim7900 <85207005+Tim7900@users.noreply.github.com>
Date: Wed, 29 Dec 2021 19:00:23 -0900
Subject: [PATCH] Add files via upload
---
mods/riesenpilz/LICENSE.txt | 9 +
mods/riesenpilz/README.md | 25 +
mods/riesenpilz/functions.lua | 37 +
mods/riesenpilz/init.lua | 1278 +++++++++++++++++
mods/riesenpilz/mapgen.lua | 340 +++++
mods/riesenpilz/mod.conf | 3 +
mods/riesenpilz/settings.lua | 25 +
mods/riesenpilz/sounds/riesenpilz_head.0.ogg | Bin 0 -> 3737 bytes
mods/riesenpilz/sounds/riesenpilz_head.1.ogg | Bin 0 -> 3679 bytes
mods/riesenpilz/sounds/riesenpilz_head.2.ogg | Bin 0 -> 3700 bytes
mods/riesenpilz/sounds/riesenpilz_stem.0.ogg | Bin 0 -> 3624 bytes
mods/riesenpilz/sounds/riesenpilz_stem.1.ogg | Bin 0 -> 3610 bytes
mods/riesenpilz/sounds/riesenpilz_stem.2.ogg | Bin 0 -> 3600 bytes
mods/riesenpilz/textures/3apple_apple.png | Bin 0 -> 252 bytes
.../textures/3apple_apple_bottom.png | Bin 0 -> 236 bytes
mods/riesenpilz/textures/3apple_apple_top.png | Bin 0 -> 348 bytes
.../textures/riesenpilz_brown45_bottom.png | Bin 0 -> 108 bytes
.../textures/riesenpilz_brown45_side.png | Bin 0 -> 105 bytes
.../textures/riesenpilz_brown45_top.png | Bin 0 -> 112 bytes
.../textures/riesenpilz_brown_bottom.png | Bin 0 -> 319 bytes
.../textures/riesenpilz_brown_side.png | Bin 0 -> 251 bytes
.../textures/riesenpilz_brown_top.png | Bin 0 -> 186 bytes
.../textures/riesenpilz_fly_agaric_bottom.png | Bin 0 -> 304 bytes
.../textures/riesenpilz_fly_agaric_side.png | Bin 0 -> 284 bytes
.../textures/riesenpilz_fly_agaric_top.png | Bin 0 -> 214 bytes
.../textures/riesenpilz_glowshroom_bottom.png | Bin 0 -> 183 bytes
.../textures/riesenpilz_glowshroom_side.png | Bin 0 -> 149 bytes
.../textures/riesenpilz_glowshroom_top.png | Bin 0 -> 105 bytes
.../textures/riesenpilz_ground_side.png | Bin 0 -> 699 bytes
.../riesenpilz_ground_side_normal.png | Bin 0 -> 631 bytes
.../textures/riesenpilz_ground_top.png | Bin 0 -> 619 bytes
.../textures/riesenpilz_ground_top_normal.png | Bin 0 -> 499 bytes
.../textures/riesenpilz_growingtool.png | Bin 0 -> 2312 bytes
mods/riesenpilz/textures/riesenpilz_head.png | Bin 0 -> 694 bytes
.../textures/riesenpilz_head_beige.png | Bin 0 -> 305 bytes
.../textures/riesenpilz_head_blue.png | Bin 0 -> 703 bytes
.../textures/riesenpilz_head_blue_bright.png | Bin 0 -> 742 bytes
.../textures/riesenpilz_head_brown_bright.png | Bin 0 -> 186 bytes
.../textures/riesenpilz_head_normal.png | Bin 0 -> 522 bytes
.../textures/riesenpilz_head_orange.png | Bin 0 -> 578 bytes
.../textures/riesenpilz_head_white.png | Bin 0 -> 544 bytes
.../textures/riesenpilz_head_yellow.png | Bin 0 -> 535 bytes
.../textures/riesenpilz_lamellas.png | Bin 0 -> 974 bytes
.../textures/riesenpilz_lamellas_normal.png | Bin 0 -> 3327 bytes
.../textures/riesenpilz_lavashroom_bottom.png | Bin 0 -> 137 bytes
.../textures/riesenpilz_lavashroom_side.png | Bin 0 -> 148 bytes
.../textures/riesenpilz_lavashroom_top.png | Bin 0 -> 297 bytes
.../textures/riesenpilz_light_detector.png | Bin 0 -> 279 bytes
.../textures/riesenpilz_mush45_meal.png | Bin 0 -> 124 bytes
.../riesenpilz_nether_shroom_bottom.png | Bin 0 -> 264 bytes
.../riesenpilz_nether_shroom_side.png | Bin 0 -> 184 bytes
.../textures/riesenpilz_nether_shroom_top.png | Bin 0 -> 250 bytes
.../textures/riesenpilz_parasol_bottom.png | Bin 0 -> 235 bytes
.../textures/riesenpilz_parasol_side.png | Bin 0 -> 195 bytes
.../textures/riesenpilz_parasol_top.png | Bin 0 -> 177 bytes
.../textures/riesenpilz_red45_bottom.png | Bin 0 -> 111 bytes
.../textures/riesenpilz_red45_side.png | Bin 0 -> 131 bytes
.../textures/riesenpilz_red45_top.png | Bin 0 -> 94 bytes
.../textures/riesenpilz_red_bottom.png | Bin 0 -> 302 bytes
.../textures/riesenpilz_red_side.png | Bin 0 -> 266 bytes
.../textures/riesenpilz_red_top.png | Bin 0 -> 263 bytes
.../textures/riesenpilz_stem_blue.png | Bin 0 -> 625 bytes
.../textures/riesenpilz_stem_brown.png | Bin 0 -> 701 bytes
.../textures/riesenpilz_stem_red45.png | Bin 0 -> 716 bytes
.../textures/riesenpilz_stem_red45_top.png | Bin 0 -> 718 bytes
.../textures/riesenpilz_stem_top.png | Bin 0 -> 130 bytes
.../textures/riesenpilz_stem_white.png | Bin 0 -> 519 bytes
.../textures/riesenpilz_stem_white_normal.png | Bin 0 -> 338 bytes
68 files changed, 1717 insertions(+)
create mode 100644 mods/riesenpilz/LICENSE.txt
create mode 100644 mods/riesenpilz/README.md
create mode 100644 mods/riesenpilz/functions.lua
create mode 100644 mods/riesenpilz/init.lua
create mode 100644 mods/riesenpilz/mapgen.lua
create mode 100644 mods/riesenpilz/mod.conf
create mode 100644 mods/riesenpilz/settings.lua
create mode 100644 mods/riesenpilz/sounds/riesenpilz_head.0.ogg
create mode 100644 mods/riesenpilz/sounds/riesenpilz_head.1.ogg
create mode 100644 mods/riesenpilz/sounds/riesenpilz_head.2.ogg
create mode 100644 mods/riesenpilz/sounds/riesenpilz_stem.0.ogg
create mode 100644 mods/riesenpilz/sounds/riesenpilz_stem.1.ogg
create mode 100644 mods/riesenpilz/sounds/riesenpilz_stem.2.ogg
create mode 100644 mods/riesenpilz/textures/3apple_apple.png
create mode 100644 mods/riesenpilz/textures/3apple_apple_bottom.png
create mode 100644 mods/riesenpilz/textures/3apple_apple_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_brown45_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_brown45_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_brown45_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_brown_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_brown_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_brown_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_fly_agaric_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_fly_agaric_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_fly_agaric_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_glowshroom_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_glowshroom_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_glowshroom_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_ground_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_ground_side_normal.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_ground_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_ground_top_normal.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_growingtool.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_beige.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_blue.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_blue_bright.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_brown_bright.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_normal.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_orange.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_white.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_head_yellow.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_lamellas.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_lamellas_normal.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_lavashroom_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_lavashroom_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_lavashroom_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_light_detector.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_mush45_meal.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_nether_shroom_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_nether_shroom_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_nether_shroom_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_parasol_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_parasol_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_parasol_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_red45_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_red45_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_red45_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_red_bottom.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_red_side.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_red_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_blue.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_brown.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_red45.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_red45_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_top.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_white.png
create mode 100644 mods/riesenpilz/textures/riesenpilz_stem_white_normal.png
diff --git a/mods/riesenpilz/LICENSE.txt b/mods/riesenpilz/LICENSE.txt
new file mode 100644
index 00000000..de83e4c9
--- /dev/null
+++ b/mods/riesenpilz/LICENSE.txt
@@ -0,0 +1,9 @@
+Sounds and textures
+ CC by 3.0
+Code
+ MIT
+
+Some source information:
+— glowshroom and lavashroom from bas080's plants mod (originally WTFPL)
+— parasol mushroom from a mod called mushrooms (originally WTFPL)
+— "45" mushrooms from r01922090's mush45 mod (originally WTFPL)
diff --git a/mods/riesenpilz/README.md b/mods/riesenpilz/README.md
new file mode 100644
index 00000000..d8cbd4a6
--- /dev/null
+++ b/mods/riesenpilz/README.md
@@ -0,0 +1,25 @@
+[Mod] mushrooms [riesenpilz]
+
+This mod adds mushrooms to minetest. The growing tool can make them giant.
+
+**Depends:** see [depends.txt](https://raw.githubusercontent.com/HybridDog/riesenpilz/master/depends.txt)
+**License:** see [LICENSE.txt](https://raw.githubusercontent.com/HybridDog/riesenpilz/master/LICENSE.txt)
+**Download:** [zip](https://github.com/HybridDog/riesenpilz/archive/master.zip), [tar.gz](https://github.com/HybridDog/riesenpilz/archive/master.tar.gz)
+
+
+
+If you got ideas or found bugs, please tell them to me.
+
+
+TODO:
+* Mapgen: Do not use a fixed table of tree nodes; instead use a more flexible
+ way to remove trees.
+* Add a settingtypes.txt
+* Make the growingtool craftable
+* Test if visual_scale is useful for the small mushroom nodes,
+ e.g. to make textures smaller or to use power-of-two sized textures.
+ Nodeboxes would need to be changed accordingly (maybe automatically).
+* Add new features:
+ * Add more giant mushrooms
+ * Add more content from the mushrooms mod
+ * Add a lava suit
diff --git a/mods/riesenpilz/functions.lua b/mods/riesenpilz/functions.lua
new file mode 100644
index 00000000..bd4b5c25
--- /dev/null
+++ b/mods/riesenpilz/functions.lua
@@ -0,0 +1,37 @@
+if riesenpilz.info then
+ function riesenpilz.inform(msg, spam, t)
+ if spam <= riesenpilz.max_spam then
+ local info
+ if t then
+ info = string.format("[riesenpilz] "..msg.." after ca. %.2fs", os.clock() - t)
+ else
+ info = "[riesenpilz] "..msg
+ end
+ print(info)
+ if riesenpilz.inform_all then
+ minetest.chat_send_all(info)
+ end
+ end
+ end
+else
+ function riesenpilz.inform()
+ end
+end
+
+local circle_tables = {}
+function riesenpilz.circle(r)
+ local circle = circle_tables[r]
+ if circle then
+ return circle
+ end
+ circle = {}
+ for i = -r, r do
+ for j = -r, r do
+ if math.floor(math.sqrt(i * i + j * j) + 0.5) == r then
+ circle[#circle+1] = {x=i, y=0, z=j}
+ end
+ end
+ end
+ circle_tables[r] = circle
+ return circle
+end
diff --git a/mods/riesenpilz/init.lua b/mods/riesenpilz/init.lua
new file mode 100644
index 00000000..35304bb1
--- /dev/null
+++ b/mods/riesenpilz/init.lua
@@ -0,0 +1,1278 @@
+local load_time_start = os.clock()
+local MAX_SIZE = 3
+
+riesenpilz = {}
+local modpath = minetest.get_modpath("riesenpilz").."/"
+dofile(modpath.."settings.lua")
+dofile(modpath.."functions.lua")
+
+
+-- Growing Functions
+
+local function r_area(manip, width, height, pos)
+ local emerged_pos1, emerged_pos2 = manip:read_from_map(
+ {x=pos.x-width, y=pos.y, z=pos.z-width},
+ {x=pos.x+width, y=pos.y+height, z=pos.z+width}
+ )
+ return VoxelArea:new({MinEdge=emerged_pos1, MaxEdge=emerged_pos2})
+end
+
+-- contents become added later
+local c
+
+-- cache buildable_to ids
+local re_al_cache = {[minetest.get_content_id("ignore")] = true}
+local function replacing_allowed(id)
+ if re_al_cache[id] ~= nil then
+ return re_al_cache[id]
+ end
+ local def = minetest.registered_nodes[minetest.get_name_from_content_id(id)]
+ if not def
+ or def.buildable_to then
+ re_al_cache[id] = true
+ return true
+ end
+ re_al_cache[id] = false
+ return false
+end
+
+local set_vm_nodes
+if riesenpilz.giant_restrict_area then
+ function set_vm_nodes(manip, pznodes)
+ local nodes = manip:get_data()
+ for vi,id in pairs(pznodes) do
+ if not replacing_allowed(nodes[vi]) then
+ return false
+ end
+ nodes[vi] = id
+ end
+ manip:set_data(nodes)
+ return true
+ end
+else
+ function set_vm_nodes(manip, pznodes)
+ local nodes = manip:get_data()
+ for vi,id in pairs(pznodes) do
+ if replacing_allowed(nodes[vi]) then
+ nodes[vi] = id
+ end
+ end
+ manip:set_data(nodes)
+ return true
+ end
+end
+
+local function set_vm_data(manip, pznodes, pos, t1, name)
+ if not set_vm_nodes(manip, pznodes) then
+ return
+ end
+ manip:write_to_map()
+ riesenpilz.inform("a giant " .. name .. " mushroom grew at " ..
+ minetest.pos_to_string(pos), 3, t1)
+ local t2 = os.clock()
+ manip:update_map()
+ riesenpilz.inform("map updated", 3, t2)
+end
+
+
+function riesenpilz.red(pos, nodes, area, w)
+ w = w or math.random(MAX_SIZE)
+ local h = w + 2
+
+ for i = 0, h do
+ nodes[area:index(pos.x, pos.y+i, pos.z)] = c.stem
+ end
+
+ local br = w+1
+ for k = -1, 1, 2 do
+ for l = -br+1, br do
+ nodes[area:index(pos.x+br*k, pos.y+h, pos.z-l*k)] = c.head_red
+ nodes[area:index(pos.x+l*k, pos.y+h, pos.z+br*k)] = c.head_red
+ end
+ end
+
+ for k = -w, w do
+ for l = -w, w do
+ nodes[area:index(pos.x+l, pos.y+h+1, pos.z+k)] = c.head_red
+ nodes[area:index(pos.x+l, pos.y+h, pos.z+k)] = c.lamellas
+ end
+ end
+end
+
+local function riesenpilz_hybridpilz(pos)
+ local t1 = os.clock()
+
+ local w = math.random(MAX_SIZE)
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, w+1, w+3, pos)
+
+ local pznodes = {}
+ riesenpilz.red(pos, pznodes, area, w)
+
+ set_vm_data(manip, pznodes, pos, t1, "red")
+end
+
+
+function riesenpilz.brown(pos, nodes, area, br)
+ br = br or math.random(MAX_SIZE-1)+1
+ local h = br + 2
+
+ for i in area:iterp(pos, {x=pos.x, y=pos.y+h, z=pos.z}) do
+ nodes[i] = c.stem
+ end
+
+ local w = br+1
+ for l = -br, br do
+ for k = -w, w, w*2 do
+ nodes[area:index(pos.x+k, pos.y+h+1, pos.z+l)] = c.head_brown
+ nodes[area:index(pos.x+l, pos.y+h+1, pos.z+k)] = c.head_brown
+ end
+ for k = -br, br do
+ nodes[area:index(pos.x+l, pos.y+h+1, pos.z+k)] = c.head_brown
+ end
+ end
+end
+
+local function riesenpilz_brauner_minecraftpilz(pos)
+ local t1 = os.clock()
+
+ local br = math.random(MAX_SIZE-1)+1
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, br+1, br+3, pos)
+
+ local pznodes = {}
+ riesenpilz.brown(pos, pznodes, area, br)
+
+ set_vm_data(manip, pznodes, pos, t1, "brown")
+end
+
+
+function riesenpilz.fly_agaric(pos, nodes, area, param2s)
+ local h = 3
+
+ for i = 0, h do
+ nodes[area:index(pos.x, pos.y+i, pos.z)] = c.stem
+ end
+
+ for j = -1, 1 do
+ for k = -1, 1 do
+ nodes[area:index(pos.x+j, pos.y+h+1, pos.z+k)] = c.head_red
+ end
+ for l = 1, h do
+ local y = pos.y+l
+ for _,p in pairs({
+ {area:index(pos.x+j, y, pos.z+2), 0},
+ {area:index(pos.x+j, y, pos.z-2), 2},
+ {area:index(pos.x+2, y, pos.z+j), 1},
+ {area:index(pos.x-2, y, pos.z+j), 3},
+ }) do
+ local tmp = p[1]
+ nodes[tmp] = c.head_red_side
+ param2s[tmp] = p[2]
+ end
+ end
+ end
+end
+
+local function riesenpilz_minecraft_fliegenpilz(pos)
+ local t1 = os.clock()
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, 2, 4, pos)
+ local param2s = manip:get_param2_data()
+
+ local pznodes = {}
+ riesenpilz.fly_agaric(pos, pznodes, area, param2s)
+
+ if not set_vm_nodes(manip, pznodes) then
+ return
+ end
+ manip:set_param2_data(param2s)
+ manip:write_to_map()
+ manip:update_map()
+ riesenpilz.inform("a fly agaric grew at " .. minetest.pos_to_string(pos),
+ 3, t1)
+end
+
+
+local function ran_node(a, b, ran)
+ if math.random(ran) == 1 then
+ return a
+ end
+ return b
+end
+
+function riesenpilz.lavashroom(pos, nodes, area, h)
+ h = h or 3 + math.random(MAX_SIZE - 2)
+
+ -- remove the mushroom
+ nodes[area:indexp(pos)] = c.air
+
+ for i = -1, 1, 2 do
+ -- set the stem
+ for n = 0, h do
+ nodes[area:index(pos.x+i, pos.y+n, pos.z)] = c.stem_brown
+ nodes[area:index(pos.x, pos.y+n, pos.z+i)] = c.stem_brown
+ end
+
+ local o = 2*i
+ for l = -1, 1 do
+ for k = 2, 3 do
+ nodes[area:index(pos.x+k*i, pos.y+h+2, pos.z+l)] = c.head_brown_full
+ nodes[area:index(pos.x+l, pos.y+h+2, pos.z+k*i)] = c.head_brown_full
+ end
+ nodes[area:index(pos.x+l, pos.y+h+1, pos.z+o)] = c.head_brown_full
+ nodes[area:index(pos.x+o, pos.y+h+1, pos.z+l)] = c.head_brown_full
+ end
+
+ for m = -1, 1, 2 do
+ for k = 2, 3 do
+ for j = 2, 3 do
+ nodes[area:index(pos.x+j*i, pos.y+h+2, pos.z+k*m)] = ran_node(c.head_yellow, c.head_orange, 7)
+ end
+ end
+ nodes[area:index(pos.x+i, pos.y+h+1, pos.z+m)] = c.head_brown_full
+ nodes[area:index(pos.x+m*2, pos.y+h+1, pos.z+o)] = c.head_brown_full
+ end
+
+ for l = -3+1, 3 do
+ nodes[area:index(pos.x+3*i, pos.y+h+5, pos.z-l*i)] = ran_node(c.head_yellow, c.head_orange, 5)
+ nodes[area:index(pos.x+l*i, pos.y+h+5, pos.z+3*i)] = ran_node(c.head_yellow, c.head_orange, 5)
+ end
+
+ for j = 0, 1 do
+ for l = -3, 3 do
+ nodes[area:index(pos.x+i*4, pos.y+h+3+j, pos.z+l)] = ran_node(c.head_yellow, c.head_orange, 6)
+ nodes[area:index(pos.x+l, pos.y+h+3+j, pos.z+i*4)] = ran_node(c.head_yellow, c.head_orange, 6)
+ end
+ end
+
+ end
+
+ for k = -2, 2 do
+ for l = -2, 2 do
+ nodes[area:index(pos.x+k, pos.y+h+6, pos.z+l)] = ran_node(c.head_yellow, c.head_orange, 4)
+ end
+ end
+end
+
+local function riesenpilz_lavashroom(pos)
+ local t1 = os.clock()
+
+ local h = 3+math.random(MAX_SIZE-2)
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, 4, h+6, pos)
+
+ local pznodes = {}
+ riesenpilz.lavashroom(pos, pznodes, area, h)
+
+ set_vm_data(manip, pznodes, pos, t1, "lavashroom")
+end
+
+
+function riesenpilz.glowshroom(pos, nodes, area, h)
+ h = h or 2 + math.random(MAX_SIZE)
+
+ for i = 0, h do
+ nodes[area:index(pos.x, pos.y+i, pos.z)] = c.stem_blue
+ end
+
+ local br = 2
+ for i = -1, 1, 2 do
+
+ for k = -br, br, 2*br do
+ for l = 2, h do
+ nodes[area:index(pos.x+i*br, pos.y+l, pos.z+k)] = c.head_blue
+ end
+ nodes[area:index(pos.x+i*br, pos.y+1, pos.z+k)] = c.head_blue_bright
+ end
+
+ for l = -br+1, br do
+ nodes[area:index(pos.x+i*br, pos.y+h, pos.z-l*i)] = c.head_blue
+ nodes[area:index(pos.x+l*i, pos.y+h, pos.z+br*i)] = c.head_blue
+ end
+
+ end
+
+ for l = 0, br do
+ for i = -br+l, br-l do
+ for k = -br+l, br-l do
+ nodes[area:index(pos.x+i, pos.y+h+1+l, pos.z+k)] = c.head_blue
+ end
+ end
+ end
+
+end
+
+local function riesenpilz_glowshroom(pos)
+ local t1 = os.clock()
+
+ local h = 2+math.random(MAX_SIZE)
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, 2, h+3, pos)
+
+ local pznodes = {}
+ riesenpilz.glowshroom(pos, pznodes, area, h)
+
+ set_vm_data(manip, pznodes, pos, t1, "glowshroom")
+end
+
+
+function riesenpilz.parasol(pos, nodes, area, w, h)
+ h = h or 6 + math.random(MAX_SIZE)
+
+ --stem
+ for i in area:iterp(pos, {x=pos.x, y=pos.y+h-2, z=pos.z}) do
+ nodes[i] = c.stem
+ end
+
+ w = w or MAX_SIZE + math.random(2)
+ local bhead1 = w-1
+ local bhead2 = math.random(1,w-2)
+
+ for _,j in pairs({
+ {bhead2, 0, c.head_brown_bright},
+ {bhead1, -1, c.head_beige}
+ }) do
+ for i in area:iter(pos.x-j[1], pos.y+h+j[2], pos.z-j[1], pos.x+j[1], pos.y+h+j[2], pos.z+j[1]) do
+ nodes[i] = j[3]
+ end
+ end
+
+ local rh = math.random(2,3)
+ for k = -1, 1, 2 do
+ for l = 0, 1 do
+ nodes[area:index(pos.x+k, pos.y+rh, pos.z-l*k)] = c.head_white
+ nodes[area:index(pos.x+l*k, pos.y+rh, pos.z+k)] = c.head_white
+ end
+ for l = -w+1, w do
+ nodes[area:index(pos.x+w*k, pos.y+h-2, pos.z-l*k)] = c.head_beige
+ nodes[area:index(pos.x+l*k, pos.y+h-2, pos.z+w*k)] = c.head_beige
+ end
+ for l = -bhead1+1, bhead1 do
+ nodes[area:index(pos.x+bhead1*k, pos.y+h-2, pos.z-l*k)] = c.head_white
+ nodes[area:index(pos.x+l*k, pos.y+h-2, pos.z+bhead1*k)] = c.head_white
+ end
+ end
+end
+
+local function riesenpilz_parasol(pos)
+ local t1 = os.clock()
+
+ local w = MAX_SIZE+math.random(2)
+ local h = 6+math.random(MAX_SIZE)
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, w, h, pos)
+
+ local pznodes = {}
+ riesenpilz.parasol(pos, pznodes, area, w, h)
+
+ set_vm_data(manip, pznodes, pos, t1, "parasol")
+end
+
+
+function riesenpilz.red45(pos, nodes, area, h1, h2)
+ local walkspace = h1 or math.random(2,MAX_SIZE)
+ local toph = h2 or math.random(MAX_SIZE)
+ local h = walkspace+toph+4
+
+ -- stem
+ for i in area:iterp(pos, {x=pos.x, y=pos.y+h, z=pos.z}) do
+ nodes[i] = c.stem_red
+ end
+
+ for i = -1,1,2 do
+ for l = 0, 1 do
+ if math.random(2) == 1 then
+ nodes[area:index(pos.x+i, pos.y, pos.z-l*i)] = c.stem_red
+ if math.random(2) == 1 then
+ nodes[area:index(pos.x+i, pos.y+1, pos.z-l*i)] = c.stem_red
+ end
+ end
+ if math.random(2) == 1 then
+ nodes[area:index(pos.x+l*i, pos.y, pos.z+i)] = c.stem_red
+ if math.random(2) == 1 then
+ nodes[area:index(pos.x+l*i, pos.y+1, pos.z+i)] = c.stem_red
+ end
+ end
+ nodes[area:index(pos.x+i, pos.y+walkspace+2, pos.z-l*i)] = c.head_red
+ nodes[area:index(pos.x+l*i, pos.y+walkspace+2, pos.z+i)] = c.head_red
+ end
+ nodes[area:index(pos.x, pos.y+walkspace+3, pos.z+i)] = c.head_red
+ nodes[area:index(pos.x+i, pos.y+walkspace+3, pos.z)] = c.head_red
+ for j = -1,1,2 do
+ nodes[area:index(pos.x+j, pos.y+walkspace+1, pos.z+i)] = c.head_red
+ nodes[area:index(pos.x+j*3, pos.y+walkspace+1, pos.z+i*3)] = c.head_red
+ for z = 1,2 do
+ for x = 1,2 do
+ for y = h-toph, h-1 do
+ nodes[area:index(pos.x+x*j, pos.y+y, pos.z+z*i)] = c.head_red
+ end
+ if z ~= 2
+ or x ~= 2
+ or math.random(4) ~= 2 then
+ nodes[area:index(pos.x+x*j, pos.y+h, pos.z+z*i)] = c.head_red
+ end
+ local zo = z+1
+ local xo = x+1
+ nodes[area:index(pos.x + xo * j, pos.y + walkspace + 2,
+ pos.z + zo * i)] = c.head_red
+ if zo ~= 3
+ or xo ~= 3
+ or math.random(2) == 1 then
+ nodes[area:index(pos.x + xo * j, pos.y + walkspace + 3,
+ pos.z + zo * i)] = c.head_red
+ end
+ end
+ end
+ end
+ end
+
+ -- top
+ for z = -1,1 do
+ for x = -1,1 do
+ nodes[area:index(pos.x+x, pos.y+h+1, pos.z+z)] = c.head_red
+ end
+ end
+end
+
+local function riesenpilz_red45(pos)
+ local t1 = os.clock()
+
+ local h1 = math.random(2,MAX_SIZE)
+ local h2 = math.random(MAX_SIZE)
+ local h = h1+h2+5
+
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, 3, h, pos)
+
+ local pznodes = {}
+ riesenpilz.red45(pos, pznodes, area, h1, h2)
+
+ set_vm_data(manip, pznodes, pos, t1, "red45")
+end
+
+
+function riesenpilz.apple(pos, nodes, area)
+ local size = 5
+ local a = size*2
+ local b = size-1
+
+ for l = -b, b do
+ for j = 1, a-1 do
+ for k = -size, size, a do
+ nodes[area:index(pos.x+k, pos.y+j, pos.z+l)] = c.red
+ nodes[area:index(pos.x+l, pos.y+j, pos.z+k)] = c.red
+ end
+ end
+ for i = -b, b do
+ nodes[area:index(pos.x+i, pos.y, pos.z+l)] = c.red
+ nodes[area:index(pos.x+i, pos.y+a, pos.z+l)] = c.red
+ end
+ end
+
+ for i = a+1, a+b do
+ nodes[area:index(pos.x, pos.y+i, pos.z)] = c.tree
+ end
+
+ local d = pos.y+1
+ for i = -3,1,1 do
+ nodes[area:index(pos.x+i, d, pos.z+1)] = c.brown
+ end
+ for i = 0,1,1 do
+ nodes[area:index(pos.x+i+1, d, pos.z-1-i)] = c.brown
+ nodes[area:index(pos.x+i+2, d, pos.z-1-i)] = c.brown
+ end
+ nodes[area:index(pos.x+1, d, pos.z)] = c.brown
+ nodes[area:index(pos.x-3, d+1, pos.z+1)] = c.brown
+end
+
+local function riesenpilz_apple(pos)
+
+ local t1 = os.clock()
+ local manip = minetest.get_voxel_manip()
+ local area = r_area(manip, 5, 14, pos)
+
+ local pznodes = {}
+ riesenpilz.apple(pos, pznodes, area)
+
+ if not set_vm_nodes(manip, pznodes) then
+ return
+ end
+ manip:write_to_map()
+ riesenpilz.inform("an apple grew at " .. minetest.pos_to_string(pos), 3, t1)
+ manip:update_map()
+end
+
+
+
+-- 3D apple [3apple]
+
+
+if riesenpilz.change_apple then
+ minetest.override_item("default:apple", {
+ drawtype = "nodebox",
+ tiles = {"3apple_apple_top.png", "3apple_apple_bottom.png", "3apple_apple.png"},
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-3/16, -7/16, -3/16, 3/16, 1/16, 3/16},
+ {-4/16, -6/16, -3/16, 4/16, 0, 3/16},
+ {-3/16, -6/16, -4/16, 3/16, 0, 4/16},
+ {-1/32, 1/16, -1/32, 1/32, 4/16, 1/32},
+ {-1/16, 1.6/16, 0, 1/16, 1.8/16, 1/16},
+ {-2/16, 1.4/16, 1/16, 1/16, 1.6/16, 2/16},
+ {-2/16, 1.2/16, 2/16, 0, 1.4/16, 3/16},
+ {-1.5/16, 1/16, .5/16, 0.5/16, 1.2/16, 2.5/16},
+ }
+ },
+ })
+end
+
+
+
+-- Mushroom Nodes
+
+
+local abm_allowed = true
+local disallowed_ps = {}
+
+for name, ndata in pairs({
+ brown = {
+ description = "brown mushroom",
+ box = {
+ {-0.15, -0.2, -0.15, 0.15, -0.1, 0.15},
+ {-0.2, -0.3, -0.2, 0.2, -0.2, 0.2},
+ {-0.05, -0.5, -0.05, 0.05, -0.3, 0.05}
+ },
+ growing = {
+ r = {min=3, max=4},
+ grounds = {soil=1, crumbly=3},
+ neighbours = {"default:tree"},
+ light = {min=1, max=7},
+ interval = 100,
+ chance = 18,
+ },
+ hp = 2,
+ },
+ red = {
+ description = "red mushroom",
+ box = {
+ {-1/16, -8/16, -1/16, 1/16, -6/16, 1/16},
+ {-3/16, -6/16, -3/16, 3/16, -5/16, 3/16},
+ {-4/16, -5/16, -4/16, 4/16, -4/16, 4/16},
+ {-3/16, -4/16, -3/16, 3/16, -3/16, 3/16},
+ {-2/16, -3/16, -2/16, 2/16, -2/16, 2/16}
+ },
+ growing = {
+ r = {min=4, max=5},
+ grounds = {soil=2},
+ neighbours = {"default:water_flowing"},
+ light = {min=4, max=13},
+ interval = 50,
+ chance = 30,
+ },
+ hp = -2,
+ },
+ fly_agaric = {
+ description = "fly agaric",
+ box = {
+ {-0.05, -0.5, -0.05, 0.05, 1/20, 0.05},
+ {-3/20, -6/20, -3/20, 3/20, 0, 3/20},
+ {-4/20, -2/20, -4/20, 4/20, -4/20, 4/20}
+ },
+ growing = {
+ r = 4,
+ grounds = {soil=1, crumbly=3},
+ neighbours = {"default:pinetree"},
+ light = {min=2, max=10},
+ interval = 101,
+ chance = 30,
+ },
+ hp = -6,
+ },
+ lavashroom = {
+ description = "Lavashroom",
+ box = {
+ {-1/16, -8/16, -1/16, 1/16, -6/16, 1/16},
+ {-2/16, -6/16, -2/16, 2/16, 0, 2/16},
+ {-3/16, -5/16, -3/16, 3/16, -1/16, 3/16},
+ {-4/16, -4/16, -4/16, 4/16, -2/16, 4/16}
+ },
+ growing = {
+ r = {min=5, max=6},
+ grounds = {cracky=3},
+ neighbours = {"default:lava_source"},
+ light = {min=10, max=12},
+ interval = 1010,
+ chance = 60,
+ },
+ hp = -1,
+ },
+ glowshroom = {
+ description = "Glowshroom",
+ box = {
+ {-1/16, -8/16, -1/16, 1/16, -1/16, 1/16},
+ {-2/16, -3/16, -2/16, 2/16, -2/16, 2/16},
+ {-3/16, -5/16, -3/16, 3/16, -3/16, 3/16},
+ {-3/16, -7/16, -3/16, -2/16, -5/16, -2/16},
+ {3/16, -7/16, -3/16, 2/16, -5/16, -2/16},
+ {-3/16, -7/16, 3/16, -2/16, -5/16, 2/16},
+ {3/16, -7/16, 3/16, 2/16, -5/16, 2/16}
+ },
+ growing = {
+ r = 3,
+ grounds = {soil=1, crumbly=3},
+ neighbours = {"default:stone"},
+ light = 0,
+ interval = 710,
+ chance = 320,
+ },
+ hp = -2,
+ },
+ nether_shroom = {
+ description = "Nether mushroom",
+ box = {
+ {-1/16, -8/16, -1/16, 1/16, -2/16, 1/16},
+ {-2/16, -6/16, -2/16, 2/16, -5/16, 2/16},
+ {-3/16, -2/16, -3/16, 3/16, 0, 3/16},
+ {-4/16, -1/16, -4/16, 4/16, 1/16,-2/16},
+ {-4/16, -1/16, 2/16, 4/16, 1/16, 4/16},
+ {-4/16, -1/16, -2/16,-2/16, 1/16, 2/16},
+ { 2/16, -1/16, -2/16, 4/16, 1/16, 2/16}
+ },
+ burntime = 6,
+ hp = -3,
+ },
+ parasol = {
+ description = "white parasol mushroom",
+ box = {
+ {-1/16, -8/16, -1/16, 1/16, 0, 1/16},
+ {-2/16, -6/16, -2/16, 2/16, -5/16, 2/16},
+ {-5/16, -4/16, -5/16, 5/16, -3/16, 5/16},
+ {-4/16, -3/16, -4/16, 4/16, -2/16, 4/16},
+ {-3/16, -2/16, -3/16, 3/16, -1/16, 3/16}
+ },
+ growing = {
+ r = {min=3, max=5},
+ grounds = {soil=1, crumbly=3},
+ neighbours = {"default:pinetree"},
+ light = {min=1, max=11},
+ interval = 51,
+ chance = 36,
+ },
+ hp = 3,
+ },
+ red45 = {
+ description = "45 red mushroom",
+ box = {
+ {-1/16, -0.5, -1/16, 1/16, 1/8, 1/16},
+ {-3/16, 1/8, -3/16, 3/16, 1/4, 3/16},
+ {-5/16, -1/4, -5/16, -1/16, 1/8, -1/16},
+ {1/16, -1/4, -5/16, 5/16, 1/8, -1/16},
+ {-5/16, -1/4, 1/16, -1/16, 1/8, 5/16},
+ {1/16, -1/4, 1/16, 5/16, 1/8, 5/16}
+ },
+ growing = {
+ r = {min=3, max=4},
+ grounds = {soil=2},
+ neighbours = {"default:water_source"},
+ light = {min=2, max=7},
+ interval = 1000,
+ chance = 180,
+ },
+ hp = 1,
+ },
+ brown45 = {
+ description = "45 brown mushroom",
+ box = {
+ {-1/16, -0.5, -1/16, 1/16, 1/16, 1/16},
+ {-3/8, 1/8, -7/16, 3/8, 1/4, 7/16},
+ {-7/16, 1/8, -3/8, 7/16, 1/4, 3/8},
+ {-3/8, 1/4, -3/8, 3/8, 5/16, 3/8},
+ {-3/8, 1/16, -3/8, 3/8, 1/8, 3/8}
+ },
+ growing = {
+ r = {min=2, max=3},
+ grounds = {tree=1},
+ neighbours = {"default:water_flowing"},
+ light = {min=7, max=11},
+ interval = 100,
+ chance = 20,
+ },
+ hp = 1,
+ },
+}) do
+ local burntime = ndata.burntime or 1
+ local box = {
+ type = "fixed",
+ fixed = ndata.box
+ }
+ local nd = "riesenpilz:" .. name
+ minetest.register_node(nd, {
+ description = ndata.description,
+ tiles = {
+ --~ {name = "riesenpilz_"..name.."_top.png", tileable_vertical = false},
+ --~ {name = "riesenpilz_"..name.."_bottom.png", tileable_vertical = false},
+ --~ {name = "riesenpilz_"..name.."_side.png", tileable_vertical = false},
+ "riesenpilz_" .. name .. "_top.png",
+ "riesenpilz_" .. name .. "_bottom.png",
+ "riesenpilz_" .. name .. "_side.png",
+ },
+ use_texture_alpha = "opaque",
+ inventory_image = "riesenpilz_"..name.."_side.png",
+ walkable = false,
+ buildable_to = true,
+ drawtype = "nodebox",
+ paramtype = "light",
+ groups = {snappy=3,flammable=2,attached_node=1},
+ sounds = default.node_sound_leaves_defaults(),
+ node_box = box,
+ selection_box = box,
+ furnace_burntime = burntime,
+ on_secondary_use = minetest.item_eat(ndata.hp),
+ })
+
+ local g = ndata.growing
+
+ if g then
+ local grounds = g.grounds
+ local nds = {}
+ for n in pairs(grounds) do
+ table.insert(nds, "group:"..n)
+ end
+
+ local nbs = table.copy(g.neighbours)
+ table.insert(nbs, "air")
+
+ local rmin, rmax, lmin, lmax
+
+ local r = g.r
+ if type(r) == "table" then
+ rmin = r.min
+ rmax = r.max
+ else
+ rmin = r or 3
+ rmax = rmin
+ end
+
+ local l = g.light
+ if type(l) == "table" then
+ lmin = l.min
+ lmax = l.max
+ else
+ lmin = l or 3
+ lmax = lmin
+ end
+
+ minetest.register_abm({
+ nodenames = nds,
+ neighbors = g.neighbours,
+ interval = g.interval,
+ chance = g.chance,
+ catch_up = false,
+ action = function(pos, node)
+ if not abm_allowed then
+ return
+ end
+
+ -- don't try to spawn them on the same positions again
+ for _,p in pairs(disallowed_ps) do
+ if vector.equals(p, pos) then
+ return
+ end
+ end
+
+ -- don't spawn mushroom circles next to other ones
+ if minetest.find_node_near(pos, rmax, nd) then
+ return
+ end
+
+ -- spawn them around the right nodes
+ local data = minetest.registered_nodes[node.name]
+ if not data
+ or not data.groups then
+ return
+ end
+ local groups = data.groups
+ for groupname, groupvalue in pairs(grounds) do
+ if groups[groupname] ~= groupvalue then
+ return
+ end
+ end
+
+ -- find their neighbours
+ for _,n in pairs(nbs) do
+ if not minetest.find_node_near(pos, rmin, n) then
+ return
+ end
+ end
+
+ -- should disallow lag
+ abm_allowed = false
+ minetest.after(2, function() abm_allowed = true end)
+ disallowed_ps[#disallowed_ps+1] = pos
+
+ -- witch circles
+ local ps = {}
+ for _,p in pairs(riesenpilz.circle(math.random(rmin, rmax))) do
+ p = vector.add(pos, p)
+
+ -- currently 3 is used here, approved by its use in the mapgen
+ if math.random(3) == 1 then
+
+ -- don't only use the current y for them
+ for y = 1,-1,-1 do
+ local pos_above = {x=p.x, y=p.y+y, z=p.z}
+ if minetest.get_node(pos_above).name ~= "air" then
+ break
+ end
+ local f = minetest.get_node({x=p.x, y=p.y+y-1, z=p.z}).name
+ if f ~= "air" then
+
+ -- they grown on specific nodes
+ local data_ground = minetest.registered_nodes[f]
+ if data_ground
+ and data_ground.walkable
+ and data_ground.groups
+ and (not data_ground.drawtype
+ or data_ground.drawtype == "normal"
+ ) then
+ local ground_disallowed
+ for n,i in pairs(grounds) do
+ if data_ground.groups[n] ~= i then
+ ground_disallowed = true
+ break
+ end
+ end
+ if not ground_disallowed then
+
+ -- they also need specific light strengths
+ local light = minetest.get_node_light(
+ pos_above, 0.5)
+ if light >= lmin
+ and light <= lmax then
+ ps[#ps+1] = pos_above
+ end
+ end
+ end
+ break
+ end
+ end
+ end
+ end
+ if not ps[1] then
+ return
+ end
+
+ -- place them
+ for _,p in pairs(ps) do
+ minetest.set_node(p, {name=nd})
+ end
+ minetest.log("info", "[riesenpilz] "..nd.." mushrooms grew at "..minetest.pos_to_string(pos))
+ end
+ })
+ end
+end
+
+-- disallow abms when the server is lagging
+minetest.register_globalstep(function(dtime)
+ if dtime > 0.5
+ and abm_allowed then
+ abm_allowed = false
+ minetest.after(2, function() abm_allowed = true end)
+ --minetest.chat_send_all(dtime)
+ end
+end)
+
+
+
+-- Big Mushroom Nodes
+
+
+local head_sounds = default.node_sound_wood_defaults({
+ footstep = {name="riesenpilz_head", gain=0.1},
+ place = {name="default_place_node", gain=0.5},
+ dig = {name="riesenpilz_head", gain=0.2},
+ dug = {name="riesenpilz_stem", gain=0.1}
+})
+local add_fence = minetest.register_fence
+local node_groups = {oddly_breakable_by_hand=3, fall_damage_add_percent=-80, bouncy=10}
+
+for _, ndata in ipairs({
+ {
+ typ = "stem",
+ description = "white",
+ textures = {"stem_top.png", "stem_top.png", "stem_white.png"},
+ },
+ {
+ typ = "stem",
+ name = "brown",
+ textures = {"stem_top.png", "stem_top.png", "stem_brown.png"},
+ fence = false,
+ },
+ {
+ typ = "stem",
+ name = "blue",
+ textures = {"stem_top.png","stem_top.png","stem_blue.png"},
+ fence = false,
+ },
+ {
+ typ = "stem",
+ name = "red",
+ textures = {"stem_red45_top.png","stem_red45_top.png","stem_red45.png"},
+ },
+ {
+ name = "lamellas",
+ description = "giant mushroom lamella",
+ textures = "lamellas.png",
+ sapling = "lamellas"
+ },
+ {
+ typ = "head",
+ name = "red",
+ textures = {"head.png", "lamellas.png", "head.png"},
+ sapling = "red"
+ },
+ {
+ typ = "head",
+ name = "orange",
+ textures = "head_orange.png",
+ sapling = "lavashroom"
+ },
+ {
+ typ = "head",
+ name = "yellow",
+ textures = "head_yellow.png",
+ sapling = "lavashroom"
+ },
+ {
+ typ = "head",
+ name = "brown",
+ textures = {"brown_top.png", "lamellas.png", "brown_top.png"},
+ sapling = "brown",
+ },
+ {
+ typ = "head",
+ name = "brown_full",
+ description = "full brown",
+ textures = "brown_top.png",
+ sapling = "brown",
+ fence = false,
+ },
+ {
+ typ = "head",
+ name = "blue_bright",
+ description = "blue bright",
+ textures = "head_blue_bright.png",
+ sapling = "glowshroom"
+ },
+ {
+ typ = "head",
+ name = "blue",
+ textures = "head_blue.png",
+ sapling = "glowshroom"
+ },
+ {
+ typ = "head",
+ name = "white",
+ textures = "head_white.png",
+ sapling = "parasol"
+ },
+ {
+ typ = "head",
+ name = "beige",
+ textures = {"head_beige.png", "head_white.png", "head_beige.png"},
+ sapling = "parasol"
+ },
+ {
+ typ = "head",
+ name = "brown_bright",
+ description = "brown bright",
+ textures = {"head_brown_bright.png", "head_white.png", "head_brown_bright.png"},
+ sapling = "parasol"
+ },
+}) do
+ -- fill missing stuff
+ local textures = ndata.textures
+ ndata.description = ndata.description or ndata.name
+ if type(textures) == "string" then
+ textures = {textures}
+ end
+ for i = 1,#textures do
+ textures[i] = "riesenpilz_"..textures[i]
+ end
+ local nodename = "riesenpilz:"
+ local desctiption,sounds = "giant mushroom "
+ if ndata.typ == "stem" then
+ desctiption = desctiption .. "stem " .. ndata.description
+ nodename = nodename .. "stem" ..
+ ((ndata.name and "_" .. ndata.name) or "")
+ sounds = default.node_sound_wood_defaults({
+ footstep = {name="riesenpilz_stem", gain=0.2},
+ place = {name="default_place_node", gain=0.5},
+ dig = {name="riesenpilz_stem", gain=0.4},
+ dug = {name="default_wood_footstep", gain=0.3}
+ })
+ elseif ndata.typ == "head" then
+ desctiption = desctiption .. "head " .. ndata.description
+ nodename = nodename .. "head_" .. ndata.name
+ sounds = head_sounds
+ else
+ nodename = nodename .. ndata.name
+ desctiption = desctiption .. ndata.description
+ end
+ local drop = ndata.sapling and {max_items = 1, items = {
+ {items = {"riesenpilz:" .. ndata.sapling}, rarity = 20},
+ {items = {nodename}, rarity = 1}
+ }}
+ minetest.register_node(nodename, {
+ description = desctiption,
+ tiles = textures,
+ groups = node_groups,
+ drop = drop,
+ sounds = sounds,
+ })
+
+ if add_fence
+ and ndata.fence ~= false then
+ add_fence({fence_of = nodename})
+ end
+end
+
+minetest.register_node("riesenpilz:head_red_side", {
+ description = "giant mushroom head red side",
+ tiles = {"riesenpilz_head.png", "riesenpilz_lamellas.png", "riesenpilz_head.png",
+ "riesenpilz_head.png", "riesenpilz_head.png", "riesenpilz_lamellas.png"},
+ paramtype2 = "facedir",
+ groups = node_groups,
+ drop = {max_items = 1,
+ items = {{items = {"riesenpilz:fly_agaric"},rarity = 20,},
+ {items = {"riesenpilz:head_red"},rarity = 1,}}},
+ sounds = head_sounds
+})
+
+
+
+minetest.register_node("riesenpilz:ground", {
+ description = "dirt with rotten grass",
+ tiles = {"riesenpilz_ground_top.png","default_dirt.png",
+ {name="default_dirt.png^riesenpilz_ground_side.png", tileable_vertical = false}
+ },
+ groups = {crumbly=3},
+ sounds = default.node_sound_dirt_defaults(),
+ drop = 'default:dirt'
+})
+
+
+c = {
+ air = minetest.get_content_id("air"),
+
+ stem = minetest.get_content_id("riesenpilz:stem"),
+ head_red = minetest.get_content_id("riesenpilz:head_red"),
+ lamellas = minetest.get_content_id("riesenpilz:lamellas"),
+
+ head_brown = minetest.get_content_id("riesenpilz:head_brown"),
+
+ head_red_side = minetest.get_content_id("riesenpilz:head_red_side"),
+
+ stem_brown = minetest.get_content_id("riesenpilz:stem_brown"),
+ head_brown_full = minetest.get_content_id("riesenpilz:head_brown_full"),
+ head_orange = minetest.get_content_id("riesenpilz:head_orange"),
+ head_yellow = minetest.get_content_id("riesenpilz:head_yellow"),
+
+ stem_blue = minetest.get_content_id("riesenpilz:stem_blue"),
+ head_blue = minetest.get_content_id("riesenpilz:head_blue"),
+ head_blue_bright = minetest.get_content_id("riesenpilz:head_blue_bright"),
+
+ head_white = minetest.get_content_id("riesenpilz:head_white"),
+ head_beige = minetest.get_content_id("riesenpilz:head_beige"),
+ head_brown_bright = minetest.get_content_id("riesenpilz:head_brown_bright"),
+
+ stem_red = minetest.get_content_id("riesenpilz:stem_red"),
+
+ red = minetest.get_content_id("default:copperblock"),
+ brown = minetest.get_content_id("default:desert_stone"),
+ tree = minetest.get_content_id("default:tree"),
+}
+
+
+
+-- Growing
+
+
+minetest.register_tool("riesenpilz:growingtool", {
+ description = "growingtool",
+ inventory_image = "riesenpilz_growingtool.png",
+})
+
+local grow_functions = {
+ ["riesenpilz:red"] = riesenpilz_hybridpilz,
+ ["riesenpilz:fly_agaric"] = riesenpilz_minecraft_fliegenpilz,
+ ["riesenpilz:brown"] = riesenpilz_brauner_minecraftpilz,
+ ["riesenpilz:lavashroom"] = riesenpilz_lavashroom,
+ ["riesenpilz:glowshroom"] = riesenpilz_glowshroom,
+ ["riesenpilz:parasol"] = riesenpilz_parasol,
+ ["riesenpilz:red45"] = riesenpilz_red45,
+ ["default:apple"] = riesenpilz_apple
+}
+local function get_grow(name)
+ if grow_functions[name] then
+ return grow_functions[name]
+ end
+
+ local is = {}
+ for i = 1,#minetest.registered_abms do
+ local ad = minetest.registered_abms[i]
+ if type(ad.nodenames) ~= "table" then
+ minetest.log("warning", "ABM nodenames is not a table: " ..
+ dump(ad))
+ return
+ end
+ if ad.chance > 1
+ and table.indexof(ad.nodenames, name) ~= -1 then
+ is[#is+1] = ad.action
+ end
+ end
+
+ local func
+ if is[1] then
+ function func(pos, node)
+ for i = 1,#is do
+ is[i](pos, node)
+ end
+ end
+ else
+ local def = minetest.registered_nodes[name]
+ if def then
+ if def.on_timer then
+ func = def.on_timer
+ else
+ func = function(pos, _, player)
+ if def.on_place then
+ def.on_place(ItemStack(name), player, {
+ type = "node",
+ under = vector.new(pos),--{x=pos.x, y=pos.y-1, z=pos.z},
+ above = vector.new(pos)
+ })
+ end
+ if def.after_place_node then
+ def.after_place_node(pos)
+ end
+ end
+ end
+ else
+ func = function() end
+ end
+ end
+
+ grow_functions[name] = func
+ return func
+end
+
+minetest.register_on_punchnode(function(pos, node, player)
+ if player:get_wielded_item():get_name() ~= "riesenpilz:growingtool"
+ or minetest.is_protected(pos, player:get_player_name()) then
+ return
+ end
+
+ local func = get_grow(node.name)
+ if func then
+ func(pos, node, player)
+ end
+end)
+
+
+
+-- Uses
+
+
+-- mush45's meal
+minetest.register_craftitem("riesenpilz:mush45_meal", {
+ description = "Mushroom Meal",
+ inventory_image = "riesenpilz_mush45_meal.png",
+ on_use = minetest.item_eat(6),
+})
+
+minetest.register_craft({
+ output = "riesenpilz:mush45_meal 4",
+ recipe = {
+ {"riesenpilz:brown45", "riesenpilz:red45"},
+ {"riesenpilz:red45", "riesenpilz:brown45"},
+ }
+})
+
+
+--[[ unfinished
+if minetest.global_exists(technic) then
+ if minetest.global_exists(digilines) then
+ -- digiline light value detector
+ minetest.register_node("riesenpilz:light_detector" {
+ tiles = {"riesenpilz_light_detector.png"},
+ paramtype = "light",
+ digiline = {
+ receive = function(pos)
+ local light = minetest.get_node_light(pos)
+ send("light_detector", light)
+ end,
+ },
+ --sounds = ,
+ })
+
+ --technic.comp({"riesenpilz:glowshroom 10", "coal"}, "riesenpilz:light_detector")
+ end
+
+
+ --[ [
+ if minetest.global_exists(3darmor) then add to depends
+ --lavashroom skin armor, swimming in lava possible
+
+ minetest.register_craftitem("riesenpilz:lavashroom_flesh", {
+ description = "lavashroom's flesh",
+ inventory_image = "riesenpilz_lavashroom_flesh.png",
+ on_use = minetest.item_eat(3),
+ })
+
+ minetest.register_craftitem("riesenpilz:lavashroom_skin", {
+ description = "lavashroom's skin",
+ inventory_image = "riesenpilz_lavashroom_skin.png",
+ })
+
+ minetest.register_craftitem("riesenpilz:antilava_plate", {
+ description = "lava protecting plate",
+ inventory_image = "riesenpilz_antilava_plate.png",
+ })
+
+ technic.centri("riesenpilz:lavashroom", {"riesenpilz:lavashroom_flesh", "riesenpilz:lavashroom_skin"})
+ technic.comp("riesenpilz:lavashroom_skin 5", "riesenpilz:antilava_plate")
+
+ armor_register(plate blah)
+ end--] ]
+})
+end--]]
+
+
+if riesenpilz.enable_mapgen then
+ dofile(modpath.."mapgen.lua")
+end
+
+
+
+-- Legacy
+
+
+minetest.register_alias("riesenpilz:head_binge", "riesenpilz:head_beige")
+
+
+local time = math.floor(tonumber(os.clock()-load_time_start)*100+0.5)/100
+local msg = "[riesenpilz] loaded after ca. "..time
+if time > 0.05 then
+ print(msg)
+else
+ minetest.log("info", msg)
+end
diff --git a/mods/riesenpilz/mapgen.lua b/mods/riesenpilz/mapgen.lua
new file mode 100644
index 00000000..f6076159
--- /dev/null
+++ b/mods/riesenpilz/mapgen.lua
@@ -0,0 +1,340 @@
+local minetest = minetest --Should make things a bit faster.
+
+local c
+local function define_contents()
+ c = {
+ ignore = minetest.get_content_id("ignore"),
+ air = minetest.get_content_id("air"),
+
+ water = minetest.get_content_id("default:water_source"),
+ stone = minetest.get_content_id("default:stone"),
+ dirt = minetest.get_content_id("default:dirt"),
+ desert_sand = minetest.get_content_id("default:desert_sand"),
+
+ dry_shrub = minetest.get_content_id("default:dry_shrub"),
+
+ ground = minetest.get_content_id("riesenpilz:ground"),
+ riesenpilz_brown = minetest.get_content_id("riesenpilz:brown"),
+ riesenpilz_red = minetest.get_content_id("riesenpilz:red"),
+ riesenpilz_fly_agaric = minetest.get_content_id("riesenpilz:fly_agaric"),
+ riesenpilz_lavashroom = minetest.get_content_id("riesenpilz:lavashroom"),
+ riesenpilz_glowshroom = minetest.get_content_id("riesenpilz:glowshroom"),
+ riesenpilz_parasol = minetest.get_content_id("riesenpilz:parasol"),
+
+ TREE_STUFF = {
+ minetest.get_content_id("default:tree"),
+ minetest.get_content_id("default:leaves"),
+ minetest.get_content_id("default:apple"),
+ minetest.get_content_id("default:jungletree"),
+ minetest.get_content_id("default:jungleleaves"),
+ minetest.get_content_id("default:junglegrass"),
+ },
+ }
+end
+
+
+local grounds = {}
+local function is_ground(id)
+ local is = grounds[id]
+ if is ~= nil then
+ return is
+ end
+ local data = minetest.registered_nodes[minetest.get_name_from_content_id(id)]
+ if not data
+ or data.paramtype == "light" then
+ grounds[id] = false
+ return false
+ end
+ local groups = data.groups
+ if groups
+ and (groups.crumbly == 3 or groups.soil == 1) then
+ grounds[id] = true
+ return true
+ end
+ grounds[id] = false
+ return false
+end
+
+local toremoves = {}
+local function is_toremove(id)
+ local is = toremoves[id]
+ if is ~= nil then
+ return is
+ end
+ local data = minetest.registered_nodes[minetest.get_name_from_content_id(id)]
+ if not data then
+ toremoves[id] = false
+ return false
+ end
+ local groups = data.groups
+ if groups
+ and groups.flammable then
+ toremoves[id] = true
+ return true
+ end
+ toremoves[id] = false
+ return false
+end
+
+
+local data = {}
+local area, pr
+local function make_circle(nam, pos, radius, chance)
+ local circle = riesenpilz.circle(radius)
+ for i = 1, #circle do
+ if pr:next(1, chance) == 1 then
+ local vi = area:indexp(vector.add(pos, circle[i]))
+ if data[vi] == c.air
+ and is_ground(data[vi - area.ystride]) then
+ data[vi] = nam
+ end
+ end
+ end
+end
+
+
+local nosmooth_rarity = 0.5
+local smooth_rarity_max = 0.6
+local smooth_rarity_min = 0.4
+local smooth_rarity_dif = smooth_rarity_max - smooth_rarity_min
+local perlin_scale = 500
+
+local contents_defined
+minetest.register_on_generated(function(minp, maxp, seed)
+ if maxp.y <= 0
+ or minp.y >= 150 then --avoid generation in the sky
+ return
+ end
+
+ local x0,z0,x1,z1 = minp.x,minp.z,maxp.x,maxp.z -- Assume X and Z lengths are equal
+ local perlin1 = minetest.get_perlin(51,3, 0.5, perlin_scale) --Get map specific perlin
+
+ if not riesenpilz.always_generate then
+ local biome_allowed
+ for x = x0, x1, 16 do
+ for z = z0, z1, 16 do
+ if perlin1:get2d({x=x, y=z}) > nosmooth_rarity then
+ biome_allowed = true
+ break
+ end
+ end
+ if biome_allowed then
+ break
+ end
+ end
+ if not biome_allowed then
+ return
+ end
+ end
+
+ local t1 = os.clock()
+ riesenpilz.inform(("tries to generate a giant mushroom biome at: " ..
+ "x=[%d; %d]; y=[%d; %d]; z=[%d; %d]"):format(minp.x, maxp.x, minp.y,
+ maxp.y, minp.z, maxp.z), 2)
+
+ if not contents_defined then
+ define_contents()
+ contents_defined = true
+ end
+
+ local divs = (maxp.x-minp.x);
+ local num = 1
+ local tab = {}
+ pr = PseudoRandom(seed+68)
+
+ local heightmap = minetest.get_mapgen_object("heightmap")
+ local hmi = 1
+ local hm_zstride = divs+1
+
+ local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
+ vm:get_data(data)
+ area = VoxelArea:new{MinEdge=emin, MaxEdge=emax}
+
+ for p_pos in area:iterp(minp, maxp) do --remove tree stuff
+ local d_p_pos = data[p_pos]
+ for _,nam in ipairs(c.TREE_STUFF) do
+ if d_p_pos == nam then
+ data[p_pos] = c.air
+ break
+ end
+ end
+ end
+
+ for j=0,divs do
+ for i=0,divs do
+ local x,z = x0+i,z0+j
+
+ --Check if we are in a "riesenpilz biome"
+ local in_biome = false
+ local test = perlin1:get2d({x=x, y=z})
+ --smooth mapgen
+ if riesenpilz.always_generate then
+ in_biome = true
+ elseif riesenpilz.smooth then
+ if test >= smooth_rarity_max
+ or (
+ test > smooth_rarity_min
+ and pr:next(1, 1000) <= ((test-smooth_rarity_min)/smooth_rarity_dif)*1000
+ ) then
+ in_biome = true
+ end
+ elseif test > nosmooth_rarity then
+ in_biome = true
+ end
+
+ if in_biome then
+
+ local ymin = math.max(heightmap[hmi]-5, minp.y)
+ local ymax = math.min(heightmap[hmi]+20, maxp.y)
+
+ -- skip the air part
+ local ground
+ local vi = area:index(x, ymax, z)
+ for y = ymax, ymin, -1 do
+ if data[vi] ~= c.air then
+ ground = y
+ break
+ end
+ vi = vi - area.ystride
+ end
+
+ local ground_y
+ if ground then
+ for y = ground, ymin, -1 do
+ local d_p_pos = data[vi]
+ if is_toremove(d_p_pos) then
+ -- remove trees etc.
+ data[vi] = c.air
+ else
+ if is_ground(d_p_pos) then
+ ground_y = y
+ heightmap[hmi] = y
+ end
+ break
+ end
+ vi = vi - area.ystride
+ end
+ end
+
+ if ground_y then
+ -- add ground and dirt below if needed
+ data[vi] = c.ground
+ for off = -1,-5,-1 do
+ local p_pos = vi + off * area.ystride
+ if not is_ground(data[p_pos])
+ or data[p_pos] == c.dirt then
+ break
+ end
+ data[p_pos] = c.dirt
+ end
+
+ local bigtype
+ local boden = {x=x,y=ground_y+1,z=z}
+ if pr:next(1,15) == 1 then
+ data[vi + area.ystride] = c.dry_shrub
+ elseif pr:next(1,80) == 1 then
+ make_circle(c.riesenpilz_brown, boden, pr:next(3,4), 3)
+ elseif pr:next(1,85) == 1 then
+ make_circle(c.riesenpilz_parasol, boden, pr:next(3,5), 3)
+ elseif pr:next(1,90) == 1 then
+ make_circle(c.riesenpilz_red, boden, pr:next(4,5), 3)
+ elseif pr:next(1,100) == 1 then
+ make_circle(c.riesenpilz_fly_agaric, boden, 4, 3)
+ elseif pr:next(1,340) == 10 then
+ bigtype = 2
+ elseif pr:next(1,380) == 1 then
+ bigtype = 1
+ elseif pr:next(1,390) == 20 then
+ bigtype = 3
+ elseif pr:next(1,800) == 7 then
+ bigtype = 5
+ elseif pr:next(1,4000) == 1 then
+ make_circle(c.riesenpilz_lavashroom, boden, pr:next(5,6), 3)
+ elseif pr:next(1,5000) == 1 then
+ make_circle(c.riesenpilz_glowshroom, boden, 3, 3)
+ elseif pr:next(1,6000) == 2 then
+ if pr:next(1,200) == 15 then
+ bigtype = 4
+ elseif pr:next(1,2000) == 54 then
+ bigtype = 6
+ end
+ end
+ if bigtype then
+ tab[num] = {bigtype, boden}
+ num = num+1
+ end
+ end
+ end
+ hmi = hmi+1
+ end
+ end
+ riesenpilz.inform("ground finished", 2, t1)
+
+ local param2s
+ if num ~= 1 then
+ local t2 = os.clock()
+ for _,v in pairs(tab) do
+ local p = v[2]
+
+ -- simple test for the distance to the biome border
+ local found_border = false
+ local dist = 5
+ local xmin = math.max(minp.x, p.x - dist)
+ local xmax = math.min(maxp.x, p.x + dist)
+ local hm_vi = (p.z - minp.z) * hm_zstride + xmin - minp.x + 1
+ for _ = xmin, xmax do
+ if not heightmap[hm_vi] then
+ found_border = true
+ break
+ end
+ hm_vi = hm_vi+1
+ end
+ if not found_border then
+ local zmin = math.max(minp.z, p.z - dist)
+ local zmax = math.min(maxp.z, p.z + dist)
+ hm_vi = (zmin - minp.z) * hm_zstride + p.x - minp.x + 1
+ for _ = zmin, zmax do
+ if not heightmap[hm_vi] then
+ found_border = true
+ break
+ end
+ hm_vi = hm_vi + hm_zstride
+ end
+ end
+
+ if not found_border then
+ local m = v[1]
+ if m == 1 then
+ riesenpilz.red(p, data, area)
+ elseif m == 2 then
+ riesenpilz.brown(p, data, area)
+ elseif m == 3 then
+ if not param2s then
+ param2s = vm:get_param2_data()
+ end
+ riesenpilz.fly_agaric(p, data, area, param2s)
+ elseif m == 4 then
+ riesenpilz.lavashroom(p, data, area)
+ elseif m == 5 then
+ riesenpilz.parasol(p, data, area)
+ elseif m == 6 then
+ riesenpilz.red45(p, data, area)
+ end
+ end
+ end
+ riesenpilz.inform("giant shrooms generated", 2, t2)
+ end
+
+ local t2 = os.clock()
+ vm:set_data(data)
+ if param2s then
+ vm:set_param2_data(param2s)
+ end
+ vm:set_lighting({day=0, night=0})
+ vm:calc_lighting()
+ vm:write_to_map()
+ area = nil
+ riesenpilz.inform("data set", 2, t2)
+
+ riesenpilz.inform("done", 1, t1)
+end)
diff --git a/mods/riesenpilz/mod.conf b/mods/riesenpilz/mod.conf
new file mode 100644
index 00000000..70223baf
--- /dev/null
+++ b/mods/riesenpilz/mod.conf
@@ -0,0 +1,3 @@
+name = riesenpilz
+depends = default
+optional_depends = digilines,fence_registration,technic
diff --git a/mods/riesenpilz/settings.lua b/mods/riesenpilz/settings.lua
new file mode 100644
index 00000000..b5b99af5
--- /dev/null
+++ b/mods/riesenpilz/settings.lua
@@ -0,0 +1,25 @@
+--This file contains configuration options for riesenpilz mod.
+
+-- mapgen size etc. does not work
+riesenpilz.enable_mapgen = false
+
+--Generate giant mushroom biomes everywhere
+riesenpilz.always_generate = false
+
+--Enables smooth transition of biomes.
+riesenpilz.smooth = true
+
+--says some information.
+riesenpilz.info = true
+
+--informs the players too
+riesenpilz.inform_all = false--minetest.is_singleplayer()
+
+--1: 2: 3:
+riesenpilz.max_spam = 2
+
+--3d apple
+riesenpilz.change_apple = true
+
+--disallows growing a mushroom if it not every node would have a free place
+riesenpilz.giant_restrict_area = false
diff --git a/mods/riesenpilz/sounds/riesenpilz_head.0.ogg b/mods/riesenpilz/sounds/riesenpilz_head.0.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..f634cde00d41a2f3d3f3a691109daee9de72b00f
GIT binary patch
literal 3737
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
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/sounds/riesenpilz_head.2.ogg b/mods/riesenpilz/sounds/riesenpilz_head.2.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..8446c60ba1781f1e36096a50d63da2a385bf6613
GIT binary patch
literal 3700
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
M-MY*LB=GWo02zetp8x;=
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/sounds/riesenpilz_stem.0.ogg b/mods/riesenpilz/sounds/riesenpilz_stem.0.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..5cd6f0d1b82ea63dcf8f4a48c4401373926e8b82
GIT binary patch
literal 3624
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
M=Z9zBGn2u80H1KhmH+?%
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/sounds/riesenpilz_stem.2.ogg b/mods/riesenpilz/sounds/riesenpilz_stem.2.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..02119f41c8ffe0dfd6f45157d7c00df53287910e
GIT binary patch
literal 3600
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
KwO9s-mHz;}kitU%
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/3apple_apple.png b/mods/riesenpilz/textures/3apple_apple.png
new file mode 100644
index 0000000000000000000000000000000000000000..81ce4721a3c9990b5bca0337b034fa8708f78268
GIT binary patch
literal 252
zcmVAh2=bm$g
z2|q#MKLovHslP6NT=^fTr%U2{@`Ho#p^jtat=2(=!X_aDZ4ZoS>~fTQ8-)zJm;lbkIwnl7wL2sM1qBa6m`zdzU-1Be%P)9Ht%6Aa0000Z
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/3apple_apple_bottom.png b/mods/riesenpilz/textures/3apple_apple_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..e1dcd9aa2f65aef52f42df40171ffea576184005
GIT binary patch
literal 236
zcmV
zF-ikb7zE(&yk@uhlelAq78*Zc3?
myQ6`cio%@RG70|Um%ag-#4xPkxE{&?0000Zu4aSrz|#slIUo5VQQh;rEYGprQlu=8QE@nJg5#&Cd@
zVJj=cW)_B45ssD23`>|9=CLsJGc$BCGqf@@G&3G5feip6GIULLjeOrE+a!W
z14AYwLjnUsJOe{C14B3iLl^@?C<6n~nI`FP?*ZM`?&;zfQgQ3;oOCF348F$FzDTBXj$jP08Z$4;L!aql+m5lg^D8QC
q$(WRt!N`2(F=uDuRnGk}F^o%htJhg2x=R6_#Ng@b=d#Wzp$Pzk_H7OT
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_brown45_bottom.png b/mods/riesenpilz/textures/riesenpilz_brown45_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..30a0708a5d2e7a09b95e218836242656a2886f18
GIT binary patch
literal 108
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMj(L>zSEpGt-RIj2Vi1`-Oml
za-J@ZAr-fh6@(0eTxFH5W_NOWvZy)SF#0ns;1MGOCqILL`QI~>fGQb0UHx3vIVCg!
E0GDnV_y7O^
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_brown45_side.png b/mods/riesenpilz/textures/riesenpilz_brown45_side.png
new file mode 100644
index 0000000000000000000000000000000000000000..61fc3bd32a73992c348ed0e9112f84158e8052c2
GIT binary patch
literal 105
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`2A(dCAr-fhCEOmIIkV;el7uz0
z(w9jt)=*OEyIK~+v-k>ki{mWA!}SVkD=Mxu1Tr(|^{);!e&`M|l)=;0&t;ucLK6T6
CxFI|M
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_brown45_top.png b/mods/riesenpilz/textures/riesenpilz_brown45_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e3e31f004cbe86ba38557181fa35af4913319c1
GIT binary patch
literal 112
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>&!IcGc(h^vu^wYlJInK
z4B?PvJ-CsVK|z3F;q7`)^9!H2lLZ!OFVYpBc=e+2Ot&NKUlz(Y_3wQ+2dII;)78&q
Iol`;+0IIAYLjV8(
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_brown_bottom.png b/mods/riesenpilz/textures/riesenpilz_brown_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..43b32bad9e0ea5908681c8b2b14d95b052671b8e
GIT binary patch
literal 319
zcmV-F0l@x=P)P)t-s_sgc`
zyOid%liRb6)vb!xtb^C5ht8&h&ZT_QqI=Mzb;qB1%$#<^m}EI+ce`SQm8>suz@+%{G4PNqK4GRBf1zhDN3
zXE)M-90yMq$B>F!$q5pylP(24dQ_9qB$RaM&!Rmml9Zg7&g3-RkD5JYD@<);T3K0RV{@Q-J^g
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_brown_top.png b/mods/riesenpilz/textures/riesenpilz_brown_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..10ff486253b4d14fec74132665765aa42851124e
GIT binary patch
literal 186
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJe}GSjYnY*UwyS1Um}PgG$Lz8Q
z@3=`@fKq9mE{-7;w{%Z8axxfjFduw!|8KgU7q@89tSMLC={R$U-FzP)^dv#zvt#vS
zHF>?Shrh0`-Bz&CGnn^W!EBXOqYi^IUgJ~yb{|V?&hsvDlwAJ*?op--&lbc6cyS5d
i^e7AGD{&3_#PE9w<1-0{m+yc!GI+ZBxvXhX4R>003|5ikkoc098pu
zK~#7Fy}`o)z)%ncz!%%L&EJ1>Ic^7;!5^Aix^l*J5MS)uc{Cl6w+#3}EozYWOd^D7
z3Gz${7l)Y)!WLKQv}^-uEXz(S&j2|Dv7Of4!4E!ASO!?*t0t@f0000FT
zFf#sUVED$ua*K!OCmY)aDXERp(vL(%U&+XPQc?M-t$oSH=CZBr6FKeR|PSq@`;rgvQ_GFs<|2R{GPgGek
gc*Go4EiHr@zRzO5uKKT21!y{hr>mdKI;Vst0BFB&Qvd(}
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_fly_agaric_top.png b/mods/riesenpilz/textures/riesenpilz_fly_agaric_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..c721b250a78e7a32e21249a804307e62b8274e0e
GIT binary patch
literal 214
zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQat^qzFu7?jF-m_=Vu3fvo?Y)Az0&4e*(*jn^ERf%@0&)3051zJA5|+GXcU
z=bbN}cRqH6;n6+kBZnCt++nzJh2hk3hQs?Ac5G!>x0+%89EM5#46V%!u`vuG!A8f=
z{{xz1=IP=XQgJJJfnq{Za=O#A&D;f_KW_!@pqwVS97*cU7c>!yJNQ2RoDGDZ&J2x}U
uIQZsK5<}t!H4TR)H@IXJx^8ecurP#uU{3sKZc+!-#^CAd=d#Wzp$P!wSTh3v
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_glowshroom_top.png b/mods/riesenpilz/textures/riesenpilz_glowshroom_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..2546bab7393b668c78c72f52ce6b8104d0fc1e4d
GIT binary patch
literal 105
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t`pzAje7Tn;oYmATV|7h
zg3_KYjv*Ddk`M6i5M$uH%Av4OiBau9Ob3e}14CXj({aYU_u)Wg44$rjF6*2UngDyb
B9m45*8_(wt6)}M_T~(t3
zK6b#DHE3uATBZ#Ry9}tz{v5?
z)J>=xHq;I>Hrl-InD+ANKZ(DS3M$$PB0%
z9=L)8CE`FbkQkT_hDW<{;m|u?4TwM%A&cX{WE1B|HnJn~%Bw##oO&1M$lljqc=L@Kf-AtRjlnF+@)$;OsPj!J!WCtRH7r+$d{SMEq(AdJC*$6w-Qp&q?
zaZU-o{L0PgKJybJ1{5c3+>wF2~vIdq`tq{jTUfk_^20c2&1dnS#*E
z3ccsqzqiUC96{H4E&l3rYp&d1)^n+^kb
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_ground_side_normal.png b/mods/riesenpilz/textures/riesenpilz_ground_side_normal.png
new file mode 100644
index 0000000000000000000000000000000000000000..57715a7f82e886971b5bf77ac8e975c027e41401
GIT binary patch
literal 631
zcmV--0*L*IP)YJRN=obAfeGK0*cyzyADnmO<*ia@3;-{-I8-
zCG>t&Q8SbnK>*#CHg)oV}x#gmQ$rZ8<{Nx#TPS0XU^Scf{WMt!ooQI96qLDtfIEjQ!
zl7&69EPOVsGQ!J3StbpMI}0x*1M{T}AXmq`B7>DGCOS;aWSf+<2NO>m3D8~i5}
z!Bg4#^x|ZRH6JZeQC9Ig^2xz;Z{&EgY@VBZtt6Y`)2_OWyXky3nTI+R%n|tSMx~V%_D1s8qf>b)5`f6k9-qG`J~Obh3>p>x
z?W0e{o3hJ3YoM31MzshE(5-47(thQWnD*nB|IZZ2gz?K6$N~skL>Yz*006U|>Gp(}
Rfo%W)002ovPDHLkV1mco9nk;)
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_ground_top.png b/mods/riesenpilz/textures/riesenpilz_ground_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..85efb556e27adf5d0ea56de7232dc64bcf6223f8
GIT binary patch
literal 619
zcmV-x0+juUP)Px%B}qgSy(|eSPkqB4`;HR&*=Wu^59@H-BpDBKE{Hl-6$G{S@8s+V$9p6?%EmRUNQ`tfeLarEB%oSbtq5Hh?
zHn5Z|#{&0iFAQX8eUB|jlQBI~FX#)#WciW$5R@+Dj^MpSJsQTg@sSNCZHmim
zQ?`+WO~xN<&o&GR3|
z!JbUR5&XsRVqc8jLOc^cnHxfYv|{=!)i3Y*_T%#EjOJuNY~Ekd9Zq*r&p^Awui841
zx$6}WXBCyoYWXg)fDo@Q!{$88v7>54jr>NT`&^7o8p1M}@oq+$!8R9z5JAYHAZ9gn
zD^8AuQo)E5H1t`kC`AI3k)5Cwy%(ZbKdcrTQ8t)0&?Hx&Y$7YmQdDcZ3(0r}mjM|l
zYB#V}M~FStq;Un<&{d3HB1@69ZfJ3u#cd4Al5lob{{f;jKo0c%O=JK7002ovPDHLk
FV1hbL8;Sq`
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_ground_top_normal.png b/mods/riesenpilz/textures/riesenpilz_ground_top_normal.png
new file mode 100644
index 0000000000000000000000000000000000000000..88cf2b0abb090e30d8c1475d9137fadf9b06268a
GIT binary patch
literal 499
zcmVyvjkPqeFH#;3Oui#CwVUA-(E55M_v2m*$8CQ@CJ)&;B@jK2jy%=wv
zpZ)xf=h|31dZ9FWpm>}NMB30-!i-N$OJTop`QT%xZTN^c(v=vA+vNrVR3`E&19i6#u)X2+x&Ku_FLcI>+S_lOhA9iFR
zCQ>3g@0$j`an>7V@ib9Fp#XKLhc
zrliP~TFHrQ_=*}|iYd8cUqoYG$;#j5yj_{PVF%vGfo#KqebR*L=|&0ckwqy7!|cpd
z3hLR6T&P0_q!5g%WKUQaLCQFkh)+zZAdV7g$FSh?cu^`*$6C{%NJk1PXlHVUi}XMf
pq9-LVD*smw`_*=P_g(-1002ovPDHLkV1i)#<~#rZ
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_growingtool.png b/mods/riesenpilz/textures/riesenpilz_growingtool.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3e7b539a47ca37d927800a5bfeff3d47d787cae
GIT binary patch
literal 2312
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
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_head_beige.png b/mods/riesenpilz/textures/riesenpilz_head_beige.png
new file mode 100644
index 0000000000000000000000000000000000000000..59b5263a10d5d7f73bbee2dcad7b3429958c84f4
GIT binary patch
literal 305
zcmV-10nYx3P)dLF@&9U#$v-H)vq<9`W0001_Nkl`^iuIa>#ytw=`=)zfEIPWj3ZxTgSRH)G!#s4%Y$eIrJon#Q&hqoDr-0iz3-q(+}E00000NkvXXu0mjf
Dg<_Dt
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_head_blue.png b/mods/riesenpilz/textures/riesenpilz_head_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..32f83b6f96f3467eb00585898f834a18109f28f1
GIT binary patch
literal 703
zcmV;w0zmzVP)Px%c}YY;RCwAA#RJSOIT!}u_iH=TIsR>~ZQC~DtYd7jiZ@!s{$p*twykU1_B}px
zI-R!Py-)DaYcD^KLWbagM2|cthb0GLwylHRLuLV^3c`j{8zEBk0Fc6dBW5qA*$1Fp
z-r1U;I)*G_xdVfa8=KM2sBnos_ggs(yYoQ4`Wb~Ni>5v--2wo;tq*36d*EUaq0i6`
zIv3S@OE*DOp^~}QU#UWEKn%BJr3Qv90DCPsAZ0kug8^}1k%It$ou}%ky#A4QyxS}2
zGJhIo+hLep2xF@7dUDyjvi54|Ekk2_Xg%rc$aWqQ!vz&jD|2jp`~M{z@nYyXIdV-9
zL5cnV!-}%VZ>kx?^dl62-Gy00kZQtxDlnA;CeE`m|S|411Wf+GXr8|C!Cdf6){T&~&
zJ*tKu4lyZI7DZ%z)9Cr%l3UC1mH|K12m>FN)%Jx_u5db1PdDoS3+t7WMiz?>Ww`EBKE-i&6TN>{?H
z_7q~a--kvbt2H@#iMP8zSyUX71A&F_pE^&-$MpFCL-h6nwX+lALNr~AW<@+sL<{Ii
l^a++A2p++HW;Vn3aR&HbL(2VNzQzCm002ovPDHLkV1k$zLRSC)
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_head_blue_bright.png b/mods/riesenpilz/textures/riesenpilz_head_blue_bright.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0c402332206fda2ab7ae6f73fc0a8f76c2cd935
GIT binary patch
literal 742
zcmVPx%ph-kQRCwAQPy@_uM-cvIckj72o^9J^T-%6VtOm912DNS5*0asu*El{q#l)G<
zboIIC(#REZW{w9CeEvR-TOcN9*&==7d;HS~n>)BqE1}eYj|Jv2_?75t@ICam7V&7wflPRUCJWHMhnt1_1N7_3XdE0ka7l
z@wi|j=h3*8u}dHTw=lVRrzOP38FB&8C<{Oif&WRL*X?_oJ>IehDGMA9%`%Of
zrov~;fzfc=S`gg#4(T1=^MI0b9*W#|7JF&;$E)<_FUhzfY;@VoHf!5q$rFzoVh_(S7U%7!nE1E(%w3K-wK)-M7!bYO>x1{^i%u1ql=pF&`;L0#y(>D&Hh?Z;TWr1HwE2WC00;2oOjsvTEKZe>vanabMhx3L#3!gOBfb`k{e;
Y0Khy|)rMr34gdfE07*qoM6N<$f=HTV*Z=?k
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_head_brown_bright.png b/mods/riesenpilz/textures/riesenpilz_head_brown_bright.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4503c01adff74fcdd9b0d439db3f0e5ccc25513
GIT binary patch
literal 186
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJe}GSj>&z6(EsYV!XBOOE*Y@tv
zZ2k|7dx27Eo-U3d6}NOxH*zu`uiaL#(KDF$T)}LWRHF`qGG60T`*t5oYtHj7ag<#C|L#$y3(pqB26%A^
j-t;I7=PPjy`o!>i3F9*fhL`VvHZpj+`njxgN@xNA1%X7>
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_head_normal.png b/mods/riesenpilz/textures/riesenpilz_head_normal.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb7b1cc802b19dd7e973022a27ce4d895a226af3
GIT binary patch
literal 522
zcmV+l0`>igP)F^{FJy*!ks$UqYZwA_2}IMw3*5M1u)7gMVA}_DTF}
zRxr|Wz`?KtC7px-lmW8n;yPk$CKRs#;*=?MhEY<;KoTvl1n2S~B6hk&Dn%VnCWmdj
zC)~8Mo%A@OV98u@P$(P32uEFUXV=I4fsQvaA1O623=9W>#^FR5S;;^>X)d@iJ$&GQ
zewXo{-rYwV379em`zhN+G%sVo(E+5#oG+^N#(y99vj;tyG)7G}i`Z@bM)GzU)rf}D
z6mpMt_)%nOmlxE;g$$lgu|L$u`%X36f6jMT-R|W=wU>&_oD+lC;}sS5up8p$z4oHb
zzqj&j+Iuno7Nti_@%
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_head_orange.png b/mods/riesenpilz/textures/riesenpilz_head_orange.png
new file mode 100644
index 0000000000000000000000000000000000000000..46c5fd7070c312558d0d0ecee57866a2e85f43f8
GIT binary patch
literal 578
zcmV-I0=@l-P)Px${7FPXR4C6)QcG(SQ52qk^nuIS1}q41BicGzAF*v3ACq>HSd&mv+bKSZBUIXe
zUAS?hGNo>OpeWVq4{+nc|KK+hh76OH=bR}jT!wS!-t)cAb=U;EwtCRo2RmS3b);xA7hKYn^xbUNAMZz_b&sc|VFuZ@&pCz3Uif?r
zhG5?ad)h2mY=PHNe2jTg8m?h{5Xqj47{7}YegL)&Uh4ZucdJ@7QGAGbN*bCN?Rmxb
zxcC~69(k&@gHhy-Uq{(XKiP7Vft&4_q@E}G9p&9HcJVX|-hc=wzQwAl1u@1u5EZ&+
zOVe!=&{avL6Df+rm|JFGv#O_()lG07Z2WC7ywV9TVzl9n-$dCnKWVu7a|OI@DA=$nBU?`CKUHV62rU&XfdlgK69p#^Q
z7*r$;UieSvs@)lA;pkA?I{C@ZqvK@mP4g`1A%8y~D?NzlE6DeE#L48x
zr*vgX6KtBu(4I;8mO3iT$)1P2Y|es88cwI3soz&mux>%iyLxEqYe<8N3|Bgx<0$8h
z=Nx$6B5GNKZ))c)=>AMOA}4zrD#n5iMX5wg-30iyty^dfr0q)aC6>7U0ROY8cG7_>
QhX4Qo07*qoM6N<$g0qPx$+DSw~R4C6ql8JKKKoCUt|9>cjPAb8PLE2No;<9l78373)e~>pTSE{BK%`(&7
z)3eIeNw9^jQ*TmNXTfG(r;W>7S2QN)-c(62T;`1}y~&lW($-Jg@OAa_J-EV|tnsC{
z(%-r%SdA;+cCJ6JH{HV5siJki^B_5$9o_>BHZss4Ve^+}Mr!KhIvm_0Q84zWEi%CF
zPiw)pROc{LXW?mPMkn6o_uDDxLV>;No-f1C>*dh3KPW}mZd0H8?f%s|Q+Qh{N|4)1J@wyu35ZR23Jn`9
z#2uF~2QNKHa#gZwX1}fnu@x3sR+Wl_RTgwM8qGcD7{JMzO^OGK_rni$PD*np7Nujv
i*Dm(cgU-i&fb$<=re=oj#dw_n0000Px$(Md!>R47wTQoByWPz=o
z0FG$(PywJ%vuWkGysPEK9#M2v;!79+Yzd%4@r{+e+1aZdk1TL?DIQx=MH+@SDG@vC~9=AS_xj)yC}3qU%p3f1(r
ziky6pem;XRu2VYMknsG&i@ar-8}DbTxL>H`;TXx?x?~IEu(KHZE0MeWU0;A!Li$t(
z^AL@krR*JA8=#nPK>FAuUkgUJ_`I&VB6M#xSJFrx*HJ^4f>t%fw>7)2c1t(dUBWg;
Z^aF1*?)0z|4|o6o002ovPDHLkV1mKl?Pvf1
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_lamellas.png b/mods/riesenpilz/textures/riesenpilz_lamellas.png
new file mode 100644
index 0000000000000000000000000000000000000000..679fee4fa3321306e75dff657d3eda5e6da6df2c
GIT binary patch
literal 974
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e#^NA%Cx&(BWL^R}5&=FTt~a*!
zpI%mTY);9Z2`QVJBGy!RFUYo=5~F+Ku05o?kvAv#G9L)I6
zc;&*B<62(*CDBv%zN`{hy+=3uQ(*GHe^pxR-s_&Rd$w0ZtFV7>(0}(-kA3{_SDsJN
zO1u)}b;kSN=YMA%-L^Ea@6tXpMcH$q&k~zwAFqG@8PjZ4zEF8dhR+(!#S;%bkbN}6
z`~UlbTEl-r%-41$U%zD>;&zoI$S?LoZ<%_>q9f|trtLFn$Ys!qWUmjn_4
zr)EiLO~^mKAoZ$`ONPH%_e6*0w@k&mBK^I#J>kFgiKXS-PuDLTXYTk;Onx3P`Af!@
z;<=x{Ob`F7G%cf|+N|W+`p>tdUR^%JaUr|SzrHK1$G$&nw*J2p+CQ#+)3lYBIm0^Z
z!HJ*zj{8r>w|TfH~cshG@}05w7X@`;@J}MZA$z5ufc|kRr#GJX6=aFePN@y
z)Jyr;Q)cVW^cNrum#ny$HPU~DbE$l${aYqs@4pWe4mDw5lNysSFs
z_N%3Ci8^N(``)GRce(yv^_h!m`*E{7a=+@|v#)hBUw`jc-JjfFM#~Cg~G%w4jE)zl?u
zzR&+UhgNy-xO-vTdyi%JFPUPn)g&m?<$J1+<|_H6PnJ$u8lWQjv_AIAMqs{RII!Sn
t@O%A^Q~ZCF>_2q>IiUZEdH)I8aU|x(?+yC*CBF@1x2LP0%Q~loCIA*c-U|Q#
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_lamellas_normal.png b/mods/riesenpilz/textures/riesenpilz_lamellas_normal.png
new file mode 100644
index 0000000000000000000000000000000000000000..430037d8aca7b9251f9f36a7629b0d7b99c425eb
GIT binary patch
literal 3327
zcmV000ceNkl=g3lH#SVYafD^G_eS6gixa`
zXh8aRSQwJlx&yy@W0UcatH?imv=g@{S>e4+klDV12+tP6KQA@Z;fU3R#cSa>h-Pb!E{5r
zbrHVo!E+%+?4I(jQSDS0aE+gXBdJd^i92JWuy(OTBl*oKwl|Lm5n(-9a}O@>-;n8?
z$*x^rw4vvM>BE10F%a9vA=mR+3p%i_XhO+NgwdHr6n=v9)$6O@Mrx(}&Q8^*o-YdP
zY~;hAV;EQIITJgl8)kBd7MN#a3}PaK^<6+*QshabU2V*=*o)ypG!M(*t*yDnQpkZC
zMD;aQ20CWyov9GQ9g-t?)&4#9N$dlf`BOjWzjG@n*pvFskAzuCp%qQ!=rvaIK#2s*m>TZ~Yb~PEi^P=E8lXPE6sXDG&4{
z3cB_+Em|Re(8DNy9)zeXSzOF9KLNBe$%ov-&N_35ryDYgzjM!ltGXU!I;pz@7oGh7
zigIvot>}i$nRNAD3+qZ*xlcs!6&!`XQ;&(^yU!E##{SinD9K7DCHc<(crXJM$9W_O
z&+{Iz{6jXjCCdcKQtX^>mI3Z@FXpN~jTc1lWE`ohyQ;cv3Oo2Dsih=CeT1`^knAQH
ziOO%jcog3dcathtXQAjik)vMi+nFL4C?UEy0`P5@h=Kv%(dcEWPR7#?64d@UI5ex?x_1n*PY*_siy^Z@sWj6
zu42ZEuH@7L;6h7Mso(DpDP!s;c$}Y@!!F!H!bxp$L0ThdsC*+~gvhNfm?l^SNi;1FJ>*=lL<=
z_i~tHU-tqF*|oT_E#n)`)A+WNbMNT
zB#_};6s0Z*y+|Y~pssg34KN)^2-1v$Nvi=Yp#4to@9F(vjXr;zb*lEePki0=T9Fqf
zlSc2jZ0EK)?h&@+>L4DvrmP}i86C}jv-1ph0~pq`QIkc1SIcJk~k^2^rfC5
z8}LeeFH9!pA6BfQ{wG<$F6PBMteZDivIAu3R6fM3#i-gs$7pA|xekePDW0$)lGXJI
z1h5NpF_WVk85+=}P=3AZVhneLKM!ZZXv^BWi8uWmErTpAE~qM*ezAG4O=pl@7!M4J
z9@%8Bx`9nlc{jmTWB_fZA(rHO5(kwBI@TiDW&pq9TYG)|ev5FQ
z@f;}MevK=3qyk^T{b*jfxb&_1I(+%yF#5!JMUA(DQH_(i*Xj_32&`{N0jZlXT;wqhr#S~QfD
z<%XnL*9nk!v;{FjvGZ<;7FL|s+h41OuTGUF&8ujO{888NZQNYa+5mujYci)t1lpK5
zk}k-I?j&Cp@s?f5arC6UOrlV9hx+IFmUbJ}(Eq;D`4t^;q>a}`|4*2@4nWGx;S2?+
zDn%x?@lCc^kv2nbVJKM8>~TRY9Pvl0=JX&4-N~mYL*&O2nvBJBGWl?MzT>M83>9
z9$_e2Fn?$lL(e+lvL4qAYhEQ7xR^h8639gP^}eA5=$_qE;1!N;@llx;F`smus*4f(;^x02kTUXhyft#gKkpu#
z!K~*~_up(y!;aDI0&s2K7ge<>QQOA2krw>7GNNh;vjA`mBP*x2RVrb!eV7uj-}n5ve1yPs1c^aIa$dbT+jY39yS0v*ZG_Mlt=
zz`@_A+MSTlXT;D?_w&F2Q%P`S5Z}^;o+foHIsjG_yhzI9qJSh(huHiL)i+xfOj8$?
z5&b@$Z92c>`_J{XK0nV{v>AM8|6#9Kf20myNGrh1KttG+ewa+#+563`k9GFnbvO%K
zgN#7gw;Vt7=1_gHCozv{KGGQiGfWq^9|Z~e&)YrZ+n?Q|r?2z=qG;3kyj`ytR+{~j
zvDfPwMVTFLjdqkxtv1*;0>dwj3}6(*6|kNd9M%GBi-+gEGF0yX@Py&g=wHXr%evq3P``Judg7j?*
zMwbg&W`_L`>08ALse5;fUDcqzL$nh1-%i6PV$FEs<3&%|7&kzUq+F$ABJqT%2k86c
zl)nU^QjO{&=!SXb@k8}b98{SOwS$(9u8y9*;bI2CfDyXC(RMONcp8l880hyOX|D>m0(~AK-0B{3CkC?N)CSK3T=t#Vs^ngf_{=*aS
zK-rza{wugJsKQK8OE^~vm522uo&b2*J)+PfWzTK#$E^bPx}b^-Nj3x>GtXrX1*#nH
zv4g}tj>|*UA6*3Sm`G2fip;`dP6tykyfVR}&UlNCSHo<*lXk6IGr
zv}=JsZdozmFn8fY!M!WdDU%R4kkC`M>fN6Z=AZc1+YZm@w8G=_tr_c9F9Co@wCTdA
z`aG@|6O+so#_v#f#oVASv_u$&!916VQviaYW-Qer-ufd__7;t~EvXJSd|ixE&H^5c
zE4!=%lmkG;zr8lG8M9(=_>yV<`k&G>q1VV;SI_OB>f%v*78dj>`wJX)-|Ery`Fbo34>E;qweocb-her
zIrmz}^V|{DIyjz*=g)5CcLlb3IFDCldL1NUNG3F+Q@Aq5(Ohufndk9v?kk0hRR7)q
z_yv08{X0*0ivB8n^kfxh?zz9eZ|`fUCfULRatq@EFcH)9>T$RJnsE14Y)EaD9iDhQ
zfO)pVe#94lSMW9ZZtm~zFO>P}X#cOx3^W@Ef&e;STq3T{7EAZ!8lj-S+tGVwwU+|$
zNH`K?HZwaj@6jLXvO4j5@`MxRI{L-mwL>yd^ECoE%KGK|v7Y?HjgOxE!(_>mz|Jnd
zCETC`;o6={jirz2AHK#BfXwez|1j2!cbVU-{$W2-XqWlD>L13E@oMsWt_0CPkeShC
zesB5*YBGk*?^XZM2telds()xKG%~+e{R07XlizQ(4|w7s@_RbvYWfEPQ2G77GW4qcAxwVHgmRPpLv)ef
zvn_mx{(%TX<@Xer>>q-a#p3rARX6>^8!5D<%I{78K)J@np5{HSovp`8S^V{YI#h-&6PGda>x%c(}t)^D=<|
z{GN5M@r-}C=74JbN59iQ6viut*G~SSC;p*0`@LSA(Nf2>W=CA+&002ov
JPDHLkV1jeiq_qG5
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_lavashroom_bottom.png b/mods/riesenpilz/textures/riesenpilz_lavashroom_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..536237804c62abf3a3e8391681f533daad49025a
GIT binary patch
literal 137
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b{eMpNNu0y$V1{S`fiw<|
zE%QXa0;NnnT^vIyZY3-5ad2vBHA;4!Ve3g~ThQ65Fk@j((j%5s3F$^jrgM5t0&N?Z
hg_!@pqwDG77*cU7d4Whl9w{R;SX9tO~{q8`xO3*YA5N4%Eot>FVdQ&MBb@0B3|p@yVF3Sb0RL|Q|AGMjh-3eYW&4sc{gN{NlQRF5Gyjz{|C=@coHqZL
zZO^SI|DQJhpf}R6DAchi|D!nnraAwoIor1?|FS**v_Ai~KL5Bs|G7Wv#4Z25LI1u%
z|Gz>1%|`#uNBz?<{?su4+A{y#GXLl`|L!*b|33f!KT`ztX#fBKS4l)cRCwB)$b$_4
zF#rI-w{6?#{^K<&<6eAH!V!*rv8QPqa5#sxt>Eu*R9$B_OKhjW^IQU7;e^^-ELf
v@UP1w5q;TtdTxv3e&$jxQVEW1r=tM?HgOXWzG-mv00000NkvXXu0mjfQ}&E1
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_light_detector.png b/mods/riesenpilz/textures/riesenpilz_light_detector.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d94b3ae75ea2485a3e40a3406d41fb1ea7f2c7d
GIT binary patch
literal 279
zcmV+y0qFjTP);UfSjHRT2rKAAO$y%kO8>ONEtf_r-addNWT61wsWWPscx-N5Y0C{&>P)^$h
z07N)7vjhN`0|4y3^2q=I0FX&UK~#7F1;GJAgg_7j!F1vRbErh!`~O$1(q4-#{b~dI
zjqac8z1V;yY0C)?j#&V*53lPa_=>UcIEQmMd3~JHq-DxD>t3Lmm>6(k)Fg3YoFrCz
zOqpW$m>@K5D!s^bB4}0MhPI;wz{w{jtyrJWi3b1x002ovPDHLkV1oS>b-Mrn
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_mush45_meal.png b/mods/riesenpilz/textures/riesenpilz_mush45_meal.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e307a30e4f3d624014b3a7c9d3c8d661c81c668
GIT binary patch
literal 124
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`&YmugAr-fh5AeAioH;Y|f8q~&
zW@eemODfZ58J=Mf@#%W2!N$ONl5N6srV`!^HlcI|fq)DKro&7kM;RvZDCYduU|(2ZxscZ=fK*
zvxKmdl&Gh)sE3Sr2Onp#h)AfiV5W>ry|_T3oLr(BZ>+j-lB!arf>^qWN}Q%zmL`9q
zj#jLJUZ*;Lov}ohp+KFfRGy_;tGQ^lonDoVQk|Vtor83*v+N8fkrgid(>+CtZ-wOo
zZ4dNxaSW-rl^o#8{DiB(*kJRfkH#H`SZ5q*eR|~R6bV7CA1R_Dp*tpodT4(3QdpVr
zDEO(!q-pNgloU047rC~$ySWH>b~7y2;I?kp2w{C%$H>6EU4bWditb6E;S8RxelF{r
G5}E)rvqyFS
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_nether_shroom_side.png b/mods/riesenpilz/textures/riesenpilz_nether_shroom_side.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f35e0f0b02bd0ad401eadc214c6ca2bbf3d6423
GIT binary patch
literal 184
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`^`0({Ar-fhC8i~aOp)^XvpzB5
z$9y%lKlW~(zv`!Sz4;#|oH#*ZhFXS$o%#3wERvo76{IpGI(W@;=E?Hk5Lgt$xRv*?
zs7m#5-|$!aw=cX?zv=K{=kQPa*Duuh$<{Kv>wo{oDQbrq&KyuVKf$Pa;{U09Nl&U5
jy7)h;pSe#Zj+voixz%=`oFx`Or!aWB`njxgN@xNAGX+R3
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_nether_shroom_top.png b/mods/riesenpilz/textures/riesenpilz_nether_shroom_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..0beefe714ec382be2ca3adec59cddbb89b4afd4e
GIT binary patch
literal 250
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}W`IwK>+N{nURkq%R?h3cHex&oC7Vp*E}sahiS;sUYi!ij3U9ekXj%7VcXA|5j0
zp3bP0l+XkK|6EN~
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_parasol_bottom.png b/mods/riesenpilz/textures/riesenpilz_parasol_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7f884244218065a179bbfc33ae7eb92e65c1027
GIT binary patch
literal 235
zcmV
z_4WMi-|z45_~zE`<=y(>%jMDkKY)y3o0$M?^x-qXqL&9L3e
zyXwfL-pR4s!KvB1pt%)#YXATMVM#&C<~LxDxs$;J}M2
ty7haf8_OOX?UK)4bJSn>&(e;|T(R>R@v$QxO0F
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_parasol_top.png b/mods/riesenpilz/textures/riesenpilz_parasol_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..f09a23af6e4ae5f2fcaa4210dfd4b8726b5d912f
GIT binary patch
literal 177
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX{c?Tp_w%b?omhHv_kxFO
z>rbqnaB6wuky$0%Cgd#dDtNm-yaA}v&(p;*q~ccc0d@(|77-R12c1p_cVX5E9hK=-
ztPy@ONkOX_CZrY3zGoQ7cx1wx4j;zVoiB2zE
Z!|v(4Zd-W+)&fmt@O1TaS?83{1OO~AK_vhH
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_red45_bottom.png b/mods/riesenpilz/textures/riesenpilz_red45_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..1648bada31419f2b79aca91a398fc534a43f1347
GIT binary patch
literal 111
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uK$66fng>CLq>SxJD{MV
zr;B4q#jRuxRwf@M7LSfYJM)AaU2cR(Tn}YA#dYusH-j&~sLUD>Ej6HG22WQ%mvv4F
FO#sFq9gP40
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_red45_side.png b/mods/riesenpilz/textures/riesenpilz_red45_side.png
new file mode 100644
index 0000000000000000000000000000000000000000..f01a7210d30db88aec571021a86ef8fa5876e1d4
GIT binary patch
literal 131
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0VPw1H*qH`u~6XQa@cF
zpRpv!FPOpM*^M+HN7d8CF@z&JIpF}?mM{m-Wm6-0d3^LgOD)hb*k~+$Dk-5P!9kf}
X=VYE5H4!Oppaup{S3j3^P6
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_red45_top.png b/mods/riesenpilz/textures/riesenpilz_red45_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..c87282853b4fe41bdcff16066abf35daceef965c
GIT binary patch
literal 94
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJTYyi9>wgA@|Ns9x%9;oQMT9+F
p978H@B`;7)Q1P}^j;zXHWnkXGz!vglQyoy6!PC{xWt~$(698Ex71#g(
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_red_bottom.png b/mods/riesenpilz/textures/riesenpilz_red_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..767f7dffabc5b04b9b670de71d0a825eca55913e
GIT binary patch
literal 302
zcmV+}0nz@6P)~67
AyZ`_I
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_red_side.png b/mods/riesenpilz/textures/riesenpilz_red_side.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e13087595595036b756e4b24105c3f386c11b73
GIT binary patch
literal 266
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyegQrquG6p3_&>_-r;pojd&l2O7JmfwABpIF;?zGbtA33^VT!!e3I_fr
zM%GvcHh)GYD@F!U28P8+Zm)qRGnNGT1v5B2yO9RuWO=$chE&{obLuGL5d{HFVdQ&MBb@0MATf?EnA(
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_red_top.png b/mods/riesenpilz/textures/riesenpilz_red_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0eb0638b49bc44d444df39a0458612b36f3482e
GIT binary patch
literal 263
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Zh%jS>nBeAKZ5$dl`MYSJO1=>
z`yXZZKO^8zX5ha9*T2Of&+GjEH%I*MiTyv(@Bg&KXg{A>K#fy9T^vIyZprorGPx*n
zFkO758Fcsmj_lt@53o0Hwb^#1a?@tTV3#*bi?=B~c=zJqWuCm)nwO3@GSc{qYtB6~
zDPG{h^Jr4XEYCz4gY$F3wSIR^ue#;UvSpe?z4tAk3ubWs%C?`iY~^36^G-p*W>$(R
zRbjuYwXRv8o!laFZdK6i%U=@aJ~kJrxE@z)`-bV$b7r1rXZ!2y&ar;lDl~5|(18q|
Lu6{1-oD!M<^qX-y
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_stem_blue.png b/mods/riesenpilz/textures/riesenpilz_stem_blue.png
new file mode 100644
index 0000000000000000000000000000000000000000..181f3ec6b850572615370b4c2ed9fb2dc65b6c7a
GIT binary patch
literal 625
zcmV-%0*?KOP)Px%D@jB_RCwBAjES`4;m_iIH;LOQo%`(u4n=oBOXCc%$q|R~-~4wLuZ`Gt`gEyd
zv|kgWN)=T>pB$UBef_m(+tz2k-kq7_gYH3k@?0t`r=FtQ8E(&oohz5Rxeq(TYul~r
zoDKy8)FH6S)PCLqKKgm07a$uH{|AQyJB|i^l%yp9(zk`D@#2w%pMpkZr1m&|B{}*H
zUK(KZHlpDdXbDc3JuBtc!4RYoADOnMk5{h$xtMen(nyR-1JD;t0LLi51t$H%O7NH(
z;r1|+>s^NY3&`{2%jkfY*FY?w>0c#Xv#QWLGz1F3g{Uk*SkzCwh5(^+w*Y~V&KM+M
ztu`2oG_aRYQRf&0H8YtoJ8JdI*d`zVz|5?+lO!IArSUlKBGy$u1eNycO>Qo9f0q
zhy<|C;d)q0I0uGW6AQ$*mjBBDOpjEkL(g&kVFAD@98!G|22>u$LOgKl6iJ-i*g@fO
zl&7Bh|9;`FGq2!`wa!of4GE+G1~HFn;+Fr|%aB5Q?#9;;2!uTH9^DbFt$ZQi=uQC)
zI;Gc_63@nSXOZBp6dq&+($rqIlP3jkt^N|=_Gy4YYijS1>rKLw$WurFk3lF9p%R%n
zgp1Q}tp}gs5o%Rz-#h=V?Y0Q2@CII*_kV{-&^}|QVb+=?-gN*1FF1K_JSE)
zi|84=h!cP>_#SZ^n%IF!wnIRzh^yZ%3Px#8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0#ZptK~yNuJ(6or
z+h`Po=NvosYrhU5#tGYyE~RSKtdI~=|4)B2LP85=SG}&F_?C-rvHkk&he(}|^I@LR
zXz0_&X;W7h7k@^xQyqBYU_u1TqRBL@%PLEguJ4&`$91Z*dVKiI#dbSAo^}=sF
z?|0*Hz5tLV@xE=f7XYwq`~7OAgCI{+j^me?U(d&3_?w`|$1(^2!9YZT9y42MlAeT7
zny+~>Icl3$DfMb`W;<3{RU(5C38NVRBC6}cbX}IjdaOl+We^Ync)wcto=#tW$uJB<
zpCz#vY`5zlU;ZVgFq(C3FCyHT0RRDE7&*%IgK=FJLvO-pW=s#DEKAo@0P4ETlbCng
zEkp>EWl7t##59>sWss9_CSrbm|FS%PtCW9tdsCHFzTU7N2VM{~P5pR(Uls)spTB))
zISv3KZmRnAn+s;^^6L7qihcg(Vz*h77y!nYa5~-OnQ}(}Y-fZLKYx7dx_+JIuIGA6
zF&*Ax`a=MbWz1mNBLK=(o(^P?eba=|Oeycxa>-2e^!&_hL10@`{9z`?1{!s71TyNjLdmpD01wzNER`fQVlQM;-6EE_vON5lZD%@N$4S=`;j
z=h`-6*0#;CcH@-sAC_?$)VA%QZiC{n{J#}&4q8i2hO=wXUkI6b)6ftV(MX|
z`u%=Oa;tUaeJsX_9#+dDFq
zD4ss)xD%dxc2(QlsyDB?;=H$BPY5vZZ(eZ~42Q$H(iXfjZr5FQ>qstT5(91BwtZ&m
zK!OS`&6XTG;)w|Xwrtr_S=&Spg3GP8U;w^}fA`&YUqB9lG}dq3x^+|=<$^>CQL*=O
zXTRmFouYSExflr~<=u9Fm&F7q42$ZAAAVS=6$2uWz~`4;){=PFmtXHF7T&$}mUTsO
z^y80uMqWPW41sX$!w+j8K6v1M<;>YnKA8#$PVxoJfY3M=ZER^wEK*q$*U|)mh#A90
z3T=@L1_Q4xAf+y7Cb*9Wh(z3b@4b`QH;`Gmvg3|B?v^cPj0L1prb(7X2Sh3eA==v|
yl)I)2u`6b+bD@*UU3c9zt{gdCpwWSYwf_OW$aGMy(!D)3`|UcOIPelh-PD8;^5~BUbl6Xj~5G|
zA#zx_B!>d<7EC9Up=WjgPiUSl}t{78Mk^?z-@Ze-CXPzLaLx&Fi3%FQ064__>-Vf+$
zIwjkZ(m;rFt|R4+?b{kbaV0ZBcW&P)2(z^rg=)PrRS5jKUw^fA%_+Td<;wK*^u>!8
zrOHCiRp5OXEi5gB7!_l~+PgStKt?{i_l|UTKvxE)XRBO@&7uGv6iF4cM=xFK^?EyY
z>@dd6&(H7Kvxj_o?_C6lMh`%jw5e*#fwxOlK)GITXv7R?TNKMxe~4Hx$|JBy=H{ZH45YKmLdrxeaf$_X)xiZ@*7S>||va4WEDay)$Rdr05e$A;jK2`|={=
z46}v=#$&AFK-cMSabz7J;~W4!eBc2@oJv@8Q8JOD;MQu-e9xj_swqOd)8ZVg4L*d$
z#YG=|t7vpX?U8$ij4=A-58vGO`dg`>>vc6mwAy%&Eh*EGN)RN`dI?m6V}uwp<{9
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_stem_top.png b/mods/riesenpilz/textures/riesenpilz_stem_top.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ff09e2082e0bee102c6bc5e88bb88a6427f86ff
GIT binary patch
literal 130
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9YkpSR?U%3aZ;eU>ikN%4
zIEHY@CNnVow&&sV;rX{;f@z7wp?ZUs41<>a2^{f91Qs0?sP8)H-lh0oxS7eg`ENZN
bTN#7GLmsa1LuqS(Mlg7~`njxgN@xNAG_obB
literal 0
HcmV?d00001
diff --git a/mods/riesenpilz/textures/riesenpilz_stem_white.png b/mods/riesenpilz/textures/riesenpilz_stem_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..5b97c1a03a27d70ab5b25d8e5493d7b798178a51
GIT binary patch
literal 519
zcmV+i0{H!jP)kf5lzB%mbnT9cj!VK4@lOg;VU{a@Vnnyih1PsuWqF1?6{l+xOJtu5uEL;wHp
z@AZ58cz=I+dc585bBw3w$M?5qb}|nqiaBR3je=4{N>tm@S|g&L(GwAiNMbzhM>_8M
z94zb}cmYBphVEdInS#g}Iz9}{KmBL>UOA=d#*!f4wslN3o6G6s5jqS)C(plKR>;>i
z!Jvvn6!HH4AxyK+`}Mr78>T{96uUXPj;`C*b=p)fB_rkc_m|G;ZmphF=TIdy4$u#u
z_WfCqiNU8V0)(0QF(RBhJ25njSirJyW;vQAi)hOtMRuZlhjr+VVuqf>X->27<$TsL
zSTG2k&ZjJyj@rIARS+fc0X7OF_nOO6t4DAGB482$4BxTM%{`b86fTH0$q=d3I>$s?
z6jGvX*Dfp+u@C#ZlW-^n)LLsP#bT!YG3l7SZ<4bVJPP8Kl6@MyOvJ4&u(ej*4JiC)
zU{=+s=yp1tmQypep@X2#Ei>e`UtP))9~KZM
zRH6*SV&guM!YV3@r4bao*hD^ImXb?Y?B&GJXl(M*hg%@lSVya5!;}gu(U{7}qK2s)sa4q~<_6+*wVXUyyV4UBVZn
kdEC8o;(P2U=NcpY1-kRD6V>=@>;M1&07*qoM6N<$g0I+^IsgCw
literal 0
HcmV?d00001