commit 12c94adf094928b7d17da8c9346087034c34faf1 Author: kaadmy Date: Tue Sep 1 08:15:24 2015 -0700 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9718a70 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*.blend1 diff --git a/LICENSE_CC0.txt b/LICENSE_CC0.txt new file mode 100644 index 0000000..3bbbc1e --- /dev/null +++ b/LICENSE_CC0.txt @@ -0,0 +1,116 @@ +CC0 1.0 Universal + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not limited +to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + + v. rights protecting the extraction, dissemination, use and reuse of data in + a Work; + + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time +extensions), (iii) in any current or future medium and for any number of +copies, and (iv) for any purpose whatsoever, including without limitation +commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +the Waiver for the benefit of each member of the public at large and to the +detriment of Affirmer's heirs and successors, fully intending that such Waiver +shall not be subject to revocation, rescission, cancellation, termination, or +any other legal or equitable action to disrupt the quiet enjoyment of the Work +by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account +Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +is so judged Affirmer hereby grants to each affected person a royalty-free, +non transferable, non sublicensable, non exclusive, irrevocable and +unconditional license to exercise Affirmer's Copyright and Related Rights in +the Work (i) in all territories worldwide, (ii) for the maximum duration +provided by applicable law or treaty (including future time extensions), (iii) +in any current or future medium and for any number of copies, and (iv) for any +purpose whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed effective as +of the date CC0 was applied by Affirmer to the Work. Should any part of the +License for any reason be judged legally invalid or ineffective under +applicable law, such partial invalidity or ineffectiveness shall not +invalidate the remainder of the License, and in such case Affirmer hereby +affirms that he or she will not (i) exercise any of his or her remaining +Copyright and Related Rights in the Work or (ii) assert any associated claims +and causes of action with respect to the Work, in either case contrary to +Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + + b. Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without limitation + any person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions + or other rights required for any use of the Work. + + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to this + CC0 or use of the Work. + +For more information, please see + \ No newline at end of file diff --git a/LICENSE_MIT.txt b/LICENSE_MIT.txt new file mode 100644 index 0000000..bf53817 --- /dev/null +++ b/LICENSE_MIT.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Kaadmy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..e76798f --- /dev/null +++ b/README.txt @@ -0,0 +1,13 @@ +Pixture +======= +By Kaadmy +Extra-special credit to Kenney(kenney.nl) + +Special credits: + Extra-special credit to Kenney(kenney.nl) for the inspiration, most of the graphics design + (All images are of my own creation but based off Kenney's), and the overall feeling. + Sounds in the default mod are all by Kenney(CC0) + All textures/models by Kaadmy(CC0) + +Asset license: almost all CC0, see per-mod READMEs. +Source license: almost all MIT, see per-mod READMEs. diff --git a/game.conf b/game.conf new file mode 100644 index 0000000..5c1185e --- /dev/null +++ b/game.conf @@ -0,0 +1 @@ +name = Pixture diff --git a/menu/header.png b/menu/header.png new file mode 100644 index 0000000..4ff4abb Binary files /dev/null and b/menu/header.png differ diff --git a/menu/header.xcf b/menu/header.xcf new file mode 100644 index 0000000..2e2a02b Binary files /dev/null and b/menu/header.xcf differ diff --git a/menu/icon.png b/menu/icon.png new file mode 100644 index 0000000..16ebf1c Binary files /dev/null and b/menu/icon.png differ diff --git a/menu/icon.xcf b/menu/icon.xcf new file mode 100644 index 0000000..cd82b6b Binary files /dev/null and b/menu/icon.xcf differ diff --git a/menu/overlay.png b/menu/overlay.png new file mode 100644 index 0000000..32d3486 Binary files /dev/null and b/menu/overlay.png differ diff --git a/menu/overlay.xcf b/menu/overlay.xcf new file mode 100644 index 0000000..bd283d7 Binary files /dev/null and b/menu/overlay.xcf differ diff --git a/minetest.conf b/minetest.conf new file mode 100644 index 0000000..b279b78 --- /dev/null +++ b/minetest.conf @@ -0,0 +1,61 @@ +#day-night cycle is 12 min(about) +time_speed = 120 + +# movement +movement_acceleration_default = 3.6 +movement_acceleration_fast = 7.0 +movement_acceleration_air = 3.2 + +movement_speed_walk = 4.2 +movement_speed_fast = 7.0 +movement_speed_crouch = 2.2 +movement_speed_climb = 2.6 +movement_speed_descend = 3.0 +movement_speed_jump = 6.8 + +movement_liquid_fluidity = 0.9 +movement_liquid_sink = 11.0 +movement_gravity = 9.4 + +# privs +default_privs = interact, shout, spawn, fast + +# if you're given the inital stuff; a stone pick and 10 torches +give_initial_stuff = false + +# if beds can be slept in +bed_enabled = true + +# if music players are usable +music_enable = true + +# if dynamically changing weather is enabled +weather_enable = true + +# if pvp is enabled +enable_pvp = true + +# tnt is enabledxx +tnt_enable = true + +# server +max_users = 8 +max_block_generate_distance = 4 +max_block_send_distance = 3 +max_simultaneous_block_sends_per_client = 20 +max_simultaneous_block_sends_server_total = 100 +time_send_interval = 5 +active_block_range = 4 +server_map_save_interval = 15 + +# mapgen +mg_flags = trees, caves +mgv6_spflags = nojungles +mgv6_freq_desert = 0.65 +mgv6_freq_beach = -0.04 +water_level = 0 + +# i don't really know what these numbers change, but whatever :) +# offset, scale, (spread factors), seed offset, number of octaves, persistence, lacunarity. +mg_biome_np_humidity = 50, 20, (600, 850, 600), 31478, 3, 0.5, 2.0 +mgv7_np_terrain_base = 10, 30, (750, 1500, 750), 88533, 8, 0.65, 2, 2 \ No newline at end of file diff --git a/mods/armor/README.txt b/mods/armor/README.txt new file mode 100644 index 0000000..00169f2 --- /dev/null +++ b/mods/armor/README.txt @@ -0,0 +1,9 @@ +Armor mod +========= + +By Kaadmy, for Pixture + +Adds craftable and wearable armor + +Asset license: CC0 +Source code license: MIT diff --git a/mods/armor/init.lua b/mods/armor/init.lua new file mode 100644 index 0000000..8ad54ba --- /dev/null +++ b/mods/armor/init.lua @@ -0,0 +1,254 @@ +-- +-- Armor mod +-- By Kaadmy, for Pixture +-- + +armor = {} + +armor.update_time = 1 + +armor.materials = { +-- material craftitem % description + {"wood", "group:planks", 15, "Wooden"}, + {"steel", "default:ingot_steel", 30, "Steel"}, + {"chainmail", "armor:chainmail_sheet", 45, "Chainmail"}, + {"carbonsteel", "default:ingot_carbonsteel", 60, "Carbonsteel"}, +} + +armor.slots = {"helmet", "chestplate", "boots"} + +local form_armor = default.ui.get_page("core_2part") +default.ui.register_page("core_armor", form_armor) + +local armor_timer = 10 + +function armor.is_armor(itemname) + local item = minetest.registered_items[itemname] + + if item ~= nil and item.groups ~= nil then + if item.groups.is_armor then + return true + end + end +end + +function armor.is_slot(itemname, slot) + local match = string.find(itemname, "armor:" .. slot .. "_") + local matchbool = false + if match ~= nil and match >= 1 then + matchbool = true + end + return matchbool +end + +function armor.get_texture(player, base) + local inv = player:get_inventory() + + local image = base + + for _, slot in ipairs(armor.slots) do + local itemstack = inv:get_stack("armor_"..slot, 1) + local itemname = itemstack:get_name() + if armor.is_armor(itemname) and armor.is_slot(itemname, slot) then + local item = minetest.registered_items[itemname] + local mat = armor.materials[item.groups.armor_material][1] + + image = image .. "^armor_" .. slot .. "_" .. mat ..".png" + end + end + +-- print("[armor] Got armor texture: " .. image) + + return image +end + +function armor.get_groups(player) + local groups = {fleshy = 100} + + local match_mat = nil + local match_amt = 0 + + local inv = player:get_inventory() + + for _, slot in ipairs(armor.slots) do + local itemstack = inv:get_stack("armor_"..slot, 1) + local itemname = itemstack:get_name() + + if armor.is_armor(itemname) then + local item = minetest.registered_items[itemname] + + for mat_index, _ in ipairs(armor.materials) do + local mat = armor.materials[mat_index][1] + + if mat_index == item.groups.armor_material then + groups.fleshy = groups.fleshy - item.groups.armor + if match_mat == nil then + match_mat = mat + end + if mat == match_mat then + match_amt = match_amt + 1 + end + break + end + end + + end + end + + if match_amt == #armor.slots then -- if full set of same armor material, then boost armor by 10% + groups.fleshy = groups.fleshy - 10 + end + + -- print("[armor] Armor groups: " .. dump(groups)) + + return groups +end + +function armor.init(player) + local inv = player:get_inventory() + + for _, slot in ipairs(armor.slots) do + if inv:get_size("armor_"..slot) ~= 1 then + inv:set_size("armor_"..slot, 1) + end + end +end + +function armor.update(player) + local groups = armor.get_groups(player) + player:set_armor_groups({fleshy = groups.fleshy}) + + local image = armor.get_texture(player, "character.png") + if image ~= default.player_get_textures(player)[1] then + default.player_set_textures(player, {image}) + end +end + +local function on_newplayer(player) + armor.init(player) +end + +local function on_joinplayer(player) + armor.init(player) +end + +local function on_die(player) + -- remove your armor(when i get to doing it...) +end + +local function step(dtime) + armor_timer = armor_timer + dtime + + if armor_timer > armor.update_time then + for _, player in pairs(minetest.get_connected_players()) do + armor.update(player) + end + armor_timer = 0 + end +end + +minetest.register_craftitem( + "armor:chainmail_sheet", + { + description = "Chainmail sheet", + + inventory_image = "armor_chainmail.png", + wield_image = "armor_chainmail.png", + + stack_max = 20, + }) + +minetest.register_craft( + { + output = "armor:chainmail_sheet 3", + recipe = { + {"default:ingot_steel", "", "default:ingot_steel"}, + {"", "default:ingot_steel", ""}, + {"default:ingot_steel", "", "default:ingot_steel"}, + } + }) + +for mat_index, _ in ipairs(armor.materials) do + local def = armor.materials[mat_index] + local mat = def[1] + + local armor_def = math.floor(def[3] / #armor.slots) +-- print("Material " .. mat .. ": " .. armor_def) + + for _, slot in ipairs(armor.slots) do + minetest.register_craftitem( + "armor:"..slot.."_"..mat, + { + description = def[4].." "..slot, + + inventory_image = "armor_"..slot.."_"..mat.."_inventory.png", + wield_image = "armor_"..slot.."_"..mat.."_inventory.png", + + groups = { + is_armor = 1, + armor = armor_def, + armor_material = mat_index + }, + + stack_max = 1, + }) + end + + local n = def[2] + + minetest.register_craft( + { + output = "armor:helmet_"..mat, + recipe = { + {n, n, n}, + {n, "", n}, + {"", "", ""}, + } + }) + minetest.register_craft( + { + output = "armor:chestplate_"..mat, + recipe = { + {n, "", n}, + {n, n, n}, + {n, n, n}, + } + }) + minetest.register_craft( + { + output = "armor:boots_"..mat, + recipe = { + {"", "", ""}, + {n, "", n}, + {n, "", n}, + } + }) +end + +minetest.register_on_newplayer(on_newplayer) +minetest.register_on_joinplayer(on_joinplayer) +minetest.register_on_dieplayer(on_die) +minetest.register_globalstep(step) + +local form_armor = default.ui.get_page("core_2part") +form_armor = form_armor .. "list[current_player;main;0.25,4.75;8,4;]" +form_armor = form_armor .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1) +form_armor = form_armor .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3) +form_armor = form_armor .. "listring[current_player;main]" + +form_armor = form_armor .. "label[3.25,3;Boots]" +form_armor = form_armor .. "list[current_player;armor_boots;2.25,2.75;1,1;]" +form_armor = form_armor .. "listring[current_player;armor_boots]" +form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 2.75, 1, 1) + +form_armor = form_armor .. "label[3.25,2;Chestplate]" +form_armor = form_armor .. "list[current_player;armor_chestplate;2.25,1.75;1,1;]" +form_armor = form_armor .. "listring[current_player;armor_chestplate]" +form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 1.75, 1, 1) + +form_armor = form_armor .. "label[3.25,1;Helmet]" +form_armor = form_armor .. "list[current_player;armor_helmet;2.25,0.75;1,1;]" +form_armor = form_armor .. "listring[current_player;armor_helmet]" +form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 0.75, 1, 1) + +default.ui.register_page("core_armor", form_armor) \ No newline at end of file diff --git a/mods/armor/textures/armor_boots_carbonsteel.png b/mods/armor/textures/armor_boots_carbonsteel.png new file mode 100644 index 0000000..7637745 Binary files /dev/null and b/mods/armor/textures/armor_boots_carbonsteel.png differ diff --git a/mods/armor/textures/armor_boots_carbonsteel.xcf b/mods/armor/textures/armor_boots_carbonsteel.xcf new file mode 100644 index 0000000..93c81a9 Binary files /dev/null and b/mods/armor/textures/armor_boots_carbonsteel.xcf differ diff --git a/mods/armor/textures/armor_boots_carbonsteel_inventory.png b/mods/armor/textures/armor_boots_carbonsteel_inventory.png new file mode 100644 index 0000000..caa2d6a Binary files /dev/null and b/mods/armor/textures/armor_boots_carbonsteel_inventory.png differ diff --git a/mods/armor/textures/armor_boots_carbonsteel_inventory.xcf b/mods/armor/textures/armor_boots_carbonsteel_inventory.xcf new file mode 100644 index 0000000..7cdcc5b Binary files /dev/null and b/mods/armor/textures/armor_boots_carbonsteel_inventory.xcf differ diff --git a/mods/armor/textures/armor_boots_chainmail.png b/mods/armor/textures/armor_boots_chainmail.png new file mode 100644 index 0000000..dee6434 Binary files /dev/null and b/mods/armor/textures/armor_boots_chainmail.png differ diff --git a/mods/armor/textures/armor_boots_chainmail.xcf b/mods/armor/textures/armor_boots_chainmail.xcf new file mode 100644 index 0000000..6926cb2 Binary files /dev/null and b/mods/armor/textures/armor_boots_chainmail.xcf differ diff --git a/mods/armor/textures/armor_boots_chainmail_inventory.png b/mods/armor/textures/armor_boots_chainmail_inventory.png new file mode 100644 index 0000000..2aa52c2 Binary files /dev/null and b/mods/armor/textures/armor_boots_chainmail_inventory.png differ diff --git a/mods/armor/textures/armor_boots_chainmail_inventory.xcf b/mods/armor/textures/armor_boots_chainmail_inventory.xcf new file mode 100644 index 0000000..e02ac37 Binary files /dev/null and b/mods/armor/textures/armor_boots_chainmail_inventory.xcf differ diff --git a/mods/armor/textures/armor_boots_steel.png b/mods/armor/textures/armor_boots_steel.png new file mode 100644 index 0000000..18cb0e8 Binary files /dev/null and b/mods/armor/textures/armor_boots_steel.png differ diff --git a/mods/armor/textures/armor_boots_steel.xcf b/mods/armor/textures/armor_boots_steel.xcf new file mode 100644 index 0000000..e26c48f Binary files /dev/null and b/mods/armor/textures/armor_boots_steel.xcf differ diff --git a/mods/armor/textures/armor_boots_steel_inventory.png b/mods/armor/textures/armor_boots_steel_inventory.png new file mode 100644 index 0000000..c877006 Binary files /dev/null and b/mods/armor/textures/armor_boots_steel_inventory.png differ diff --git a/mods/armor/textures/armor_boots_steel_inventory.xcf b/mods/armor/textures/armor_boots_steel_inventory.xcf new file mode 100644 index 0000000..b709902 Binary files /dev/null and b/mods/armor/textures/armor_boots_steel_inventory.xcf differ diff --git a/mods/armor/textures/armor_boots_wood.png b/mods/armor/textures/armor_boots_wood.png new file mode 100644 index 0000000..fae3705 Binary files /dev/null and b/mods/armor/textures/armor_boots_wood.png differ diff --git a/mods/armor/textures/armor_boots_wood.xcf b/mods/armor/textures/armor_boots_wood.xcf new file mode 100644 index 0000000..28b83da Binary files /dev/null and b/mods/armor/textures/armor_boots_wood.xcf differ diff --git a/mods/armor/textures/armor_boots_wood_inventory.png b/mods/armor/textures/armor_boots_wood_inventory.png new file mode 100644 index 0000000..9b68ee3 Binary files /dev/null and b/mods/armor/textures/armor_boots_wood_inventory.png differ diff --git a/mods/armor/textures/armor_boots_wood_inventory.xcf b/mods/armor/textures/armor_boots_wood_inventory.xcf new file mode 100644 index 0000000..0e0c45d Binary files /dev/null and b/mods/armor/textures/armor_boots_wood_inventory.xcf differ diff --git a/mods/armor/textures/armor_chainmail.png b/mods/armor/textures/armor_chainmail.png new file mode 100644 index 0000000..9829abc Binary files /dev/null and b/mods/armor/textures/armor_chainmail.png differ diff --git a/mods/armor/textures/armor_chainmail.xcf b/mods/armor/textures/armor_chainmail.xcf new file mode 100644 index 0000000..a2afc89 Binary files /dev/null and b/mods/armor/textures/armor_chainmail.xcf differ diff --git a/mods/armor/textures/armor_chestplate_carbonsteel.png b/mods/armor/textures/armor_chestplate_carbonsteel.png new file mode 100644 index 0000000..ef889f4 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_carbonsteel.png differ diff --git a/mods/armor/textures/armor_chestplate_carbonsteel.xcf b/mods/armor/textures/armor_chestplate_carbonsteel.xcf new file mode 100644 index 0000000..d4320db Binary files /dev/null and b/mods/armor/textures/armor_chestplate_carbonsteel.xcf differ diff --git a/mods/armor/textures/armor_chestplate_carbonsteel_inventory.png b/mods/armor/textures/armor_chestplate_carbonsteel_inventory.png new file mode 100644 index 0000000..5662979 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_carbonsteel_inventory.png differ diff --git a/mods/armor/textures/armor_chestplate_carbonsteel_inventory.xcf b/mods/armor/textures/armor_chestplate_carbonsteel_inventory.xcf new file mode 100644 index 0000000..94f0e2a Binary files /dev/null and b/mods/armor/textures/armor_chestplate_carbonsteel_inventory.xcf differ diff --git a/mods/armor/textures/armor_chestplate_chainmail.png b/mods/armor/textures/armor_chestplate_chainmail.png new file mode 100644 index 0000000..382edba Binary files /dev/null and b/mods/armor/textures/armor_chestplate_chainmail.png differ diff --git a/mods/armor/textures/armor_chestplate_chainmail.xcf b/mods/armor/textures/armor_chestplate_chainmail.xcf new file mode 100644 index 0000000..fca55c4 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_chainmail.xcf differ diff --git a/mods/armor/textures/armor_chestplate_chainmail_inventory.png b/mods/armor/textures/armor_chestplate_chainmail_inventory.png new file mode 100644 index 0000000..b9d2958 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_chainmail_inventory.png differ diff --git a/mods/armor/textures/armor_chestplate_chainmail_inventory.xcf b/mods/armor/textures/armor_chestplate_chainmail_inventory.xcf new file mode 100644 index 0000000..f0fac40 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_chainmail_inventory.xcf differ diff --git a/mods/armor/textures/armor_chestplate_steel.png b/mods/armor/textures/armor_chestplate_steel.png new file mode 100644 index 0000000..fb68b98 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_steel.png differ diff --git a/mods/armor/textures/armor_chestplate_steel.xcf b/mods/armor/textures/armor_chestplate_steel.xcf new file mode 100644 index 0000000..84eb3d6 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_steel.xcf differ diff --git a/mods/armor/textures/armor_chestplate_steel_inventory.png b/mods/armor/textures/armor_chestplate_steel_inventory.png new file mode 100644 index 0000000..3c3fd33 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_steel_inventory.png differ diff --git a/mods/armor/textures/armor_chestplate_steel_inventory.xcf b/mods/armor/textures/armor_chestplate_steel_inventory.xcf new file mode 100644 index 0000000..869c49e Binary files /dev/null and b/mods/armor/textures/armor_chestplate_steel_inventory.xcf differ diff --git a/mods/armor/textures/armor_chestplate_wood.png b/mods/armor/textures/armor_chestplate_wood.png new file mode 100644 index 0000000..40af36b Binary files /dev/null and b/mods/armor/textures/armor_chestplate_wood.png differ diff --git a/mods/armor/textures/armor_chestplate_wood.xcf b/mods/armor/textures/armor_chestplate_wood.xcf new file mode 100644 index 0000000..7a48529 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_wood.xcf differ diff --git a/mods/armor/textures/armor_chestplate_wood_inventory.png b/mods/armor/textures/armor_chestplate_wood_inventory.png new file mode 100644 index 0000000..d864562 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_wood_inventory.png differ diff --git a/mods/armor/textures/armor_chestplate_wood_inventory.xcf b/mods/armor/textures/armor_chestplate_wood_inventory.xcf new file mode 100644 index 0000000..16e7105 Binary files /dev/null and b/mods/armor/textures/armor_chestplate_wood_inventory.xcf differ diff --git a/mods/armor/textures/armor_helmet_carbonsteel.png b/mods/armor/textures/armor_helmet_carbonsteel.png new file mode 100644 index 0000000..51ed72e Binary files /dev/null and b/mods/armor/textures/armor_helmet_carbonsteel.png differ diff --git a/mods/armor/textures/armor_helmet_carbonsteel.xcf b/mods/armor/textures/armor_helmet_carbonsteel.xcf new file mode 100644 index 0000000..aa9a1fd Binary files /dev/null and b/mods/armor/textures/armor_helmet_carbonsteel.xcf differ diff --git a/mods/armor/textures/armor_helmet_carbonsteel_inventory.png b/mods/armor/textures/armor_helmet_carbonsteel_inventory.png new file mode 100644 index 0000000..9171608 Binary files /dev/null and b/mods/armor/textures/armor_helmet_carbonsteel_inventory.png differ diff --git a/mods/armor/textures/armor_helmet_carbonsteel_inventory.xcf b/mods/armor/textures/armor_helmet_carbonsteel_inventory.xcf new file mode 100644 index 0000000..7aeb012 Binary files /dev/null and b/mods/armor/textures/armor_helmet_carbonsteel_inventory.xcf differ diff --git a/mods/armor/textures/armor_helmet_chainmail.png b/mods/armor/textures/armor_helmet_chainmail.png new file mode 100644 index 0000000..acbcf2a Binary files /dev/null and b/mods/armor/textures/armor_helmet_chainmail.png differ diff --git a/mods/armor/textures/armor_helmet_chainmail.xcf b/mods/armor/textures/armor_helmet_chainmail.xcf new file mode 100644 index 0000000..b1a94ba Binary files /dev/null and b/mods/armor/textures/armor_helmet_chainmail.xcf differ diff --git a/mods/armor/textures/armor_helmet_chainmail_inventory.png b/mods/armor/textures/armor_helmet_chainmail_inventory.png new file mode 100644 index 0000000..15b7f38 Binary files /dev/null and b/mods/armor/textures/armor_helmet_chainmail_inventory.png differ diff --git a/mods/armor/textures/armor_helmet_chainmail_inventory.xcf b/mods/armor/textures/armor_helmet_chainmail_inventory.xcf new file mode 100644 index 0000000..4c6facd Binary files /dev/null and b/mods/armor/textures/armor_helmet_chainmail_inventory.xcf differ diff --git a/mods/armor/textures/armor_helmet_steel.png b/mods/armor/textures/armor_helmet_steel.png new file mode 100644 index 0000000..a323690 Binary files /dev/null and b/mods/armor/textures/armor_helmet_steel.png differ diff --git a/mods/armor/textures/armor_helmet_steel.xcf b/mods/armor/textures/armor_helmet_steel.xcf new file mode 100644 index 0000000..e02a40e Binary files /dev/null and b/mods/armor/textures/armor_helmet_steel.xcf differ diff --git a/mods/armor/textures/armor_helmet_steel_inventory.png b/mods/armor/textures/armor_helmet_steel_inventory.png new file mode 100644 index 0000000..be2468e Binary files /dev/null and b/mods/armor/textures/armor_helmet_steel_inventory.png differ diff --git a/mods/armor/textures/armor_helmet_steel_inventory.xcf b/mods/armor/textures/armor_helmet_steel_inventory.xcf new file mode 100644 index 0000000..d186ac0 Binary files /dev/null and b/mods/armor/textures/armor_helmet_steel_inventory.xcf differ diff --git a/mods/armor/textures/armor_helmet_wood.png b/mods/armor/textures/armor_helmet_wood.png new file mode 100644 index 0000000..8a68995 Binary files /dev/null and b/mods/armor/textures/armor_helmet_wood.png differ diff --git a/mods/armor/textures/armor_helmet_wood.xcf b/mods/armor/textures/armor_helmet_wood.xcf new file mode 100644 index 0000000..8548965 Binary files /dev/null and b/mods/armor/textures/armor_helmet_wood.xcf differ diff --git a/mods/armor/textures/armor_helmet_wood_inventory.png b/mods/armor/textures/armor_helmet_wood_inventory.png new file mode 100644 index 0000000..a78dc4e Binary files /dev/null and b/mods/armor/textures/armor_helmet_wood_inventory.png differ diff --git a/mods/armor/textures/armor_helmet_wood_inventory.xcf b/mods/armor/textures/armor_helmet_wood_inventory.xcf new file mode 100644 index 0000000..357fe2e Binary files /dev/null and b/mods/armor/textures/armor_helmet_wood_inventory.xcf differ diff --git a/mods/armor/textures/armor_template.png b/mods/armor/textures/armor_template.png new file mode 100644 index 0000000..c7c0ac7 Binary files /dev/null and b/mods/armor/textures/armor_template.png differ diff --git a/mods/armor/textures/armor_template.xcf b/mods/armor/textures/armor_template.xcf new file mode 100644 index 0000000..4d3dc0c Binary files /dev/null and b/mods/armor/textures/armor_template.xcf differ diff --git a/mods/bed/README.txt b/mods/bed/README.txt new file mode 100644 index 0000000..75af475 --- /dev/null +++ b/mods/bed/README.txt @@ -0,0 +1,9 @@ +Beds mod +======== +By PilzAdam, thefamilygrog66 +Tweaked by Kadmy, for Pixture + +Right-click a bed to sleep, right-click again to get out. + +Asset license: CC0 +Source license: MIT(originally WTFPL) diff --git a/mods/bed/depends.txt b/mods/bed/depends.txt new file mode 100644 index 0000000..d77ba25 --- /dev/null +++ b/mods/bed/depends.txt @@ -0,0 +1,2 @@ +default +farming diff --git a/mods/bed/init.lua b/mods/bed/init.lua new file mode 100644 index 0000000..b8ee1b0 --- /dev/null +++ b/mods/bed/init.lua @@ -0,0 +1,215 @@ +-- +-- Bed mod +-- By PilzAdam, thefamilygrog66 +-- Tweaked by Kaadmy, for Pixture +-- + +local players_in_bed = 0 + +minetest.register_node( + "bed:bed_foot", + { + description = "Bed", + drawtype = "nodebox", + tiles = {"bed_foot.png", "default_wood.png", "bed_side.png"}, + inventory_image = "bed_bed_inventory.png", + wield_image = "bed_bed_inventory.png", + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 2/16, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 2/16, 1.5}, + } + }, + after_place_node = function(pos, placer, itemstack) + local node = minetest.env:get_node(pos) + local p = {x = pos.x, y = pos.y, z = pos.z} + local param2 = node.param2 + node.name = "bed:bed_head" + if param2 == 0 then + pos.z = pos.z + 1 + elseif param2 == 1 then + pos.x = pos.x + 1 + elseif param2 == 2 then + pos.z = pos.z - 1 + elseif param2 == 3 then + pos.x = pos.x - 1 + end + if minetest.registered_nodes[minetest.env:get_node(pos).name].buildable_to then + minetest.env:set_node(pos, node) + else + minetest.env:remove_node(p) + return true + end + end, + + on_destruct = function(pos) + local node = minetest.env:get_node(pos) + local param2 = node.param2 + if param2 == 0 then + pos.z = pos.z+1 + elseif param2 == 1 then + pos.x = pos.x+1 + elseif param2 == 2 then + pos.z = pos.z-1 + elseif param2 == 3 then + pos.x = pos.x-1 + end + if (minetest.env:get_node({x = pos.x, y = pos.y, z = pos.z}).name == "bed:bed_head") then + if (minetest.env:get_node({x = pos.x, y = pos.y, z = pos.z}).param2 == param2) then + minetest.env:remove_node(pos) + end + end + end, + + on_rightclick =function(pos, node, clicker) + if not clicker:is_player() + or not minetest.is_singleplayer() + and not minetest.setting_getbool("bed_enabled") then return end + + local meta = minetest.env:get_meta(pos) + local param2 = node.param2 + if param2 == 0 then + pos.z = pos.z + 0.5 + elseif param2 == 1 then + pos.x = pos.x + 0.5 + elseif param2 == 2 then + pos.z = pos.z - 0.5 + elseif param2 == 3 then + pos.x = pos.x - 0.5 + end + + if clicker:get_player_name() == meta:get_string("player") then + if param2 == 0 then + pos.x = pos.x - 1 + elseif param2 == 1 then + pos.z = pos.z + 1 + elseif param2 == 2 then + pos.x = pos.x + 1 + elseif param2 == 3 then + pos.z = pos.z - 1 + end + clicker:set_physics_override({speed = 1.0, jump = 1.0, sneak = true}) + pos.y = pos.y - 0.5 + clicker:setpos(pos) + clicker:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) + meta:set_string("player", "") + players_in_bed = players_in_bed - 1 + default.player_attached[clicker:get_player_name()] = false + clicker:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) + default.player_set_animation(clicker, "stand", 30) + elseif meta:get_string("player") == "" then + default.player_attached[clicker:get_player_name()] = true + clicker:set_local_animation({x=162, y=166}, {x=162, y=166}, {x=162, y=166}, {x=162, y=168}, 30) + default.player_set_animation(clicker, "lay", 30) + clicker:set_physics_override({speed = 0.0, jump = 0.0, sneak = false}) + pos.y = pos.y + 0.5625 + clicker:setpos(pos) + clicker:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = -13, z = 0}) + if param2 == 0 then + clicker:set_look_yaw(math.pi) + elseif param2 == 1 then + clicker:set_look_yaw(0.5 * math.pi) + elseif param2 == 2 then + clicker:set_look_yaw(0) + elseif param2 == 3 then + clicker:set_look_yaw(1.5 * math.pi) + end + + meta:set_string("player", clicker:get_player_name()) + players_in_bed = players_in_bed + 1 + end + end + }) + +minetest.register_node( + "bed:bed_head", + { + drawtype = "nodebox", + tiles = {"bed_head.png", "default_wood.png", "bed_side.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 2/16, 0.5}, + } + }, + selection_box = {type = "fixed", fixed = {{0, 0, 0, 0, 0, 0},}}, + }) + +minetest.register_alias("bed:bed", "bed:bed_foot") + +minetest.register_craft( + { + output = "bed:bed", + recipe = { + {"group:fuzzy", "group:fuzzy", "group:fuzzy"}, + {"group:planks", "group:planks", "group:planks"}, + } + }) + +bed_player_spawns = {} + +local file = io.open(minetest.get_worldpath().."/bed.txt", "r") +if file then + bed_player_spawns = minetest.deserialize(file:read("*all")) + file:close() +end + +local timer = 0 +local wait = false + +minetest.register_globalstep( + function(dtime) + if timer < 2 then + timer = timer + dtime + return + end + timer = 0 + + local players = #minetest.get_connected_players() + if players ~= 0 and players * 0.5 < players_in_bed then + if minetest.env:get_timeofday() < 0.2 or minetest.env:get_timeofday() > 0.8 then + if not wait then + minetest.chat_send_all("[zzz] " .. players_in_bed .. " of " .. players .. " players slept, skipping to day.") + minetest.after(2, function() + minetest.env:set_timeofday(0.23) + wait = false + end) + wait = true + for _,player in ipairs(minetest.get_connected_players()) do + bed_player_spawns[player:get_player_name()] = player:getpos() + end + local file = io.open(minetest.get_worldpath().."/bed.txt", "w") + if file then + file:write(minetest.serialize(bed_player_spawns)) + file:close() + end + end + end + end + end) + +minetest.register_on_respawnplayer( + function(player) + local name = player:get_player_name() + if bed_player_spawns[name] then + player:setpos(bed_player_spawns[name]) + return true + end + end) + +default.log("mod:bed", "loaded") \ No newline at end of file diff --git a/mods/bed/textures/bed_bed_inventory.png b/mods/bed/textures/bed_bed_inventory.png new file mode 100644 index 0000000..883e922 Binary files /dev/null and b/mods/bed/textures/bed_bed_inventory.png differ diff --git a/mods/bed/textures/bed_bed_inventory.xcf b/mods/bed/textures/bed_bed_inventory.xcf new file mode 100644 index 0000000..f5974d3 Binary files /dev/null and b/mods/bed/textures/bed_bed_inventory.xcf differ diff --git a/mods/bed/textures/bed_foot.png b/mods/bed/textures/bed_foot.png new file mode 100644 index 0000000..9ed85be Binary files /dev/null and b/mods/bed/textures/bed_foot.png differ diff --git a/mods/bed/textures/bed_foot.xcf b/mods/bed/textures/bed_foot.xcf new file mode 100644 index 0000000..ed2517a Binary files /dev/null and b/mods/bed/textures/bed_foot.xcf differ diff --git a/mods/bed/textures/bed_head.png b/mods/bed/textures/bed_head.png new file mode 100644 index 0000000..b04ab85 Binary files /dev/null and b/mods/bed/textures/bed_head.png differ diff --git a/mods/bed/textures/bed_head.xcf b/mods/bed/textures/bed_head.xcf new file mode 100644 index 0000000..1211ebe Binary files /dev/null and b/mods/bed/textures/bed_head.xcf differ diff --git a/mods/bed/textures/bed_side.png b/mods/bed/textures/bed_side.png new file mode 100644 index 0000000..6d11394 Binary files /dev/null and b/mods/bed/textures/bed_side.png differ diff --git a/mods/bed/textures/bed_side.xcf b/mods/bed/textures/bed_side.xcf new file mode 100644 index 0000000..b4570ae Binary files /dev/null and b/mods/bed/textures/bed_side.xcf differ diff --git a/mods/book/README.txt b/mods/book/README.txt new file mode 100644 index 0000000..109fcd0 --- /dev/null +++ b/mods/book/README.txt @@ -0,0 +1,10 @@ +Books mod +========= +By Kaadmy, for Pixture + +Mod originally designed for Pixture, may not work elsewhere + +This mod adds books that can be written to, just + left-click while holding one, write, and save + +Source license: MIT diff --git a/mods/book/depends.txt b/mods/book/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/book/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/book/init.lua b/mods/book/init.lua new file mode 100644 index 0000000..2f144b6 --- /dev/null +++ b/mods/book/init.lua @@ -0,0 +1,47 @@ +-- +-- Editable books +-- Code based off the books_plus mod +-- By Kaadmy, for Pixture +-- + +minetest.register_craftitem( + ":default:book", + { + description = "Book", + inventory_image = "default_book.png", + stack_max = 1, + on_use = function(itemstack, player, pointed_thing) + local name = player:get_player_name() + local data = minetest.deserialize(itemstack:get_metadata()) + + local title = "" + local text = "" + + if data then + text = data.text + title = data.title + end + + local form = default.ui.get_page("core_notabs") + form = form .. "field[0.5,1.25;8,0;title;Title:;"..minetest.formspec_escape(title).."]" + form = form .. "textarea[0.5,1.75;8,6.75;text;Contents:;"..minetest.formspec_escape(text).."]" + form = form .. default.ui.button_exit(2.75, 7.75, 3, 1, "write", "Write") + + minetest.show_formspec(name, "book:book", form) + end, + }) + +minetest.register_on_player_receive_fields( + function(player, form_name, fields) + if form_name ~= "book:book" or not fields.write then return end + + local itemstack = player:get_wielded_item() + local data = minetest.deserialize(itemstack:get_metadata()) + + if not data then data = {} end + data.text = fields.text + data.title = fields.title + + itemstack:set_metadata(minetest.serialize(data)) + player:set_wielded_item(itemstack) + end) \ No newline at end of file diff --git a/mods/builtin_item/README.txt b/mods/builtin_item/README.txt new file mode 100644 index 0000000..a08a18b --- /dev/null +++ b/mods/builtin_item/README.txt @@ -0,0 +1,8 @@ +Builtin item mod +================ +By PilzAdam +Tweaked by Kaadmy, for Pixture + +Items are now destroyed by lava and flow with water. + +Source license: MIT(originally WTFPL) diff --git a/mods/builtin_item/depends.txt b/mods/builtin_item/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/builtin_item/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/builtin_item/init.lua b/mods/builtin_item/init.lua new file mode 100644 index 0000000..c785e29 --- /dev/null +++ b/mods/builtin_item/init.lua @@ -0,0 +1,148 @@ +-- +-- Builtin item mod +-- By PilzAdam +-- Tweaked by Kaadmy, for Pixture +-- + +minetest.register_entity( + ":__builtin:item", + { + initial_properties = { + hp_max = 1, + physical = true, + collisionbox = {-0.125, -0.125, -0.125, 0.125, 0.125, 0.125}, + collide_with_objects = false, + visual = "sprite", + visual_size = {x=0.15, y=0.15}, + textures = {""}, + spritediv = {x=1, y=1}, + initial_sprite_basepos = {x=0, y=0}, + is_visible = false, + timer = 0, + }, + + itemstring = "", + physical_state = true, + + set_item = function(self, itemstring) + self.itemstring = itemstring + local stack = ItemStack(itemstring) + local itemtable = stack:to_table() + local itemname = nil + if itemtable then + itemname = stack:to_table().name + end + local item_texture = nil + local item_type = "" + if minetest.registered_items[itemname] then + item_texture = minetest.registered_items[itemname].inventory_image + item_type = minetest.registered_items[itemname].type + end + local prop = { + is_visible = true, + visual = "sprite", + textures = {"unknown_item.png"} + } + if item_texture and item_texture ~= "" then + prop.visual = "wielditem" + prop.textures = {itemname} + prop.visual_size = {x=0.15, y=0.15} + else + prop.visual = "wielditem" + prop.textures = {itemname} + prop.visual_size = {x=0.15, y=0.15} + prop.automatic_rotate = math.pi * 0.5 + end + self.object:set_properties(prop) + end, + + get_staticdata = function(self) + --return self.itemstring + return minetest.serialize( + { + itemstring = self.itemstring, + always_collect = self.always_collect, + timer = self.timer, + }) + end, + + on_activate = function(self, staticdata, dtime_s) + if string.sub(staticdata, 1, string.len("return")) == "return" then + local data = minetest.deserialize(staticdata) + if data and type(data) == "table" then + self.itemstring = data.itemstring + self.always_collect = data.always_collect + self.timer = data.timer + if not self.timer then + self.timer = 0 + end + self.timer = self.timer+dtime_s + end + else + self.itemstring = staticdata + end + self.object:set_armor_groups({immortal=1}) + self.object:setvelocity({x=0, y=2, z=0}) + self.object:setacceleration({x=0, y=-10, z=0}) + self:set_item(self.itemstring) + end, + + on_step = function(self, dtime) + local time = tonumber(minetest.setting_get("remove_items")) + if not time then time = 600 end + if not self.timer then self.timer = 0 end + + self.timer = self.timer + dtime + if time ~= 0 and (self.timer > time) then + self.object:remove() + end + + local p = self.object:getpos() + + local name = minetest.get_node(p).name + if minetest.registered_nodes[name].damage_per_second > 0 or name == "maptools:igniter" then + minetest.sound_play("builtin_item_lava", {pos = self.object:getpos(), gain = 0.45}) + self.object:remove() + return + end + + p.y = p.y - 0.3 + local nn = minetest.get_node(p).name + -- If node is not registered or node is walkably solid: + if not minetest.registered_nodes[nn] or minetest.registered_nodes[nn].walkable then + if self.physical_state then + self.object:setvelocity({x=0,y=0,z=0}) + self.object:setacceleration({x=0, y=0, z=0}) + self.physical_state = false + self.object:set_properties( + { + physical = false + }) + end + else + if not self.physical_state then + self.object:setvelocity({x=0,y=0,z=0}) + self.object:setacceleration({x=0, y=-10, z=0}) + self.physical_state = true + self.object:set_properties( + { + physical = true + }) + end + end + end, + --[[ -- This causes a duplication glitch if a player walks upon an item and clicks on it at the same time: + on_punch = function(self, hitter) + if self.itemstring ~= "" then + local left = hitter:get_inventory():add_item("main", self.itemstring) + if not left:is_empty() then + self.itemstring = left:to_string() + return + end + end + self.object:remove() + end, + --]] + }) + +default.log("mod:builtin_item", "loaded") \ No newline at end of file diff --git a/mods/builtin_item/sounds/builtin_item_lava.ogg b/mods/builtin_item/sounds/builtin_item_lava.ogg new file mode 100644 index 0000000..5c293fe Binary files /dev/null and b/mods/builtin_item/sounds/builtin_item_lava.ogg differ diff --git a/mods/craftingguide/README.txt b/mods/craftingguide/README.txt new file mode 100644 index 0000000..bda8260 --- /dev/null +++ b/mods/craftingguide/README.txt @@ -0,0 +1,9 @@ +Crafting guide mod +================== + +By Kaadmy, for Pixture + +This mod adds a crafting guide in your inventory. + +Asset license: CC0 +Source license: MIT diff --git a/mods/craftingguide/depends.txt b/mods/craftingguide/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/craftingguide/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/craftingguide/init.lua b/mods/craftingguide/init.lua new file mode 100644 index 0000000..c1d0920 --- /dev/null +++ b/mods/craftingguide/init.lua @@ -0,0 +1,169 @@ +-- +-- Crafting guide mod +-- By Kaadmy, for Pixture +-- + +craftingguide = {} +craftingguide.items = {} +craftingguide.itemlist = {} +craftingguide.users = {} -- {item = selected item, itemno = recipe no., page = page no.} + +local page_size = 8 * 4 + +function craftingguide.get_formspec(name) + local user = craftingguide.users[name] + + local page = user.page + local max_pages = math.floor(#craftingguide.itemlist / page_size) + 1 + + local form = "" + form = form .. default.ui.get_page("core_craftingguide") + + form = form .. "label[0.41,1.74;"..user.itemno.."/"..#craftingguide.items[user.item].."]" -- itemno + form = form .. "label[3.9,8.15;"..page.."/"..max_pages.."]" -- page + form = form .. "label[4.4,2.5;"..user.item.."]" -- itemname + + local method = craftingguide.items[user.item][user.itemno].type + if method == "normal" or method == "crafting" then + form = form .. "image[4.25,1.5;1,1;craftingguide_method_crafting.png]" + elseif method == "cooking" then + form = form .. "image[4.25,1.5;1,1;craftingguide_method_cooking.png]" +-- fuel recipes are different +-- elseif method == "fuel" then +-- form = form .. "image[4.25,1.5;1,1;craftingguide_method_fuel.png]" + else + form = form .. "image[4.25,1.5;1,1;craftingguide_method_unknown.png]" + form = form .. "label[4.1,1.73;"..method.."]" + end + + form = form .. default.ui.fake_itemstack(6.25, 1.5, ItemStack(user.item), "guide_craftresult") + + local craftrecipe = {{}, {}, {}} + local recipes = craftingguide.items[user.item] + local recipe = recipes[user.itemno] + + print(dump(recipe)) + for slot_index, itemname in pairs(recipe.items) do + local x = slot_index - 1 + + local group = string.match(itemname, "group:(.*)") + + if group == nil then + form = form .. default.ui.fake_simple_itemstack(1.25+(x % recipe.width), 0.5+math.floor(x/recipe.width), itemname, "guide_craftgrid_"..itemname) + else + form = form .. default.ui.item_group(1.25+(x % recipe.width), 0.5+math.floor(x/recipe.width), group, "guide_craftgrid_"..itemname) + end + end + + local page_start = ((page * page_size) - page_size) + 1 + + local inv_x = 0 + local inv_y = 0 + + for item_index = page_start, (page_start + page_size) - 1 do + local recipes = craftingguide.items[craftingguide.itemlist[item_index]] + + if recipes ~= nil then + local itemname = ItemStack(recipes[1].output):get_name() + + form = form .. default.ui.fake_simple_itemstack(0.25 + inv_x, 4 + inv_y, itemname, "guide_item_"..itemname) + + inv_x = inv_x + 1 + if inv_x >= 8 then + inv_x = 0 + inv_y = inv_y + 1 + end + else + break + end + end + + return form +end + +local function receive_fields(player, form_name, fields) + if form_name == "core_craftingguide" and not fields.quit then + local name = player:get_player_name() + local user = craftingguide.users[name] + + local page = user.page + local recipes = craftingguide.items[user.item] + local itemno = user.itemno + + local max_pages = math.floor(#craftingguide.itemlist / page_size) + 1 + + if fields.guide_next_recipe and itemno < #recipes then + itemno = itemno + 1 + elseif fields.guide_prev_recipe and itemno > 1 then + itemno = itemno - 1 + end + + + if fields.guide_next and page < max_pages then + page = page + 1 + elseif fields.guide_prev and page > 1 then + page = page - 1 + end + + for fieldname, val in pairs(fields) do + local itemname = string.match(fieldname, "guide_item_(.*)") + + if itemname ~= nil then + craftingguide.users[name].item = itemname + craftingguide.users[name].itemno = 1 + end + end + + craftingguide.users[name].page = page + craftingguide.users[name].itemno = itemno + + minetest.show_formspec(name, "core_craftingguide", craftingguide.get_formspec(name)) + end +end + +local function on_joinplayer(player) + local name = player:get_player_name() + + craftingguide.users[name] = {page = 1, item = craftingguide.itemlist[1], itemno = 1} +end + +local function on_leaveplayer(player) + local name = player:get_player_name() + + craftingguide.users[name] = nil +end + +local function load_recipes() + for itemname, itemdef in pairs(minetest.registered_items) do + local recipes = minetest.get_all_craft_recipes(itemname) + + if recipes ~= nil and itemname ~= "" then +-- print(dump(recipes)) + craftingguide.items[itemname] = recipes + table.insert(craftingguide.itemlist, itemname) + end + end + + table.sort(craftingguide.itemlist) + + print("Got "..#craftingguide.itemlist.." craftable items") +end + +minetest.after(0, load_recipes) + +minetest.register_on_joinplayer(on_joinplayer) +minetest.register_on_leaveplayer(on_leaveplayer) +minetest.register_on_player_receive_fields(receive_fields) + +local form_craftingguide = default.ui.get_page("core") +form_craftingguide = form_craftingguide .. default.ui.get_itemslot_bg(0.25, 4, 8, 4) +form_craftingguide = form_craftingguide .. default.ui.image_button(2.5, 7.9, 1, 1, "guide_prev", "ui_arrow_bg.png^[transformR90") +form_craftingguide = form_craftingguide .. default.ui.image_button(5, 7.9, 1, 1, "guide_next", "ui_arrow_bg.png^[transformR270") + +form_craftingguide = form_craftingguide .. default.ui.image_button(0.25, 0.5, 1, 1, "guide_next_recipe", "ui_arrow_bg.png") +form_craftingguide = form_craftingguide .. default.ui.image_button(0.25, 2.5, 1, 1, "guide_prev_recipe", "ui_arrow_bg.png^[transformFY") +form_craftingguide = form_craftingguide .. default.ui.get_itemslot_bg(1.25, 0.5, 3, 3) +form_craftingguide = form_craftingguide .. default.ui.get_itemslot_bg(6.25, 1.5, 1, 1) +form_craftingguide = form_craftingguide .. "image[5.25,1.5;1,1;"..minetest.formspec_escape("ui_arrow.png^[transformR270").."]" + +default.ui.register_page("core_craftingguide", form_craftingguide) \ No newline at end of file diff --git a/mods/craftingguide/textures/craftingguide_method_cooking.png b/mods/craftingguide/textures/craftingguide_method_cooking.png new file mode 100644 index 0000000..9a4ed1d Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_cooking.png differ diff --git a/mods/craftingguide/textures/craftingguide_method_cooking.xcf b/mods/craftingguide/textures/craftingguide_method_cooking.xcf new file mode 100644 index 0000000..9d359b7 Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_cooking.xcf differ diff --git a/mods/craftingguide/textures/craftingguide_method_crafting.png b/mods/craftingguide/textures/craftingguide_method_crafting.png new file mode 100644 index 0000000..47a908d Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_crafting.png differ diff --git a/mods/craftingguide/textures/craftingguide_method_crafting.xcf b/mods/craftingguide/textures/craftingguide_method_crafting.xcf new file mode 100644 index 0000000..cbe5906 Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_crafting.xcf differ diff --git a/mods/craftingguide/textures/craftingguide_method_fuel.png b/mods/craftingguide/textures/craftingguide_method_fuel.png new file mode 100644 index 0000000..70744ac Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_fuel.png differ diff --git a/mods/craftingguide/textures/craftingguide_method_fuel.xcf b/mods/craftingguide/textures/craftingguide_method_fuel.xcf new file mode 100644 index 0000000..7338825 Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_fuel.xcf differ diff --git a/mods/craftingguide/textures/craftingguide_method_unknown.png b/mods/craftingguide/textures/craftingguide_method_unknown.png new file mode 100644 index 0000000..5134598 Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_unknown.png differ diff --git a/mods/craftingguide/textures/craftingguide_method_unknown.xcf b/mods/craftingguide/textures/craftingguide_method_unknown.xcf new file mode 100644 index 0000000..e7623cc Binary files /dev/null and b/mods/craftingguide/textures/craftingguide_method_unknown.xcf differ diff --git a/mods/default/README.txt b/mods/default/README.txt new file mode 100644 index 0000000..e20d034 --- /dev/null +++ b/mods/default/README.txt @@ -0,0 +1,10 @@ +Default mod +=========== +By Kaadmy, for Pixture + +Adds the required stuff to run + +WARNING: This mod will not be compatible with existing mods, tons of stuff has been renamed! + +Asset license: CC0 +Source license: MIT(Some parts copied from minetest_game) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua new file mode 100644 index 0000000..b714094 --- /dev/null +++ b/mods/default/crafting.lua @@ -0,0 +1,788 @@ +-- +-- Crafting +-- + +-- Tools +minetest.register_craft( + { + output = "default:pick_wood", + recipe = { + {"", "group:planks", "default:fiber"}, + {"", "default:stick", "group:planks"}, + {"default:stick", "", ""}, + } + }) + +minetest.register_craft( + { + output = "default:pick_stone", + recipe = { + {"", "group:stone", "default:fiber"}, + {"", "default:stick", "group:stone"}, + {"default:stick", "", ""}, + } + }) + +minetest.register_craft( + { + output = "default:pick_steel", + recipe = { + {"", "default:ingot_steel", "default:fiber"}, + {"", "default:stick", "default:ingot_steel"}, + {"default:stick", "", ""}, + } + }) + +minetest.register_craft( + { + output = "default:pick_carbonsteel", + recipe = { + {"", "default:ingot_carbonsteel", "default:fiber"}, + {"", "default:stick", "default:ingot_carbonsteel"}, + {"default:stick", "", ""}, + } + }) + +minetest.register_craft( + { + output = "default:shovel_wood", + recipe = { + {"", "group:planks", ""}, + {"group:planks", "default:fiber", "group:planks"}, + {"", "default:stick", ""}, + } + }) + +minetest.register_craft( + { + + + output = "default:shovel_stone", + recipe = { + {"", "group:stone", ""}, + {"group:stone", "default:fiber", "group:stone"}, + {"", "default:stick", ""}, + } + }) + +minetest.register_craft( + { + output = "default:shovel_steel", + recipe = { + {"", "default:ingot_steel", ""}, + {"default:ingot_steel", "default:fiber", "default:ingot_steel"}, + {"", "default:stick", ""}, + } + }) + +minetest.register_craft( + { + output = "default:shovel_carbonsteel", + recipe = { + {"", "default:ingot_carbonsteel", ""}, + {"default:ingot_carbonsteel", "default:fiber", "default:ingot_carbonsteel"}, + {"", "default:stick", ""}, + } + }) + +minetest.register_craft( + { + output = "default:axe_wood", + recipe = { + {"group:planks", "default:fiber"}, + {"group:planks", "default:stick"}, + {"", "default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:axe_stone", + recipe = { + {"group:stone", "default:fiber"}, + {"group:stone", "default:stick"}, + {"", "default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:axe_steel", + recipe = { + {"default:ingot_steel", "default:fiber"}, + {"default:ingot_steel", "default:stick"}, + {"", "default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:axe_carbonsteel", + recipe = { + {"default:ingot_carbonsteel", "default:fiber"}, + {"default:ingot_carbonsteel", "default:stick"}, + {"", "default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:spear_wood", + recipe = { + {"group:planks"}, + {"default:fiber"}, + {"default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:spear_stone", + recipe = { + {"group:stone"}, + {"default:fiber"}, + {"default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:spear_steel", + recipe = { + {"default:ingot_steel"}, + {"default:fiber"}, + {"default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:spear_carbonsteel", + recipe = { + {"default:ingot_carbonsteel"}, + {"default:fiber"}, + {"default:stick"}, + } + }) + +-- Nodes + +minetest.register_craft( + { + output = "default:dust_carbonsteel", + type = "shapeless", + recipe = {"default:lump_coal", "default:lump_iron", "default:lump_iron"} + }) + +minetest.register_craft( + { + output = "default:fiber", + type = "shapeless", + recipe = { + "default:grass" + } + }) + +minetest.register_craft( + { + output = "default:fiber 2", + type = "shapeless", + recipe = { + "default:tall_grass" + } + }) + +minetest.register_craft( + { + output = "default:fiber 3", + type = "shapeless", + recipe = { + "default:leaves", "default:leaves", "default:leaves", "default:leaves" + } + }) + +minetest.register_craft( + { + output = "default:gravel", + recipe = { + {"default:cobble"}, + } + }) + +minetest.register_craft( + { + output = "default:bucket", + recipe = { + {"default:fiber", "default:stick", "default:fiber"}, + {"group:planks", "", "group:planks"}, + {"group:planks", "group:planks", "group:planks"}, + } + }) + +minetest.register_craft( + { + output = "default:brick", + recipe = { + {"default:dirt", "default:gravel", "default:dirt"}, + {"default:gravel", "default:dirt", "default:gravel"}, + {"default:dirt", "default:gravel", "default:dirt"}, + } + }) +minetest.register_craft( + { + output = "default:block_steel", + recipe = { + {"default:ingot_steel", "default:ingot_steel", "default:ingot_steel"}, + {"default:ingot_steel", "default:ingot_steel", "default:ingot_steel"}, + {"default:ingot_steel", "default:ingot_steel", "default:ingot_steel"}, + } + }) + +minetest.register_craft( + { + output = "default:block_coal", + recipe = { + {"default:lump_coal", "default:lump_coal", "default:lump_coal"}, + {"default:lump_coal", "default:lump_coal", "default:lump_coal"}, + {"default:lump_coal", "default:lump_coal", "default:lump_coal"}, + } + }) + +minetest.register_craft( + { + output = "default:dirt_path 4", + recipe = { + {"default:dirt", "default:dirt", "default:dirt"}, + {"default:gravel", "default:gravel", "default:gravel"}, + {"default:gravel", "default:gravel", "default:gravel"}, + } + }) + +minetest.register_craft( + { + output = "default:heated_dirt_path 8", + recipe = { + {"default:ingot_steel", "default:dirt_path", "default:ingot_steel"}, + {"default:dirt_path", "default:dirt_path", "default:dirt_path"}, + {"default:gravel", "default:gravel", "default:gravel"}, + } + }) + +minetest.register_craft( + { + output = "default:planks 4", + recipe = { + {"default:tree"}, + } + }) + +minetest.register_craft( + { + output = "default:planks_oak 4", + recipe = { + {"default:tree_oak"}, + } + }) + +minetest.register_craft( + { + output = "default:planks_birch 4", + recipe = { + {"default:tree_birch"}, + } + }) + +minetest.register_craft( + { + output = "default:frame", + recipe = { + {"default:fiber", "default:stick", "default:fiber"}, + {"default:stick", "group:planks", "default:stick"}, + {"default:fiber", "default:stick", "default:fiber"}, + } + }) + +minetest.register_craft( + { + output = "default:reinforced_frame", + recipe = { + {"default:fiber", "default:stick", "default:fiber"}, + {"default:stick", "default:frame", "default:stick"}, + {"default:fiber", "default:stick", "default:fiber"}, + } + }) + +minetest.register_craft( + { + output = "default:stick 4", + recipe = { + {"group:planks"}, + } + }) + +minetest.register_craft( + { + output = "default:fence 4", + recipe = { + {"default:stick", "", "default:stick"}, + {"default:fiber", "group:planks", "default:fiber"}, + {"default:stick", "", "default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:sign 2", + recipe = { + {"group:planks", "default:fiber", "group:planks"}, + {"group:planks", "group:planks", "group:planks"}, + {"", "default:stick", ""}, + } + }) + +minetest.register_craft( + { + output = "default:reinforced_cobble", + recipe = { + {"default:fiber", "default:stick", "default:fiber"}, + {"default:stick", "default:cobble", "default:stick"}, + {"default:fiber", "default:stick", "default:fiber"}, + } + }) + +minetest.register_craft( + { + output = "default:torch 4", + recipe = { + {"default:lump_coal"}, + {"default:fiber"}, + {"default:stick"}, + } + }) + +minetest.register_craft( + { + output = "default:chest", + recipe = { + {"group:planks", "group:planks", "group:planks"}, + {"group:planks", "default:fiber", "group:planks"}, + {"group:planks", "group:planks", "group:planks"}, + } + }) + +minetest.register_craft( + { + output = "default:chest_locked", + recipe = { + {"default:fiber", "default:stick", "default:fiber"}, + {"default:stick", "default:chest", "default:stick"}, + {"default:fiber", "default:ingot_steel", "default:fiber"}, + } + }) + +minetest.register_craft( + { + output = "default:furnace", + recipe = { + {"group:stone", "group:stone", "group:stone"}, + {"group:stone", "", "group:stone"}, + {"group:stone", "group:stone", "group:stone"}, + } + }) + +minetest.register_craft( + { + output = "default:sandstone 2", + recipe = { + {"default:sand", "default:sand"}, + {"default:sand", "default:sand"}, + } + }) + +minetest.register_craft( + { + output = "default:paper", + recipe = { + {"default:papyrus", "default:papyrus", "default:papyrus"}, + } + }) + +minetest.register_craft( + { + output = "default:book", + recipe = { + {"default:fiber", "default:stick", "default:paper"}, + {"default:fiber", "default:stick", "default:paper"}, + {"default:fiber", "default:stick", "default:paper"}, + } + }) + +minetest.register_craft( + { + output = "default:bookshelf", + recipe = { + {"group:planks", "group:planks", "group:planks"}, + {"default:book", "default:book", "default:book"}, + {"group:planks", "group:planks", "group:planks"}, + } + }) + +minetest.register_craft( + { + output = "default:ladder 2", + recipe = { + {"default:stick", "", "default:stick"}, + {"default:fiber", "default:stick", "default:fiber"}, + {"default:stick", "", "default:stick"}, + } + }) + +-- +-- Crafting (tool repair) +-- +minetest.register_craft( + { + type = "toolrepair", + additional_wear = -0.1, + }) + +-- +-- Cooking recipes +-- + +minetest.register_craft( + { + type = "cooking", + output = "default:glass", + recipe = "default:sand", + cooktime = 3, + }) + +minetest.register_craft( + { + type = "cooking", + output = "default:lump_coal", + recipe = "default:tree", + cooktime = 4, + }) + +minetest.register_craft( + { + type = "cooking", + output = "default:stone", + recipe = "default:cobble", + cooktime = 6, + }) + +minetest.register_craft( + { + type = "cooking", + output = "default:ingot_steel", + recipe = "default:lump_iron", + cooktime = 3, + }) + +minetest.register_craft( + { + type = "cooking", + output = "default:ingot_carbonsteel", + recipe = "default:dust_carbonsteel", + cooktime = 5, + }) + +minetest.register_craft( + { + type = "cooking", + output = "default:lump_sugar", + recipe = "default:papyrus", + cooktime = 7, + }) + +-- +-- Fuels +-- + +minetest.register_craft( + { + type = "fuel", + recipe = "group:tree", + burntime = 20, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "group:planks", + burntime = 9, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:planks_oak", + burntime = 12, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:planks_birch", + burntime = 12, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:frame", + burntime = 12, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:reinforced_frame", + burntime = 17, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "group:leaves", + burntime = 1, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:cactus", + burntime = 10, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:papyrus", + burntime = 2, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:bookshelf", + burntime = 30, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:fence", + burntime = 10, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:ladder", + burntime = 5, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "group:planks", + burntime = 5, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:torch", + burntime = 5, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:sign", + burntime = 10, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:chest", + burntime = 20, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "group:sapling", + burntime = 7, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:apple", + burntime = 3, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:lump_coal", + burntime = 30, + }) + +minetest.register_craft( + { + type = "fuel", + recipe = "default:block_coal", + burntime = 270, + }) + +-- +-- Crafting items +-- + +minetest.register_craftitem( + "default:fiber", + { + description = "Fiber", + inventory_image = "default_fiber.png", + }) + +minetest.register_craftitem( + "default:bucket_water", + { + description = "Water Bucket", + inventory_image = "default_bucket_water.png", + stack_max = 1, + wield_scale = {x=1,y=1,z=2}, + liquids_pointable = true, + on_place = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then return end + + itemstack:take_item() + + local inv=user:get_inventory() + + if inv:room_for_item("main", {name="default:bucket"}) then + inv:add_item("main", "default:bucket") + else + local pos = user:getpos() + pos.y = math.floor(pos.y + 0.5) + minetest.add_item(pos, "default:bucket") + end + + local pos = pointed_thing.above + if minetest.registered_nodes[minetest.get_node(pointed_thing.under).name].buildable_to then + pos=pointed_thing.under + end + minetest.add_node(pos, {name = "default:water_source"}) + + return itemstack + end + }) + +minetest.register_craftitem( + "default:bucket", + { + description = "Empty Bucket", + inventory_image = "default_bucket.png", + wield_scale = {x=1,y=1,z=2}, + liquids_pointable = true, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then return end + + local nodename=minetest.get_node(pointed_thing.under).name + + if nodename == "default:water_source" then + itemstack:take_item() + + local inv=user:get_inventory() + + if inv:room_for_item("main", {name="default:bucket_water"}) then + inv:add_item("main", "default:bucket_water") + else + local pos = user:getpos() + pos.y = math.floor(pos.y + 0.5) + minetest.add_item(pos, "default:bucket_water") + end + + minetest.remove_node(pointed_thing.under) + end + + return itemstack + end + + }) + +minetest.register_craftitem( + "default:stick", + { + description = "Stick", + inventory_image = "default_stick.png", + groups = {stick = 1} + }) + +minetest.register_craftitem( + "default:paper", + { + description = "Paper", + inventory_image = "default_paper.png", + }) + +minetest.register_craftitem( + "default:book", + { + description = "Book", + inventory_image = "default_book.png", + wield_scale = {x=1,y=1,z=2}, + }) + +minetest.register_craftitem( + "default:lump_coal", + { + description = "Coal Lump", + inventory_image = "default_lump_coal.png", + }) + +minetest.register_craftitem( + "default:lump_iron", + { + description = "Iron Lump", + inventory_image = "default_lump_iron.png", + }) + +minetest.register_craftitem( + "default:dust_carbonsteel", + { + description = "Carbon Steel Dust", + inventory_image = "default_dust_carbonsteel.png", + }) + +minetest.register_craftitem( + "default:ingot_steel", + { + description = "Steel Ingot", + inventory_image = "default_ingot_steel.png", + }) + +minetest.register_craftitem( + "default:ingot_carbonsteel", + { + description = "Carbon Steel Ingot", + inventory_image = "default_ingot_carbonsteel.png", + }) + +minetest.register_craftitem( + "default:lump_sugar", + { + description = "Sugar lump", + inventory_image = "default_lump_sugar.png", + on_use = minetest.item_eat({hp = 1, sat = 10}) + }) + +default.log("crafting", "loaded") \ No newline at end of file diff --git a/mods/default/formspec.lua b/mods/default/formspec.lua new file mode 100644 index 0000000..05ca236 --- /dev/null +++ b/mods/default/formspec.lua @@ -0,0 +1,311 @@ +default.ui = {} + +default.ui.core = {} + +default.ui.core.colors = "listcolors[#00000000;#00000010;#00000000;#68B259;#FFF]" +default.ui.core.bg = "bgcolor[#00000000;false]" + +function default.ui.get_itemslot_bg(x, y, w, h) + local out = "" + for i = 0, w - 1, 1 do + for j = 0, h - 1, 1 do + out = out .."image["..x+i..","..y+j..";1,1;ui_itemslot.png]" + end + end + return out +end + +function default.ui.get_hotbar_itemslot_bg(x, y, w, h) + local out = "" + for i = 0, w - 1, 1 do + for j = 0, h - 1, 1 do + out = out .."image["..x+i..","..y+j..";1,1;ui_itemslot.png^ui_itemslot_dark.png]" + end + end + return out +end + +function default.ui.image_button(x, y, w, h, name, image) + local image = minetest.formspec_escape(image) + + return "image_button["..x..","..y..";"..w..","..h..";"..image..";"..name..";;;false;"..image.."]" +end + +function default.ui.button(x, y, w, h, name, label, noclip) + local nc = "false" + + if noclip then + nc = "true" + end + + if w == 2 then + return "image_button["..x..","..y..";"..w..","..h..";ui_button_2w_inactive.png;"..name..";"..label..";"..nc..";false;ui_button_2w_active.png]" + else + return "image_button["..x..","..y..";"..w..","..h..";ui_button_3w_inactive.png;"..name..";"..label..";"..nc..";false;ui_button_3w_active.png]" + end +end + +function default.ui.button_exit(x, y, w, h, name, label, noclip) + local nc = "false" + + if noclip then + nc = "true" + end + + if w == 2 then + return "image_button_exit["..x..","..y..";"..w..","..h..";ui_button_2w_inactive.png;"..name..";"..label..";"..nc..";false;ui_button_2w_active.png]" + else + return "image_button_exit["..x..","..y..";"..w..","..h..";ui_button_3w_inactive.png;"..name..";"..label..";"..nc..";false;ui_button_3w_active.png]" + end +end + +function default.ui.tab(x, y, name, icon, tooltip) + local tooltip = tooltip or "" + local shifted_icon = "[combine:16x16:0,0=ui_tab_active.png:0,1="..icon + + local form = "" + form = form .. "image_button["..x..","..y..";1,1;ui_tab_inactive.png^"..icon..";"..name..";;true;false;"..minetest.formspec_escape(shifted_icon).."]" + form = form .. "tooltip["..name..";"..tooltip.."]" + + return form +end + +local function get_itemdef_field(itemname, fieldname) + if not minetest.registered_items[itemname] then + return nil + end + return minetest.registered_items[itemname][fieldname] +end + +function default.ui.fake_itemstack(x, y, itemstack, name) + local name = name or "fake_itemstack" + + local itemname = itemstack:get_name() + local itemamt = itemstack:get_count() + + local itemimage = "" + if itemname ~= "" then + local inventory_image = get_itemdef_field(itemname, "inventory_image") + if inventory_image and inventory_image ~= "" then + itemimage = inventory_image + else + local tiles = get_itemdef_field(itemname, "tiles") + + local t1 = tiles[1] + local t2 = tiles[1] + local t3 = tiles[1] + + if #tiles == 3 then + t1 = tiles[1] + t2 = tiles[3] + t3 = tiles[3] + elseif #tiles == 6 then + t1 = tiles[1] + t2 = tiles[5] + t3 = tiles[6] + end + + itemimage=minetest.inventorycube(t1, t2, t3) + end + end + itemimage = minetest.formspec_escape(itemimage) + + local itemdesc = "" + if minetest.registered_items[itemname].description ~= nil then + itemdesc = minetest.registered_items[itemname].description + end + + if itemamt <= 1 then itemamt = "" end + + local result = "" + if itemname ~= "" then + result = result .. "image_button["..x..","..y..";1,1;"..itemimage..";"..name..";;false;false;"..itemimage.."]" + result = result .. "label["..(x+0.6)..","..(y+0.5)..";"..itemamt.."]" + result = result .. "tooltip["..name..";"..itemdesc.."]" + end + + return result +end + +function default.ui.fake_simple_itemstack(x, y, itemname, name) + local name = name or "fake_simple_itemstack" + + local itemimage = "" + if itemname ~= "" then + local inventory_image = get_itemdef_field(itemname, "inventory_image") + if inventory_image and inventory_image ~= "" then + itemimage = inventory_image + else + local tiles = get_itemdef_field(itemname, "tiles") + + local t1 = tiles[1] + local t2 = tiles[1] + local t3 = tiles[1] + + if #tiles == 3 then + t1 = tiles[1] + t2 = tiles[3] + t3 = tiles[3] + elseif #tiles == 6 then + t1 = tiles[1] + t2 = tiles[5] + t3 = tiles[6] + end + + itemimage=minetest.inventorycube(t1, t2, t3) + end + end + itemimage = minetest.formspec_escape(itemimage) + + local itemdesc = "" + if minetest.registered_items[itemname].description ~= nil then + itemdesc = minetest.registered_items[itemname].description + end + + local result = "" + if itemname ~= "" then + result = result .. "image_button["..x..","..y..";1,1;"..itemimage..";"..name..";;false;false;"..itemimage.."]" + result = result .. "tooltip["..name..";"..itemdesc.."]" + end + + return result +end + +function default.ui.item_group(x, y, group, name) + local name = name or "fake_simple_itemstack" + + local itemname = "" + + for itemn, itemdef in pairs(minetest.registered_items) do + if minetest.get_item_group(itemn, group) ~= 0 then + itemname = itemn + end + end + + local itemimage = "" + if itemname ~= "" then + local inventory_image = get_itemdef_field(itemname, "inventory_image") + if inventory_image and inventory_image ~= "" then + itemimage = inventory_image + else + local tiles = get_itemdef_field(itemname, "tiles") + + local t1 = tiles[1] + local t2 = tiles[1] + local t3 = tiles[1] + + if #tiles == 3 then + t1 = tiles[1] + t2 = tiles[3] + t3 = tiles[3] + elseif #tiles == 6 then + t1 = tiles[1] + t2 = tiles[5] + t3 = tiles[6] + end + + itemimage=minetest.inventorycube(t1, t2, t3) + end + end + + local result = "" + if itemname ~= "" then + local itemdesc = "" + itemimage = minetest.formspec_escape(itemimage) + + if minetest.registered_items[itemname].description ~= nil then + itemdesc = minetest.registered_items[itemname].description + end + + result = result .. "image_button["..x..","..y..";1,1;"..itemimage..";"..name..";;false;false;"..itemimage.."]" + result = result .. "label["..(x+0.4)..","..(y+0.35)..";G]" + result = result .. "tooltip["..name..";Group: "..group.."]" + end + + return result +end + +default.ui.registered_pages = { +} + +function default.ui.get_page(name) + local page= default.ui.registered_pages[name] + + if page == nil then + default.log("UI page '" .. name .. "' is not yet registered", "dev") + page = "" + end + + return page +end + +function default.ui.register_page(name, form) + default.ui.registered_pages[name] = form +end + +local form_core = "" +form_core = form_core .. "size[8.5,9]" +form_core = form_core .. default.ui.core.colors +form_core = form_core .. default.ui.core.bg +form_core = form_core .. default.ui.tab(-0.9, 1, "tab_crafting", "ui_icon_crafting.png", "Crafting") +if minetest.get_modpath("craftingguide") ~= nil then + form_core = form_core .. default.ui.tab(-0.9, 1.78, "tab_craftingguide", "ui_icon_craftingguide.png", "Crafting Guide") +end +if minetest.get_modpath("armor") ~= nil then + form_core = form_core .. default.ui.tab(-0.9, 2.56, "tab_armor", "ui_icon_armor.png", "Armor") +end +if minetest.get_modpath("achievements") ~= nil then + form_core = form_core .. default.ui.tab(-0.9, 3.34, "tab_achievements", "ui_icon_achievements.png", "Achievements") +end +form_core = form_core .. "background[0,0;8.5,9;ui_formspec_bg_tall.png]" +default.ui.register_page("core", form_core) +default.ui.register_page("core_2part", form_core .. "background[0,0;8.5,4.5;ui_formspec_bg_short.png]") + +local form_core_notabs = "" +form_core_notabs = form_core_notabs .. "size[8.5,9]" +form_core_notabs = form_core_notabs .. default.ui.core.colors +form_core_notabs = form_core_notabs .. default.ui.core.bg +form_core_notabs = form_core_notabs .. "background[0,0;8.5,9;ui_formspec_bg_tall.png]" +default.ui.register_page("core_notabs", form_core_notabs) +default.ui.register_page("core_notabs_2part", form_core_notabs .. "background[0,0;8.5,4.5;ui_formspec_bg_short.png]") + +local form_crafting = default.ui.get_page("core_2part") +form_crafting = form_crafting .. "list[current_player;craft;2.25,0.75;3,3;]" +form_crafting = form_crafting .. "image[5.25,1.75;1,1;ui_arrow.png^[transformR270]" +form_crafting = form_crafting .. "list[current_player;craftpreview;6.25,1.75;1,1;]" +form_crafting = form_crafting .. default.ui.get_itemslot_bg(2.25, 0.75, 3, 3) +form_crafting = form_crafting .. default.ui.get_itemslot_bg(6.25, 1.75, 1, 1) +form_crafting = form_crafting .. "list[current_player;main;0.25,4.75;8,4;]" +form_crafting = form_crafting .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1) +form_crafting = form_crafting .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3) +default.ui.register_page("core_crafting", form_crafting) + +function default.ui.receive_fields(player, form_name, fields) + local name = player:get_player_name() + +-- print("Received formspec fields from '"..name.."': "..dump(fields)) + + if fields.tab_crafting then + minetest.show_formspec(name, "core_crafting", default.ui.get_page("core_crafting")) + elseif minetest.get_modpath("craftingguide") ~= nil and fields.tab_craftingguide then + minetest.show_formspec(name, "core_craftingguide", craftingguide.get_formspec(name)) + elseif minetest.get_modpath("armor") ~= nil and fields.tab_armor then + minetest.show_formspec(name, "core_armor", default.ui.get_page("core_armor")) + elseif minetest.get_modpath("achievements") ~= nil and fields.tab_achievements then + minetest.show_formspec(name, "core_achievements", default.ui.get_page("core_achievements")) + end +end + +minetest.register_on_player_receive_fields( + function(player, form_name, fields) + default.ui.receive_fields(player, form_name, fields) + end) + +minetest.register_on_joinplayer( + function(player) + local function cb(player) + minetest.chat_send_player(player:get_player_name(), "Have fun!") + end + minetest.after(1.0, cb, player) + player:set_inventory_formspec(default.ui.get_page("core_crafting")) + end) \ No newline at end of file diff --git a/mods/default/functions.lua b/mods/default/functions.lua new file mode 100644 index 0000000..0923531 --- /dev/null +++ b/mods/default/functions.lua @@ -0,0 +1,294 @@ +-- +-- Functions/ABMs +-- + +-- Saplings growing + +function default.grow_tree(pos, variety) + local function grow() + if variety == "apple" then + minetest.place_schematic({x = pos.x-2, y = pos.y-1, z = pos.z-2}, minetest.get_modpath("default").."/schematics/default_tree.mts", "0", {}, false) + elseif variety == "oak" then + minetest.place_schematic({x = pos.x-2, y = pos.y-1, z = pos.z-2}, minetest.get_modpath("default").."/schematics/default_tree.mts", "0", {["default:leaves"] = "default:leaves_oak", ["default:tree"] = "default:tree_oak", ["default:apple"] = "air"}, false) + elseif variety == "birch" then + minetest.place_schematic({x = pos.x-1, y = pos.y-1, z = pos.z-1}, minetest.get_modpath("default").."/schematics/default_squaretree.mts", "0", {["default:leaves"] = "default:leaves_birch", ["default:tree"] = "default:tree_birch", ["default:apple"] = "air"}, false) + end + end + + minetest.remove_node(pos) + + minetest.after(0, grow) + + default.log(variety.." tree sapling grows at "..minetest.pos_to_string(pos), "info") +end + +minetest.register_abm( -- apple trees or default trees + { + nodenames = {"default:sapling"}, + interval = 10, + chance = 40, + action = function(pos, node) + local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil + + if is_soil == nil or is_soil == 0 then return end + + default.grow_tree(pos, "apple") + end + }) + +minetest.register_abm( -- oak trees + { + nodenames = {"default:sapling_oak"}, + interval = 10, + chance = 60, + action = function(pos, node) + local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil + if is_soil == nil or is_soil == 0 then return end + default.grow_tree(pos, "oak") + end + }) + +minetest.register_abm( -- birch trees + { + nodenames = {"default:sapling_birch"}, + interval = 10, + chance = 50, + action = function(pos, node) + local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil + if is_soil == nil or is_soil == 0 then return end + default.grow_tree(pos, "birch") + end + }) + +-- Vertical plants + +function default.dig_up(pos, node, digger) + -- if digger == nil then return end + local np = {x = pos.x, y = pos.y + 1, z = pos.z} + local nn = minetest.get_node(np) + if nn.name == node.name then + minetest.node_dig(np, nn, digger) + end +end + +-- Leaf decay + +default.leafdecay_trunk_cache = {} +default.leafdecay_enable_cache = true +-- Spread the load of finding trunks +default.leafdecay_trunk_find_allow_accumulator = 0 + +minetest.register_globalstep(function(dtime) + local finds_per_second = 5000 + default.leafdecay_trunk_find_allow_accumulator = + math.floor(dtime * finds_per_second) + end) + +default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) + node.param2 = 1 + minetest.set_node(pos, node) + end + +minetest.register_abm( -- leaf decay + { + nodenames = {"group:leafdecay"}, + neighbors = {"air", "group:liquid"}, + -- A low interval and a high inverse chance spreads the load + interval = 2, + chance = 3, + + action = function(p0, node, _, _) + --print("leafdecay ABM at "..p0.x..", "..p0.y..", "..p0.z..")") + local do_preserve = false + local d = minetest.registered_nodes[node.name].groups.leafdecay + if not d or d == 0 then + --print("not groups.leafdecay") + return + end + local n0 = minetest.get_node(p0) + if n0.param2 ~= 0 then + --print("param2 ~= 0") + return + end + local p0_hash = nil + if default.leafdecay_enable_cache then + p0_hash = minetest.hash_node_position(p0) + local trunkp = default.leafdecay_trunk_cache[p0_hash] + if trunkp then + local n = minetest.get_node(trunkp) + local reg = minetest.registered_nodes[n.name] + -- Assume ignore is a trunk, to make the thing work at the border of the active area + if n.name == "ignore" or (reg and reg.groups.tree and reg.groups.tree ~= 0) then + --print("cached trunk still exists") + return + end + --print("cached trunk is invalid") + -- Cache is invalid + table.remove(default.leafdecay_trunk_cache, p0_hash) + end + end + if default.leafdecay_trunk_find_allow_accumulator <= 0 then + return + end + default.leafdecay_trunk_find_allow_accumulator = + default.leafdecay_trunk_find_allow_accumulator - 1 + -- Assume ignore is a trunk, to make the thing work at the border of the active area + local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"}) + if p1 then + do_preserve = true + if default.leafdecay_enable_cache then + --print("caching trunk") + -- Cache the trunk + default.leafdecay_trunk_cache[p0_hash] = p1 + end + end + if not do_preserve then + -- Drop stuff other than the node itself + local itemstacks = minetest.get_node_drops(n0.name) + for _, itemname in ipairs(itemstacks) do + if minetest.get_item_group(n0.name, "leafdecay_drop") ~= 0 or itemname ~= n0.name then + local p_drop = { + x = p0.x - 0.5 + math.random(), + y = p0.y - 0.5 + math.random(), + z = p0.z - 0.5 + math.random(), + } + minetest.add_item(p_drop, itemname) + end + end + -- Remove node + minetest.remove_node(p0) + nodeupdate(p0) + end + end + }) + +minetest.register_abm( -- dirt becomes dirt with grass if uncovered + { + nodenames = {"default:dirt"}, + interval = 2, + chance = 40, + action = function(pos, node) + local above = {x=pos.x, y=pos.y+1, z=pos.z} + local name = minetest.get_node(above).name + local nodedef = minetest.registered_nodes[name] + if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none" and (minetest.get_node_light(above) or 0) >= 11 then + minetest.set_node(pos, {name = "default:dirt_with_grass"}) + end + end + }) + +minetest.register_abm( -- dirt with grass becomes dirt if covered + { + nodenames = {"default:dirt_with_grass"}, + interval = 2, + chance = 10, + action = function(pos, node) + local above = {x=pos.x, y=pos.y+1, z=pos.z} + local name = minetest.get_node(above).name + local nodedef = minetest.registered_nodes[name] + if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none") then + minetest.set_node(pos, {name = "default:dirt"}) + end + end + }) + +minetest.register_abm( -- grass expands + { + nodenames = {"default:grass"}, + interval = 20, + chance = 160, + action = function(pos, node) + local rx = math.random(0, 2) - 1 + local rz = math.random(0, 2) - 1 + + local edgepos = {x = pos.x+rx, y = pos.y, z = pos.z+rz} + local downpos = {x = pos.x+rx, y = pos.y-1, z = pos.z+rz} + local edgenode = minetest.get_node(edgepos) + local downnode = minetest.get_node(downpos) + + if edgenode.name == "air" and downnode.name ~= "air" and downnode.buildable_to == false and walkable == true then + minetest.set_node(edgepos, {name = "default:grass"}) + end + end + }) + +minetest.register_abm( -- cactus grows + { + nodenames = {"default:cactus"}, + neighbors = {"group:sand"}, + interval = 20, + chance = 10, + action = function(pos, node) + pos.y = pos.y-1 + local name = minetest.get_node(pos).name + if minetest.get_item_group(name, "sand") ~= 0 then + pos.y = pos.y+1 + local height = 0 + while minetest.get_node(pos).name == "default:cactus" and height < 3 do + height = height+1 + pos.y = pos.y+1 + end + if height < 3 then + if minetest.get_node(pos).name == "air" then + minetest.set_node(pos, {name="default:cactus"}) + end + end + end + end, + }) + +minetest.register_abm( -- papyrus grows + { + nodenames = {"default:papyrus"}, + neighbors = {"default:sand", "default:dirt_with_grass", "default_dirt"}, + interval = 20, + chance = 10, + action = function(pos, node) + pos.y = pos.y-1 + local name = minetest.get_node(pos).name + if name == "default:sand" or name == "default:dirt" or name == "default:dirt_with_grass" then + if minetest.find_node_near(pos, 3, {"group:water"}) == nil then + return + end + pos.y = pos.y+1 + local height = 0 + while minetest.get_node(pos).name == "default:papyrus" and height < 3 do + height = height+1 + pos.y = pos.y+1 + end + if height < 3 then + if minetest.get_node(pos).name == "air" then + minetest.set_node(pos, {name="default:papyrus"}) + end + end + end + end, + }) + +minetest.register_abm( -- torch flame + { + nodenames = {"default:torch"}, + interval = 5, + chance = 1, + action = function(pos, node) + minetest.add_particlespawner( + { + amount = 10, + time = 5, + minpos = {x = pos.x-0.1, y = pos.y-0.4, z = pos.z-0.1}, + maxpos = {x = pos.x+0.1, y = pos.y, z = pos.z+0.1}, + minvel = {x = -0.3, y = 0.3, z = -0.3}, + maxvel = {x = 0.3, y = 1, z = 0.3}, + minacc = {x = 0, y = 0.5, z = -0}, + maxacc = {x = 0, y = 2, z = 0}, + minexptime = 0.3, + maxexptime = 0.6, + minsize = 4, + maxsize = 6, + texture = "spark.png" + }) + end + }) + +default.log("functions", "loaded") \ No newline at end of file diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua new file mode 100644 index 0000000..deeb746 --- /dev/null +++ b/mods/default/furnace.lua @@ -0,0 +1,267 @@ +-- +-- Furnace +-- + +function default.furnace_active_formspec(percent, item_percent) + local form = default.ui.get_page("core_2part") + form = form .. "list[current_player;main;0.25,4.75;8,4;]" + form_furnace = form_furnace .. "listring[current_player;main]" + form = form .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1) + form = form .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3) + + form = form .. "list[current_name;src;2.25,0.75;1,1;]" + form_furnace = form_furnace .. "listring[current_name;src]" + form = form .. default.ui.get_itemslot_bg(2.25, 0.75, 1, 1) + + form = form .. "list[current_name;fuel;2.25,2.75;1,1;]" + form = form .. default.ui.get_itemslot_bg(2.25, 2.75, 1, 1) + + form = form .. "list[current_name;dst;4.25,1.25;2,2;]" + form_furnace = form_furnace .. "listring[current_name;dst]" + form = form .. default.ui.get_hotbar_itemslot_bg(4.25, 1.25, 2, 2) + + form = form .. "image[2.25,1.75;1,1;ui_fire_bg.png^[lowpart:" + form = form .. (100-percent) .. ":ui_fire.png]" + form = form .. "image[3.25,1.75;1,1;ui_arrow_bg.png^[lowpart:" + form = form .. (item_percent) .. ":ui_arrow.png^[transformR270]" + return form + +end + +local form_furnace = default.ui.get_page("core_2part") +form_furnace = form_furnace .. "list[current_player;main;0.25,4.75;8,4;]" +form_furnace = form_furnace .. "listring[current_player;main]" +form_furnace = form_furnace .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1) +form_furnace = form_furnace .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3) + +form_furnace = form_furnace .. "list[current_name;src;2.25,0.75;1,1;]" +form_furnace = form_furnace .. "listring[current_name;src]" +form_furnace = form_furnace .. default.ui.get_itemslot_bg(2.25, 0.75, 1, 1) + +form_furnace = form_furnace .. "list[current_name;fuel;2.25,2.75;1,1;]" +form_furnace = form_furnace .. default.ui.get_itemslot_bg(2.25, 2.75, 1, 1) + +form_furnace = form_furnace .. "list[current_name;dst;4.25,1.25;2,2;]" +form_furnace = form_furnace .. "listring[current_name;dst]" +form_furnace = form_furnace .. default.ui.get_hotbar_itemslot_bg(4.25, 1.25, 2, 2) + +form_furnace = form_furnace .. "image[2.25,1.75;1,1;ui_fire_bg.png]" +form_furnace = form_furnace .. "image[3.25,1.75;1,1;ui_arrow_bg.png^[transformR270]" + +default.ui.register_page("default_furnace_inactive", form_furnace) + +minetest.register_node( + "default:furnace", + { + description = "Furnace", + tiles ={"default_furnace_top.png", "default_furnace_top.png", "default_furnace_sides.png", + "default_furnace_sides.png", "default_furnace_sides.png", "default_furnace_front.png"}, + paramtype2 = "facedir", + groups = {cracky = 2}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.ui.get_page("default_furnace_inactive")) + meta:set_string("infotext", "Furnace") + + local inv = meta:get_inventory() + inv:set_size("fuel", 1) + inv:set_size("src", 1) + inv:set_size("dst", 4) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("fuel") then + return false + elseif not inv:is_empty("dst") then + return false + elseif not inv:is_empty("src") then + return false + end + return true + end, + }) + +minetest.register_node( + "default:furnace_active", + { + description = "Furnace", + tiles ={"default_furnace_top.png", "default_furnace_top.png", "default_furnace_sides.png", + "default_furnace_sides.png", "default_furnace_sides.png", "default_furnace_front.png^default_furnace_flame.png"}, + paramtype2 = "facedir", + light_source = 8, + drop = "default:furnace", + groups = {cracky = 2}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.ui.get_page("default_furnace_inactive")) + meta:set_string("infotext", "Furnace"); + + local inv = meta:get_inventory() + inv:set_size("fuel", 1) + inv:set_size("src", 1) + inv:set_size("dst", 4) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("fuel") then + return false + elseif not inv:is_empty("dst") then + return false + elseif not inv:is_empty("src") then + return false + end + return true + end, + }) + +function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +minetest.register_abm( + { + nodenames = {"default:furnace", "default:furnace_active"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- + -- Initialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + -- + -- Initialize inventory + -- + local inv = meta:get_inventory() + for listname, size in pairs( + { + src = 1, + fuel = 1, + dst = 4, + }) do + if inv:get_size(listname) ~= size then + inv:set_size(listname, size) + end + end + local srclist = inv:get_list("src") + local fuellist = inv:get_list("fuel") + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + local cookable = true + + if cooked.time == 0 then + cookable = false + end + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + 1 + + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + 1 + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = 0 + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + + fuel_totaltime = fuel.time + fuel_time = 0 + + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + end + end + + -- + -- Update formspec, infotext and node + -- + local formspec = default.ui.get_page("default_furnace_inactive") + local item_state = "" + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + item_state = item_percent .. "%" + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = default.furnace_active_formspec(fuel_percent, item_percent) + swap_node(pos, "default:furnace_active") + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + end, + }) + +default.log("furnace", "loaded") \ No newline at end of file diff --git a/mods/default/hud.lua b/mods/default/hud.lua new file mode 100644 index 0000000..6a9d40d --- /dev/null +++ b/mods/default/hud.lua @@ -0,0 +1,194 @@ +-- Based off MT's core builtin/game/statbars.lua, changed a lot to add statbar background and better layout + +default.hud={} + +local health_bar_definition = { + hud_elem_type = "statbar", + position = { x=0.5, y=1 }, + text = "heart.png", + number = 20, + direction = 0, + size = { x=16, y=16 }, + offset = { x=(-10*16)-64, y=-(48+24+16)}, +} + +local breath_bar_definition = { + hud_elem_type = "statbar", + position = { x=0.5, y=1 }, + text = "bubble.png", + number = 20, + dir = 0, + size = { x=16, y=16 }, + offset = {x=64,y=-(48+24+16)-16}, +} + +local health_bar_bg = { + hud_elem_type = "statbar", + position = { x=0.5, y=1 }, + text = "heart.png^[colorize:#666666:255", + number = 20, + direction = 0, + size = { x=16, y=16 }, + offset = { x=(-10*16)-64, y=-(48+24+16)}, +} + +local breath_bar_bg = { + hud_elem_type = "statbar", + position = { x=0.5, y=1 }, + text = "bubble.png^[colorize:#666666:255", + number = 20, + dir = 0, + size = { x=16, y=16 }, + offset = {x=64,y=-(48+24+16)-16}, +} + +default.hud.ids={} + +function default.hud.initialize_builtin_statbars(player) + if not player:is_player() then + return + end + + local name = player:get_player_name() + + if name == "" then + return + end + + player:hud_set_hotbar_selected_image("ui_hotbar_selected.png") + player:hud_set_hotbar_image("ui_hotbar_bg.png") + + if default.hud.ids[name] == nil then + default.hud.ids[name] = {} + -- flags are not transmitted to client on connect, we need to make sure + -- our current flags are transmitted by sending them actively + local flg=player:hud_get_flags() + flg["healthbar"]=false + flg["breathbar"]=false + + player:hud_set_flags(flg) + end + + if minetest.is_yes(minetest.setting_get("enable_damage")) then + if default.hud.ids[name].id_healthbar == nil then + health_bar_definition.number = player:get_hp() + default.hud.ids[name].id_healthbar_bg = player:hud_add(health_bar_bg) + default.hud.ids[name].id_healthbar = player:hud_add(health_bar_definition) + end + else + if default.hud.ids[name].id_healthbar ~= nil then + player:hud_remove(default.hud.ids[name].id_healthbar) + default.hud.ids[name].id_healthbar = nil + end + end + + if (player:get_breath() < 11) then + if minetest.is_yes(minetest.setting_get("enable_damage")) then + if default.hud.ids[name].id_breathbar == nil then + + default.hud.ids[name].id_breathbar_bg = player:hud_add(breath_bar_bg) + default.hud.ids[name].id_breathbar = player:hud_add(breath_bar_definition) + end + else + if default.hud.ids[name].id_breathbar ~= nil then + player:hud_remove(default.hud.ids[name].id_breathbar) + player:hud_remove(default.hud.ids[name].id_breathbar_bg) + default.hud.ids[name].id_breathbar = nil + end + end + elseif default.hud.ids[name].id_breathbar ~= nil then + player:hud_remove(default.hud.ids[name].id_breathbar) + player:hud_remove(default.hud.ids[name].id_breathbar_bg) + default.hud.ids[name].id_breathbar = nil + end +end + +function default.hud.cleanup_builtin_statbars(player) + if not player:is_player() then + return + end + + local name = player:get_player_name() + + if name == "" then + return + end + + default.hud.ids[name] = nil +end + +function default.hud.player_event_handler(player, eventname) + assert(player:is_player()) + + local name = player:get_player_name() + + if name == "" then + return + end + + if eventname == "health_changed" then + default.hud.initialize_builtin_statbars(player) + + if default.hud.ids[name].id_healthbar ~= nil then + player:hud_change(default.hud.ids[name].id_healthbar,"number",player:get_hp()) + return true + end + end + + if eventname == "breath_changed" then + default.hud.initialize_builtin_statbars(player) + + if default.hud.ids[name].id_breathbar ~= nil then + player:hud_change(default.hud.ids[name].id_breathbar,"number",player:get_breath()*2) + return true + end + end + + if eventname == "hud_changed" then + default.hud.initialize_builtin_statbars(player) + return true + end + + return false +end + +function default.hud.replace_builtin(name, definition) + if definition == nil or type(definition) ~= "table" or definition.hud_elem_type ~= "statbar" then + return false + end + + if name == "health" then + health_bar_definition = definition + + for name,ids in pairs(default.hud.ids) do + local player = minetest.get_player_by_name(name) + if player and default.hud.ids[name].id_healthbar then + player:hud_remove(default.hud.ids[name].id_healthbar) + default.hud.initialize_builtin_statbars(player) + end + end + return true + end + + if name == "breath" then + breath_bar_definition = definition + + for name,ids in pairs(default.hud.ids) do + local player = minetest.get_player_by_name(name) + if player and default.hud.ids[name].id_breathbar then + player:hud_remove(default.hud.ids[name].id_breathbar) + default.hud.initialize_builtin_statbars(player) + end + end + return true + end + + return false +end + +minetest.register_on_joinplayer(default.hud.initialize_builtin_statbars) +minetest.register_on_leaveplayer(default.hud.cleanup_builtin_statbars) +minetest.register_playerevent(default.hud.player_event_handler) + +default.log("hud", "loaded") + diff --git a/mods/default/init.lua b/mods/default/init.lua new file mode 100644 index 0000000..18f430d --- /dev/null +++ b/mods/default/init.lua @@ -0,0 +1,35 @@ +-- +-- Default mod +-- By Kaadmy, for Pixture +-- + +default = {} + +default.WATER_ALPHA = 200 +default.WATER_VISC = 1 +default.LIGHT_MAX = 14 + +function default.log(text, type) + print("Pixture ["..type.."] "..text) +end + +minetest.nodedef_default.stack_max = 60 +minetest.craftitemdef_default.stack_max = 60 + +function minetest.nodedef_default.on_receive_fields(pos, form_name, fields, player) + default.ui.receive_fields(player, form_name, fields) +end + +dofile(minetest.get_modpath("default").."/formspec.lua") +dofile(minetest.get_modpath("default").."/functions.lua") +dofile(minetest.get_modpath("default").."/sounds.lua") +dofile(minetest.get_modpath("default").."/nodes.lua") +dofile(minetest.get_modpath("default").."/crafting.lua") +dofile(minetest.get_modpath("default").."/tools.lua") +dofile(minetest.get_modpath("default").."/furnace.lua") +dofile(minetest.get_modpath("default").."/mapgen.lua") +dofile(minetest.get_modpath("default").."/hud.lua") +dofile(minetest.get_modpath("default").."/player.lua") +dofile(minetest.get_modpath("default").."/model.lua") + +default.log("mod:default", "loaded") \ No newline at end of file diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua new file mode 100644 index 0000000..af90540 --- /dev/null +++ b/mods/default/mapgen.lua @@ -0,0 +1,439 @@ +-- minetest/default/mapgen.lua + +-- +-- Aliases for map generator outputs +-- + +minetest.register_alias("mapgen_stone", "default:stone") +minetest.register_alias("mapgen_tree", "default:tree") +minetest.register_alias("mapgen_leaves", "default:leaves") +minetest.register_alias("mapgen_apple", "default:apple") +minetest.register_alias("mapgen_water_source", "default:water_source") +minetest.register_alias("mapgen_river_water_source", "default:water_source") +minetest.register_alias("mapgen_dirt", "default:dirt") +minetest.register_alias("mapgen_sand", "default:sand") +minetest.register_alias("mapgen_desert_sand", "default:sand") +minetest.register_alias("mapgen_desert_stone", "default:sandstone") +minetest.register_alias("mapgen_gravel", "default:gravel") +minetest.register_alias("mapgen_cobble", "default:cobble") +minetest.register_alias("mapgen_mossycobble", "default:reinforced_cobble") +minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") +minetest.register_alias("mapgen_junglegrass", "default:grass") +minetest.register_alias("mapgen_stone_with_coal", "default:stone_with_coal") +minetest.register_alias("mapgen_stone_with_iron", "default:stone_with_iron") +minetest.register_alias("mapgen_mese", "default:block_steel") +minetest.register_alias("mapgen_stair_cobble", "default:reinforced_frame") +minetest.register_alias("mapgen_lava_source", "default:water_source") + +-- +-- Ore generation +-- + +minetest.register_ore( + { + ore_type = "scatter", + ore = "default:stone_with_coal", + wherein = "default:stone", + clust_scarcity = 8*8*8, + clust_num_ores = 6, + clust_size = 4, + height_min = -128, + height_max = 32, + }) + +minetest.register_ore( + { + ore_type = "scatter", + ore = "default:stone_with_coal", + wherein = "default:stone", + clust_scarcity = 8*8*8, + clust_num_ores = 20, + clust_size = 10, + height_min = -128, + height_max = -32, + }) + +minetest.register_ore( + { + ore_type = "scatter", + ore = "default:stone_with_iron", + wherein = "default:stone", + clust_scarcity = 8*8*8, + clust_num_ores = 6, + clust_size = 4, + height_min = -128, + height_max = 0, + }) + +minetest.register_ore( + { + ore_type = "scatter", + ore = "default:stone_with_iron", + wherein = "default:stone", + clust_scarcity = 8*8*8, + clust_num_ores = 20, + clust_size = 10, + height_min = -128, + height_max = -32, + }) + +minetest.register_ore( + { + ore_type = "blob", + ore = "default:block_steel", + wherein = "default:stone", + clust_scarcity = 8*8*8, + clust_num_ores = 10, + clust_size = 10, + height_min = -128, + height_max = -64, + }) + +function default.make_papyrus(pos, size) + for y=0,size-1 do + local p = {x=pos.x, y=pos.y+y, z=pos.z} + local nn = minetest.get_node(p).name + if minetest.registered_nodes[nn] and + minetest.registered_nodes[nn].buildable_to then + minetest.set_node(p, {name="default:papyrus"}) + else + return + end + end +end + +function default.make_cactus(pos, size) + for y=0,size-1 do + local p = {x=pos.x, y=pos.y+y, z=pos.z} + local nn = minetest.get_node(p).name + if minetest.registered_nodes[nn] and + minetest.registered_nodes[nn].buildable_to then + minetest.set_node(p, {name="default:cactus"}) + else + return + end + end +end + +function default.mgv6_ongen(minp, maxp, seed) + -- Generate cactuses + local perlin1 = minetest.get_perlin(230, 3, 0.6, 100) + -- Assume X and Z lengths are equal + local divlen = 16 + local divs = (maxp.x-minp.x)/divlen+1; + for divx=0,divs-1 do + for divz=0,divs-1 do + local x0 = minp.x + math.floor((divx+0)*divlen) + local z0 = minp.z + math.floor((divz+0)*divlen) + local x1 = minp.x + math.floor((divx+1)*divlen) + local z1 = minp.z + math.floor((divz+1)*divlen) + -- Determine cactus amount from perlin noise + local cactus_amount = math.floor(perlin1:get2d({x=x0, y=z0}) * 6 - 3) + -- Find random positions for cactus based on this random + local pr = PseudoRandom(seed+1) + for i=0,cactus_amount do + local x = pr:next(x0, x1) + local z = pr:next(z0, z1) + -- Find ground level (0...15) + local ground_y = nil + for y=30,0,-1 do + if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then + ground_y = y + break + end + end + if (ground_y and ground_y > 10) and minetest.get_node({x=x,y=ground_y,z=z}).name == "default:sand" then + default.make_cactus({x=x,y=ground_y+1,z=z}, pr:next(2, 3)) + end + end + end + end + + local pr = PseudoRandom(seed+541) + for x=minp.x,maxp.x do + for z=minp.z,maxp.z do + local perlin1=((minetest.get_perlin(5123, 3, 0.6, 1):get2d({x=x*0.03, y=z*0.03}) * 0.5) + 0.5)*60 + if pr:next(0, 15) > perlin1 then + local ground_y = nil + + for y=2,0,-1 do + if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then + ground_y = y + break + end + end + + local pos={x=x, y=ground_y, z=z} + + if (ground_y and ground_y < 20) and minetest.get_node(pos).name == "default:sand" then + if minetest.find_node_near(pos, 3, {"group:water"}) then + default.make_papyrus({x=pos.x, y=pos.y+1, z=pos.z}, pr:next(1, 3)) + end + end + end + + local perlin2=((minetest.get_perlin(8175, 12, 0.8, 0.7):get2d({x=x*0.025, y=z*0.025}) * 0.5) + 0.5)*1000 + if pr:next(0, 15) > perlin2 then + local ground_y = nil + for y=30,0,-1 do + if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then + ground_y = y + break + end + end + if ground_y ~= nil then + local p = {x = x, y = ground_y+1, z = z} + local nn=minetest.get_node(p).name + if minetest.registered_nodes[nn] and + minetest.registered_nodes[nn].buildable_to then + nn = minetest.get_node({x=x,y=ground_y,z=z}).name + if nn == "default:dirt_with_grass" then + if pr:next(0, 100) < 1 then + minetest.set_node(p, {name = "farming:wheat_4"}) + else + minetest.set_node(p, {name = "default:grass"}) + end + elseif nn == "default:sand" and pr:next(0, 300) < 1 then + minetest.set_node(p, {name = "farming:cotton_4"}) + end + end + end + end + end + end +end + +local mg_params = minetest.get_mapgen_params() + +if mg_params.mgname == "v6" then + default.log("please use v5 or v7 mapgen instead; v6 mapgen may not work and is not supported.", "warning") + -- minetest.register_on_generated(default.mgv6_ongen) +end + +-- +-- Biome setup +-- + +minetest.clear_registered_biomes() + +-- Biomes + +minetest.register_biome( + { + name = "Forest", + node_top = "default:dirt_with_grass", depth_top = 1, + node_filler = "default:dirt", depth_filler = 6, + node_underwater = "default:dirt", + node_shore_top = "default:sand", + node_shore_filler = "default:sandstone", height_shore = 0, + y_min = 10, y_max = 200, + heat_point = 30, humidity_point = 40, + }) + +minetest.register_biome( + { + name = "Grassland Ocean", + node_top = "default:sand", depth_top = 3, + node_filler = "default:dirt", depth_filler = 1, + node_underwater = "default:dirt", + node_shore_top = "default:sand", + node_shore_filler = "default:sand", height_shore = 0, + y_min = -32000, y_max = 2, + heat_point = 50, humidity_point = 35, + }) + +minetest.register_biome( + { + name = "Grassland", + node_top = "default:dirt_with_grass", depth_top = 1, + node_filler = "default:dirt", depth_filler = 3, + node_underwater = "default:dirt", + node_shore_top = "default:sand", + node_shore_filler = "default:sand", height_shore = 0, + y_min = 3, y_max = 32000, + heat_point = 50, humidity_point = 35, + }) + +minetest.register_biome( + { + name = "Desert", + node_top = "default:sand", depth_top = 3, + node_filler = "default:sandstone", depth_filler = 8, + node_underwater = "default:dirt", + node_shore_top = "default:sand", + node_shore_filler = "default:sand", height_shore = 0, + y_min = -32000, y_max = 32000, + heat_point = 80, humidity_point = 10, + }) + +-- Decorations + +minetest.register_decoration( + { + deco_type = "schematic", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"Grassland"}, + flags = "place_center_x, place_center_z", + schematic = minetest.get_modpath("default").."/schematics/default_tree.mts", + y_min = -32000, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "schematic", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + fill_ratio = 0.009, + biomes = {"Forest"}, + flags = "place_center_x, place_center_z", + replacements = {["default:leaves"] = "default:leaves_oak", ["default:tree"] = "default:tree_oak", ["default:apple"] = "air"}, + schematic = minetest.get_modpath("default").."/schematics/default_tree.mts", + y_min = -32000, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "schematic", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + fill_ratio = 0.004, + biomes = {"Forest"}, + flags = "place_center_x, place_center_z", + replacements = {["default:leaves"] = "default:leaves_birch", ["default:tree"] = "default:tree_birch", ["default:apple"] = "air"}, + schematic = minetest.get_modpath("default").."/schematics/default_squaretree.mts", + y_min = -32000, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "schematic", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + fill_ratio = 0.008, + biomes = {"Forest"}, + flags = "place_center_x, place_center_z", + schematic = minetest.get_modpath("default").."/schematics/default_megatree.mts", + y_min = -32000, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "simple", + place_on = "default:sand", + spawn_by = "default:water_source", + num_spawn_by = 2, + sidelen = 16, + fill_ratio = 0.07, + biomes = {"Grassland Ocean"}, + decoration = {"default:papyrus"}, + height = 2, + height_max = 3, + y_min = 0, + y_max = 5, + }) + +minetest.register_decoration( + { + deco_type = "simple", + place_on = "default:dirt_with_grass", + sidelen = 16, + fill_ratio = 0.15, + biomes = {"Grassland", "Forest"}, + decoration = {"default:grass"}, + y_min = 0, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "simple", + place_on = "default:dirt_with_grass", + sidelen = 16, + fill_ratio = 0.08, + biomes = {"Forest"}, + decoration = {"default:tall_grass"}, + y_min = 0, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "simple", + place_on = "default:dirt_with_grass", + sidelen = 16, + fill_ratio = 0.006, + biomes = {"Grassland"}, + decoration = {"farming:wheat_4"}, + y_min = 0, + y_max = 32000, + }) + +minetest.register_decoration( + { + deco_type = "simple", + place_on = "default:sand", + sidelen = 16, + fill_ratio = 0.004, + biomes = {"Desert"}, + decoration = {"farming:cotton_4"}, + y_min = 0, + y_max = 32000, + }) + +--[[minetest.register_decoration( +{ + deco_type = "schematic", + place_on = {"default:dirt_with_grass"}, + noise_params = { + offset = 0.03, + scale = 0.03, + spread = {x = 2000, y = 4000, z = 2000}, + seed = 2442, + octaves = 1, + persist = 0.01, + }, + sidelen = 16, + fill_ratio = 0.004, + flags = "place_center_x, place_center_z, force_placement", + schematic = minetest.get_modpath("default").."/schematics/default_house.mts", + y_min = 5, + y_max = 50, + + rotation = "random", +})--]] + +minetest.register_decoration( + { + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.004, + biomes = {"Desert"}, + flags = "place_center_x, place_center_z", + schematic = minetest.get_modpath("default").."/schematics/default_cactus.mts", + y_min = 5, + y_max = 32000, + rotation = "random", + }) + +--[[minetest.register_decoration( +{ + deco_type = "simple", + place_on = "default:sand", + sidelen = 16, + fill_ratio = 0.004, + biomes = {"Desert"}, + decoration = {"default:cactus"}, + height = 2, + height_max = 3, + y_min = 5, + y_max = 32000, +})--]] + +default.log("mapgen", "loaded") \ No newline at end of file diff --git a/mods/default/model.lua b/mods/default/model.lua new file mode 100644 index 0000000..041aebb --- /dev/null +++ b/mods/default/model.lua @@ -0,0 +1,166 @@ +-- Copied from minetest_game and changed a bit + +-- Minetest 0.4 mod: player +-- See README.txt for licensing and other information. + +-- Player animation blending +-- Note: This is currently broken due to a bug in Irrlicht, leave at 0 +local animation_blend=0 + +default.registered_player_models={} + +-- Local for speed. +local models=default.registered_player_models + +function default.player_register_model(name, def) + models[name]=def +end + +-- Default player appearance +default.player_register_model( + "character.b3d", + { + animation_speed=30, + textures={"character.png"}, + animations={ + -- Standard animations. + stand ={x =0, y =79}, + lay ={x=162, y=166}, + walk ={x=168, y=187}, + mine ={x=189, y=198}, + walk_mine={x=200, y=219}, + -- Extra animations (not currently used by the game). + sit ={ x =81, y=160}, + }, + }) + +-- Player stats and animations +local player_model={} +local player_textures={} +local player_anim={} +local player_sneak={} +default.player_attached={} + +function default.player_get_animation(player) + local name=player:get_player_name() + return { + model=player_model[name], + textures=player_textures[name], + animation=player_anim[name], + } +end + +-- Called when a player's appearance needs to be updated +function default.player_set_model(player, model_name) + local name=player:get_player_name() + local model=models[model_name] + if player_model[name] == model_name then + return + end + player:set_properties( + { + mesh=model_name, + textures=player_textures[name] or model.textures, + visual="mesh", + visual_size=model.visual_size or {x=1, y=1}, + }) + default.player_set_animation(player, "stand") + player_model[name]=model_name +end + +function default.player_get_textures(player) + return player:get_properties().textures +end + +function default.player_set_textures(player, textures) + local name=player:get_player_name() + player_textures[name]=textures + player:set_properties({textures=textures,}) +end + +function default.player_set_animation(player, anim_name, speed) + local name=player:get_player_name() + if player_anim[name] == anim_name then + return + end + + local model=player_model[name] and models[player_model[name]] + if not (model and model.animations[anim_name]) then + return + end + + local anim=model.animations[anim_name] + player_anim[name]=anim_name + player:set_animation(anim, speed or model.animation_speed, animation_blend) +end + +-- Update appearance when the player joins +minetest.register_on_joinplayer( + function(player) + default.player_attached[player:get_player_name()]=false + default.player_set_model(player, "character.b3d") + player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) + end) + +minetest.register_on_leaveplayer( + function(player) + local name=player:get_player_name() + player_model[name]=nil + player_anim[name]=nil + player_textures[name]=nil + end) + +-- Localize for better performance. +local player_set_animation=default.player_set_animation +local player_attached=default.player_attached + +-- Check each player and apply animations +minetest.register_globalstep( + function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local name=player:get_player_name() + local model_name=player_model[name] + local model=model_name and models[model_name] + local controls=player:get_player_control() + +--[[ if controls.sneak then --- setting makes_footstep_sound apperantly does nothing :( + player:set_properties({makes_footstep_sound = false}) + else + player:set_properties({makes_footstep_sound = true}) + end--]] + + if model and not player_attached[name] then + local walking=false + local animation_speed_mod=model.animation_speed or 30 + + -- Determine if the player is walking + if controls.up or controls.down or controls.left or controls.right then + walking=true + end + + -- Determine if the player is sneaking, and reduce animation speed if so + if controls.sneak then + animation_speed_mod=animation_speed_mod / 2 + end + + -- Apply animations based on what the player is doing + if player:get_hp() == 0 then + player_set_animation(player, "lay") + elseif walking then + if player_sneak[name] ~= controls.sneak then + player_anim[name]=nil + player_sneak[name]=controls.sneak + end + if controls.LMB then + player_set_animation(player, "walk_mine", animation_speed_mod) + else + player_set_animation(player, "walk", animation_speed_mod) + end + elseif controls.LMB then + player_set_animation(player, "mine") + else + player_set_animation(player, "stand", animation_speed_mod) + end + end + end + end) diff --git a/mods/default/models/character.b3d b/mods/default/models/character.b3d new file mode 100644 index 0000000..bc9d927 Binary files /dev/null and b/mods/default/models/character.b3d differ diff --git a/mods/default/models/character.png b/mods/default/models/character.png new file mode 100644 index 0000000..b94b592 Binary files /dev/null and b/mods/default/models/character.png differ diff --git a/mods/default/models/character.xcf b/mods/default/models/character.xcf new file mode 100644 index 0000000..6912398 Binary files /dev/null and b/mods/default/models/character.xcf differ diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua new file mode 100644 index 0000000..82c66f3 --- /dev/null +++ b/mods/default/nodes.lua @@ -0,0 +1,811 @@ +-- +-- Node definitions +-- + +minetest.register_node( + "default:stone", + { + description = "Stone", + tiles ={"default_stone.png"}, + groups = {cracky=2, stone=1}, + drop = "default:cobble", + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:cobble", + { + description = "Cobble", + tiles ={"default_cobbles.png"}, + stack_max = 240, + groups = {cracky=3, stone=1}, + sounds = default.node_sound_stone_defaults(), + is_ground_content = true, + }) + +minetest.register_node( + "default:reinforced_cobble", + { + description = "Reinforced Cobble", + tiles ={"default_reinforced_cobbles.png"}, + groups = {cracky=1, stone=1}, + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:stone_with_coal", + { + description = "Stone with Coal", + tiles ={"default_stone.png^default_mineral_coal.png"}, + groups = {cracky=1, stone=1}, + drop = "default:lump_coal", + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:stone_with_iron", + { + description = "Stone with Iron", + tiles ={"default_stone.png^default_mineral_iron.png"}, + groups = {cracky=1, stone=1}, + drop = "default:lump_iron", + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:block_steel", + { + description = "Steel Block", + tiles ={"default_block_steel.png"}, + groups = {cracky=1}, + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:block_coal", + { + description = "Coal Block", + tiles ={"default_block_coal.png"}, + groups = {choppy=3, oddly_breakable_by_hand = 3}, + is_ground_content = true, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:dirt", + { + description = "Dirt", + tiles ={"default_dirt.png"}, + stack_max = 240, + groups = {crumbly=3, soil=1, fall_damage_add_percent=-5}, + is_ground_content = true, + sounds = default.node_sound_dirt_defaults(), + }) + +minetest.register_node( + "default:dirt_with_grass", + { + description = "Dirt with Grass", + tiles ={"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, + groups = {crumbly=3, soil=1, fall_damage_add_percent=-5}, + drop = { + max_items = 3, + items = { + {items = {"default:dirt"}, rarity = 1}, + {items = {"default:grass 10"}, rarity = 30}, + {items = {"default:grass 3"}, rarity = 9}, + {items = {"default:grass 2"}, rarity = 6}, + {items = {"default:grass 1"}, rarity = 3}, + } + }, + is_ground_content = true, + sounds = default.node_sound_dirt_defaults( + { + footstep = {name="default_soft_footstep", gain=0.4}, + }), + }) + +minetest.register_node( + "default:dirt_path", + { + description = "Dirt Path", + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5} + }, + tiles ={"default_dirt.png"}, + groups = {crumbly=3, fall_damage_add_percent=-10}, + is_ground_content = true, + sounds = default.node_sound_dirt_defaults(), + }) + +minetest.register_node( + "default:heated_dirt_path", + { + description = "Heated Dirt Path", + drawtype = "nodebox", + paramtype = "light", + light_source = 6, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5} + }, + tiles ={"default_dirt.png"}, + groups = {crumbly=3, fall_damage_add_percent=-10}, + is_ground_content = true, + sounds = default.node_sound_dirt_defaults(), + }) + +minetest.register_node( + "default:brick", + { + description = "Brick", + tiles ={"default_brick.png"}, + is_ground_content = false, + groups = {cracky = 2}, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:sand", + { + description = "Sand", + tiles ={"default_sand.png"}, + groups = {crumbly = 3, falling_node = 1, sand = 1, fall_damage_add_percent = -10}, + is_ground_content = true, + sounds = default.node_sound_sand_defaults(), + }) + +minetest.register_node( + "default:sandstone", + { + description = "Sandstone", + tiles ={"default_sandstone.png"}, + groups = {crumbly = 2, cracky = 3}, + drop = "default:sand 2", + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_node( + "default:gravel", + { + description = "Gravel", + tiles ={"default_gravel.png"}, + groups = {crumbly = 2, falling_node = 1}, + is_ground_content = true, + sounds = default.node_sound_dirt_defaults( + { + footstep = {name="default_crunch_footstep", gain=0.45}, + }), + }) + +minetest.register_node( + "default:sapling_oak", + { + description = "Oak Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles ={"default_sapling_oak.png"}, + inventory_image = "default_sapling_oak_inventory.png", + wield_image = "default_sapling_oak_inventory.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.4, -0.5, -0.4, 0.4, 0.4, 0.4}, + }, + groups = {snappy = 2, dig_immediate = 2, attached_node = 1, sapling = 1}, + sounds = default.node_sound_defaults(), + }) + +minetest.register_node( + "default:tree_oak", + { + description = "Oak Tree", + tiles = {"default_tree_oak_top.png", "default_tree_oak_top.png", "default_tree_oak.png"}, + groups = {snappy=1, choppy=1, tree=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:leaves_oak", + { + description = "Oak Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles ={"default_leaves_oak.png"}, + paramtype = "light", + waving = 1, + is_ground_content = false, + groups = {snappy=3, leafdecay=4, fall_damage_add_percent=-5, leaves = 1}, + drop = { + max_items = 1, + items = { + { + items = {"default:sapling_oak"}, + rarity = 10, + }, + { + items = {"default:leaves_oak"}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) + +minetest.register_node( + "default:sapling_birch", + { + description = "Birch Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles ={"default_sapling_birch.png"}, + inventory_image = "default_sapling_birch_inventory.png", + wield_image = "default_sapling_birch_inventory.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.4, -0.5, -0.4, 0.4, 0.4, 0.4}, + }, + groups = {snappy=2, dig_immediate=2, attached_node=1, sapling = 1}, + sounds = default.node_sound_defaults(), + }) + +minetest.register_node( + "default:tree_birch", + { + description = "Birch Tree", + tiles = {"default_tree_birch_top.png", "default_tree_birch_top.png", "default_tree_birch.png"}, + groups = {snappy=2, choppy=2, tree=1, oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:leaves_birch", + { + description = "Birch Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles ={"default_leaves_birch.png"}, + paramtype = "light", + waving = 1, + is_ground_content = false, + groups = {snappy=3, leafdecay=4, fall_damage_add_percent=-5, leaves = 1}, + drop = { + max_items = 1, + items = { + { + items = {"default:sapling_birch"}, + rarity = 10, + }, + { + items = {"default:leaves_birch"}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) + +minetest.register_node( + "default:sapling", + { + description = "Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles ={"default_sapling.png"}, + inventory_image = "default_sapling_inventory.png", + wield_image = "default_sapling_inventory.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.4, -0.5, -0.4, 0.4, 0.4, 0.4}, + }, + groups = {snappy=2, dig_immediate=2, attached_node=1, sapling = 1}, + sounds = default.node_sound_defaults(), + }) + +minetest.register_node( + "default:tree", + { + description = "Tree", + tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, + groups = {snappy=2,choppy=2,tree=1,oddly_breakable_by_hand=1}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:leaves", + { + description = "Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles ={"default_leaves.png"}, + paramtype = "light", + waving = 1, + is_ground_content = false, + groups = {snappy=3, leafdecay=3, fall_damage_add_percent=-10, leaves = 1}, + drop = { + max_items = 1, + items = { + { + items = {"default:sapling"}, + rarity = 10, + }, + { + items = {"default:leaves"}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) + +minetest.register_node( + "default:cactus", + { + description = "Cactus", + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5+(1/8), -0.5, -0.5+(1/8), 0.5-(1/8), 0.5, 0.5-(1/8)}, + {-0.5, -0.5, -0.5+(1/3), 0.5, 0.5-(1/3), 0.5-(1/3)}, + {-0.5+(1/3), -0.5, -0.5, 0.5-(1/3), 0.5-(1/3), 0.5}, + }, + }, + tiles ={"default_cactus_top.png", "default_cactus_top.png", "default_cactus_sides.png"}, + -- damage_per_second = 1, + groups = {snappy=2, choppy=2, fall_damage_add_percent=20}, + sounds = default.node_sound_wood_defaults(), + after_dig_node = function(pos, node, metadata, digger) + default.dig_up(pos, node, digger) + end, + on_use = minetest.item_eat({hp = 2, sat = 5}), + }) + +minetest.register_node( + "default:papyrus", + { + description = "Papyrus", + drawtype = "nodebox", + tiles ={"default_papyrus.png"}, + inventory_image = "default_papyrus_inventory.png", + wield_image = "default_papyrus_inventory.png", + paramtype = "light", + walkable = false, + climbable = true, + selection_box = { + type = "fixed", + fixed = {-0.5+(2/16), -0.5, -0.5+(2/16), 0.5-(2/16), 0.5, 0.5-(2/16)} + }, + node_box = { + type = "fixed", + fixed = { + {-0.5+(2/16), -0.5, -0.5+(2/16), -0.5+(4/16), 0.5, -0.5+(4/16)}, + {0.5-(2/16), -0.5, -0.5+(2/16), 0.5-(4/16), 0.5, -0.5+(4/16)}, + {-0.5+(2/16), -0.5, 0.5-(2/16), -0.5+(4/16), 0.5, 0.5-(4/16)}, + {0.5-(2/16), -0.5, 0.5-(2/16), 0.5-(4/16), 0.5, 0.5-(4/16)}, + {-1/16, -0.5, -1/16, 1/16, 0.5, 1/16}, + } + }, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), + after_dig_node = function(pos, node, metadata, digger) + default.dig_up(pos, node, digger) + end, + }) + +minetest.register_node( + "default:bookshelf", + { + description = "Bookshelf", + tiles ={"default_wood.png", "default_wood.png", "default_bookshelf.png"}, + groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.base_formspec.. + "list[current_name;main;0,1.25;8,2;]".. + default.get_slot_bg(0,1.25,8,2)) + meta:set_string("infotext", "Bookshelf") + local inv = meta:get_inventory() + inv:set_size("main", 8*2) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + }) + +minetest.register_node( + "default:glass", + { + description = "Glass", + drawtype = "glasslike_framed_optional", + tiles ={"default_glass_frame.png", "default_glass.png"}, + paramtype = "light", + -- sunlight_propagates = true, + groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, + sounds = default.node_sound_glass_defaults(), + }) + +minetest.register_node( + "default:fence", + { + description = "Wooden Fence", + drawtype = "fencelike", + tiles ={"default_wood.png"}, + inventory_image = "default_fence.png", + wield_image = "default_fence.png", + paramtype = "light", + collision_box = { + type = "fixed", + fixed = {-0.4, -0.5, -0.4, 0.4, 0.75, 0.4}, + }, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2}, + sounds = default.node_sound_wood_defaults(), + after_dig_node = function(pos, node, metadata, digger) + default.dig_up(pos, node, digger) + end, + }) + +minetest.register_node( + "default:ladder", + { + description = "Ladder", + drawtype = "nodebox", + tiles ={"default_ladder_sides.png", "default_ladder_sides.png", "default_ladder_sides.png", "default_ladder_sides.png", "default_ladder_sides.png", "default_ladder.png"}, + inventory_image = "default_ladder_inventory.png", + wield_image = "default_ladder_inventory.png", + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + climbable = true, + node_box = { + type = "fixed", + fixed = { + {-0.5+(1/16), -0.5, 0.5, -0.5+(4/16), 0.5, 0.5-(2/16)}, + {0.5-(1/16), -0.5, 0.5, 0.5-(4/16), 0.5, 0.5-(2/16)}, + {-0.5+(4/16), 0.5-(3/16), 0.5, 0.5-(4/16), 0.5-(5/16), 0.5-(1/16)}, + {-0.5+(4/16), -0.5+(3/16), 0.5, 0.5-(4/16), -0.5+(5/16), 0.5-(1/16)} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0.5, 0.5, 0.5, 0.5-(2/15)} + } + }, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:planks", + { + description = "Planks", + tiles ={"default_wood.png"}, + groups = {planks = 1, snappy = 3, choppy = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:planks_oak", + { + description = "Oak Planks", + tiles ={"default_wood_oak.png"}, + groups = {planks = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:planks_birch", + { + description = "Birch Planks", + tiles ={"default_wood_birch.png"}, + groups = {planks = 1, snappy = 2, choppy = 2, oddly_breakable_by_hand = 2}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:frame", + { + description = "Frame", + tiles ={"default_frame.png"}, + groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:reinforced_frame", + { + description = "Reinforced Frame", + tiles ={"default_reinforced_frame.png"}, + groups = {wood = 1, choppy = 1}, + sounds = default.node_sound_wood_defaults(), + }) + +minetest.register_node( + "default:water_flowing", + { + description = "Water (flowing)", + inventory_image = minetest.inventorycube("default_water.png"), + drawtype = "flowingliquid", + tiles ={"default_water.png"}, + special_tiles = { + { + image = "default_water_animated.png", + backface_culling=false, + animation={type = "vertical_frames", aspect_w= 16, aspect_h = 16, length = 0.8} + }, + { + image = "default_water_animated.png", + backface_culling=false, + animation={type = "vertical_frames", aspect_w= 16, aspect_h = 16, length = 0.8} + }, + }, + alpha = default.WATER_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drowning = 1, + liquidtype = "flowing", + liquid_alternative_flowing = "default:water_flowing", + liquid_alternative_source = "default:water_source", + liquid_viscosity = default.WATER_VISC, + post_effect_color = {a=90, r=40, g=40, b=250}, + groups = {water=1, liquid=1}, + }) + +minetest.register_node( + "default:water_source", + { + description = "Water", + inventory_image = minetest.inventorycube("default_water.png"), + drawtype = "liquid", + tiles ={"default_water.png"}, + special_tiles = { + { + image = "default_water.png", + backface_culling=false, + }, + }, + alpha = default.WATER_ALPHA, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drowning = 1, + liquidtype = "source", + liquid_alternative_flowing = "default:water_flowing", + liquid_alternative_source = "default:water_source", + liquid_viscosity = default.WATER_VISC, + post_effect_color = {a=90, r=40, g=40, b=250}, + groups = {water=1, liquid=1}, + }) + +minetest.register_node( + "default:torch", + { + description = "Torch", + drawtype = "nodebox", + tiles ={ + { + name = "default_torch_3d_ends.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }, + { + name = "default_torch_3d_ends.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }, + { + name = "default_torch_3d.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }, + }, + inventory_image = "default_torch.png", + wield_image = "default_torch.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + is_ground_content = false, + walkable = false, + light_source = default.LIGHT_MAX-1, + node_box = { + type = "wallmounted", + wall_top = {-2/16, 0, -2/16, 2/16, 0.5, 2/16}, + wall_bottom = {-2/16, -0.5, -2/16, 2/16, 0, 2/16}, + wall_side = {-0.5, -8/16, -0.1, -0.5+4/16, 0, 0.1}, + }, + groups = {choppy=2, dig_immediate=3, attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), + }) + +minetest.register_node( + "default:sign", + { + description = "Sign", + drawtype = "signlike", + tiles = {"default_sign.png"}, + inventory_image = "default_sign.png", + wield_image = "default_sign.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + is_ground_content = false, + walkable = false, + selection_box = { + type = "wallmounted", + wall_top = {-0.5+(4/16), 0.5, -0.5+(1/16), 0.5-(4/16), 0.5-(1/16), 0.5-(1/16)}, + wall_bottom = {-0.5+(4/16), -0.5, -0.5+(1/16), 0.5-(4/16), -0.5+(1/16), 0.5-(1/16)}, + wall_side = {-0.5, -0.5+(4/16), -0.5+(1/16), -0.5+(1/16), 0.5-(4/16), 0.5-(1/16)}, + --wall_top = + --wall_bottom = + --wall_side = + }, + groups = {choppy=2,dig_immediate=2,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), + on_construct = function(pos) + --local n = minetest.get_node(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", "field[text;;${text}]") + meta:set_string("infotext", "\"\"") + end, + on_receive_fields = function(pos, formname, fields, sender) + --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) + local meta = minetest.get_meta(pos) + fields.text = fields.text or "" + print((sender:get_player_name() or "").." wrote \""..fields.text.. + "\" to sign at "..minetest.pos_to_string(pos)) + meta:set_string("text", fields.text) + meta:set_string("infotext", '"'..fields.text..'"') + end, + }) + +minetest.register_node( + "default:grass", + { + description = "Grass Clump", + drawtype = "plantlike", + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5} + }, + visual_scale = 1.15, + tiles ={"default_grass_clump.png"}, + inventory_image = "default_grass_clump_inventory.png", + wield_image = "default_grass_clump_inventory.png", + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + is_ground_content = true, + groups = {snappy=2,dig_immediate=3,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + }) + +minetest.register_node( + "default:tall_grass", + { + description = "Tall Grass Clump", + drawtype = "plantlike", + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + visual_scale = 1.15, + tiles ={"default_grass_clump_tall.png"}, + inventory_image = "default_grass_clump_inventory.png", + wield_image = "default_grass_clump_inventory.png", + wield_image = "default_grass_clump_tall.png", + drop = "default:grass", + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + is_ground_content = true, + groups = {snappy=2,dig_immediate=3,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + }) + +minetest.register_node( + "default:apple", + { + description = "Apple", + drawtype = "nodebox", + visual_scale = 1.0, + tiles ={"default_apple_top.png", "default_apple_bottom.png", "default_apple_side.png"}, + inventory_image = "default_apple.png", + wield_image = "default_apple.png", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, + {-1/8, 0.25, -1/8, 1/8, 0.5, 1/8}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + {-0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, + {-1/8, 0.25, -1/8, 1/8, 0.5, 1/8}, + }, + }, + sunlight_propagates = true, + walkable = false, + groups = {fleshy=3,dig_immediate=2}, + on_use = minetest.item_eat({hp = 2, sat = 10}), + sounds = default.node_sound_defaults(), + }) + +minetest.register_node( + "default:chest", + { + description = "Chest", + tiles ={"default_chest_top.png", "default_chest_top.png", "default_chest_sides.png", + "default_chest_sides.png", "default_chest_sides.png", "default_chest_front.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.ui.get_page("default_chest")) + meta:set_string("infotext", "Chest") + + local inv = meta:get_inventory() + inv:set_size("main", 8*4) + end, + can_dig = function(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + }) + +local form_chest = default.ui.get_page("core_2part") +form_chest = form_chest .. "list[current_name;main;0.25,0.25;8,4;]" +form_chest = form_chest .. "listring[current_name;main]" +form_chest = form_chest .. default.ui.get_itemslot_bg(0.25, 0.25, 8, 4) + +form_chest = form_chest .. "list[current_player;main;0.25,4.75;8,4;]" +form_chest = form_chest .. "listring[current_player;main]" +form_chest = form_chest .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1) +form_chest = form_chest .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3) +default.ui.register_page("default_chest", form_chest) + +default.log("nodes", "loaded") \ No newline at end of file diff --git a/mods/default/player.lua b/mods/default/player.lua new file mode 100644 index 0000000..5d07d89 --- /dev/null +++ b/mods/default/player.lua @@ -0,0 +1,103 @@ +local player_soundspec = {} +local player_lastsound = {} +local player_health = {} + +local function step(dtime) + for _,player in ipairs(minetest.get_connected_players()) do + local player_pos=player:getpos() + local name=player:get_player_name() + + if player:get_hp() < player_health[name] then + minetest.sound_play( + "default_hurt", + { + to_player = name + }) + end + player_health[name] = player:get_hp() + + player_pos.x=math.floor(player_pos.x+0.5) + player_pos.y=math.ceil(player_pos.y-0.3) + player_pos.z=math.floor(player_pos.z+0.5) + + local nodename=minetest.get_node(player_pos).name + + if player_lastsound[name] == nil then player_lastsound[name] = 100 end + + player_lastsound[name] = player_lastsound[name] + dtime + + if nodename == "default:water_source" or nodename == "default:water_flowing" then + if player_lastsound[name] > 3.3 then + player_soundspec[name]=minetest.sound_play( + "default_water", + { + to_player = name + }) + player_lastsound[name] = 0 + end + else + if player_soundspec[name] ~= nil then + minetest.sound_stop(player_soundspec[name]) + + player_lastsound[name] = 100 + end + end + + local grass_pos=minetest.find_node_near(player_pos, 1, {"default:dirt_with_grass"}) + + if grass_pos ~= nil and math.random(1, 400) == 1 then + if grass_pos.x == player_pos.x and grass_pos.z == player_pos.z then + minetest.set_node(grass_pos, {name = "default:dirt"}) + end + end + end +end + +local function on_joinplayer(player) + local name=player:get_player_name() + + player_health[name] = player:get_hp() + +-- uncomment to enable player-on-player collisions +-- player:set_properties({physical = true}) + +-- uncomment to disable the sneak glitch + player:set_physics_override({sneak_glitch = false}) +end + +local function on_leaveplayer(player) + local name=player:get_player_name() + + player_soundspec[name] = nil + player_lastsound[name] = nil + player_health[name] = nil +end + +minetest.register_privilege("uberspeed", "Can use /uberspeed command") + +minetest.register_chatcommand( + "uberspeed", + { + params = "[on|off|cinematic]", + description = "Set Uberspeed, ", + privs = {weather = true}, + func = function(name, param) + local player=minetest.get_player_by_name(name) + + if param == "on" then + player:set_physics_override({speed = 8}) + elseif param == "off" then + player:set_physics_override({speed = 1}) + elseif param == "cinematic" then + player:set_physics_override({speed = 2}) + else + minetest.chat_send_player(name, "Bad param for /uberspeed; type /help uberspeed") + end + end + }) + +minetest.register_on_joinplayer(on_joinplayer) +minetest.register_on_leaveplayer(on_leaveplayer) +minetest.register_globalstep(step) + +default.log("player", "loaded") \ No newline at end of file diff --git a/mods/default/schematics/default_cactus.mts b/mods/default/schematics/default_cactus.mts new file mode 100644 index 0000000..d9f8dd4 Binary files /dev/null and b/mods/default/schematics/default_cactus.mts differ diff --git a/mods/default/schematics/default_house.mts b/mods/default/schematics/default_house.mts new file mode 100644 index 0000000..1d09bb3 Binary files /dev/null and b/mods/default/schematics/default_house.mts differ diff --git a/mods/default/schematics/default_megatree.mts b/mods/default/schematics/default_megatree.mts new file mode 100644 index 0000000..64e3e6a Binary files /dev/null and b/mods/default/schematics/default_megatree.mts differ diff --git a/mods/default/schematics/default_squaretree.mts b/mods/default/schematics/default_squaretree.mts new file mode 100644 index 0000000..efc0241 Binary files /dev/null and b/mods/default/schematics/default_squaretree.mts differ diff --git a/mods/default/schematics/default_tree.mts b/mods/default/schematics/default_tree.mts new file mode 100644 index 0000000..db404b5 Binary files /dev/null and b/mods/default/schematics/default_tree.mts differ diff --git a/mods/default/sounds.lua b/mods/default/sounds.lua new file mode 100644 index 0000000..2e11772 --- /dev/null +++ b/mods/default/sounds.lua @@ -0,0 +1,106 @@ +-- +-- Sounds +-- + +function default.node_sound_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="", gain=1.0} + table.dig = table.dig or + {name="default_dig_hard", gain=0.3} + table.dug = table.dug or + {name="default_dug_node", gain=0.1} + table.place = table.place or + {name="default_place_node", gain=0.8} + return table +end + +function default.node_sound_stone_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.6} + table.dig = table.dig or + {name="default_dig_hard", gain=0.3} + table.dug = table.dug or + {name="default_hard_footstep", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_dirt_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_crunch_footstep", gain=1.0} + table.dug = table.dug or + {name="default_crunch_footstep", gain=1.0} + table.dig = table.dig or + {name="default_dig_soft", gain=0.3} + table.place = table.place or + {name="default_place_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_sand_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_soft_footstep", gain=0.2} + table.dug = table.dug or + {name="default_soft_footstep", gain=0.4} + table.dig = table.dig or + {name="default_dig_soft", gain=0.2} + table.place = table.place or + {name="default_place_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_wood_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.5} + table.dig = table.dig or + {name="default_dig_hard", gain=0.2} + table.dug = table.dug or + {name="default_hard_footstep", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_leaves_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_soft_footstep", gain=0.35} + table.dug = table.dug or + {name="default_soft_footstep", gain=0.7} + table.dig = table.dig or + {name="default_dig_soft", gain=0.3} + table.place = table.place or + {name="default_place_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_glass_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_hard_footstep", gain=0.5} + table.dig = table.dig or + {name="default_dig_hard", gain=0.5} + table.dug = table.dug or + {name="default_dug_node", gain=1.0} + default.node_sound_defaults(table) + return table +end + +function default.node_sound_snow_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name="default_crunch_footstep", gain=0.3} + table.dig = table.dig or + {name="default_dig_soft", gain=0.2} + table.dug = table.dug or + {name="default_dig_soft", gain=0.8} + default.node_sound_defaults(table) + return table +end \ No newline at end of file diff --git a/mods/default/sounds/default_crunch_footstep.1.ogg b/mods/default/sounds/default_crunch_footstep.1.ogg new file mode 100644 index 0000000..32ec626 Binary files /dev/null and b/mods/default/sounds/default_crunch_footstep.1.ogg differ diff --git a/mods/default/sounds/default_crunch_footstep.2.ogg b/mods/default/sounds/default_crunch_footstep.2.ogg new file mode 100644 index 0000000..da3d8ea Binary files /dev/null and b/mods/default/sounds/default_crunch_footstep.2.ogg differ diff --git a/mods/default/sounds/default_crunch_footstep.3.ogg b/mods/default/sounds/default_crunch_footstep.3.ogg new file mode 100644 index 0000000..ddf5ac6 Binary files /dev/null and b/mods/default/sounds/default_crunch_footstep.3.ogg differ diff --git a/mods/default/sounds/default_dig_dig_immediate.ogg b/mods/default/sounds/default_dig_dig_immediate.ogg new file mode 100644 index 0000000..c520928 Binary files /dev/null and b/mods/default/sounds/default_dig_dig_immediate.ogg differ diff --git a/mods/default/sounds/default_dig_hard.ogg b/mods/default/sounds/default_dig_hard.ogg new file mode 100644 index 0000000..6636f8a Binary files /dev/null and b/mods/default/sounds/default_dig_hard.ogg differ diff --git a/mods/default/sounds/default_dig_oddly_breakable_by_hand.ogg b/mods/default/sounds/default_dig_oddly_breakable_by_hand.ogg new file mode 100644 index 0000000..c520928 Binary files /dev/null and b/mods/default/sounds/default_dig_oddly_breakable_by_hand.ogg differ diff --git a/mods/default/sounds/default_dig_soft.ogg b/mods/default/sounds/default_dig_soft.ogg new file mode 100644 index 0000000..49f10a3 Binary files /dev/null and b/mods/default/sounds/default_dig_soft.ogg differ diff --git a/mods/default/sounds/default_dug_node.ogg b/mods/default/sounds/default_dug_node.ogg new file mode 100644 index 0000000..c520928 Binary files /dev/null and b/mods/default/sounds/default_dug_node.ogg differ diff --git a/mods/default/sounds/default_hard_footstep.1.ogg b/mods/default/sounds/default_hard_footstep.1.ogg new file mode 100644 index 0000000..ca5dd2b Binary files /dev/null and b/mods/default/sounds/default_hard_footstep.1.ogg differ diff --git a/mods/default/sounds/default_hard_footstep.2.ogg b/mods/default/sounds/default_hard_footstep.2.ogg new file mode 100644 index 0000000..e784dbf Binary files /dev/null and b/mods/default/sounds/default_hard_footstep.2.ogg differ diff --git a/mods/default/sounds/default_hard_footstep.3.ogg b/mods/default/sounds/default_hard_footstep.3.ogg new file mode 100644 index 0000000..fffa607 Binary files /dev/null and b/mods/default/sounds/default_hard_footstep.3.ogg differ diff --git a/mods/default/sounds/default_hurt.ogg b/mods/default/sounds/default_hurt.ogg new file mode 100644 index 0000000..45e7839 Binary files /dev/null and b/mods/default/sounds/default_hurt.ogg differ diff --git a/mods/default/sounds/default_place_node_hard.1.ogg b/mods/default/sounds/default_place_node_hard.1.ogg new file mode 100644 index 0000000..76eecf9 Binary files /dev/null and b/mods/default/sounds/default_place_node_hard.1.ogg differ diff --git a/mods/default/sounds/default_place_node_hard.2.ogg b/mods/default/sounds/default_place_node_hard.2.ogg new file mode 100644 index 0000000..1d3b3de Binary files /dev/null and b/mods/default/sounds/default_place_node_hard.2.ogg differ diff --git a/mods/default/sounds/default_soft_footstep.1.ogg b/mods/default/sounds/default_soft_footstep.1.ogg new file mode 100644 index 0000000..d4419f4 Binary files /dev/null and b/mods/default/sounds/default_soft_footstep.1.ogg differ diff --git a/mods/default/sounds/default_soft_footstep.2.ogg b/mods/default/sounds/default_soft_footstep.2.ogg new file mode 100644 index 0000000..2b2175e Binary files /dev/null and b/mods/default/sounds/default_soft_footstep.2.ogg differ diff --git a/mods/default/sounds/default_soft_footstep.3.ogg b/mods/default/sounds/default_soft_footstep.3.ogg new file mode 100644 index 0000000..2b71f97 Binary files /dev/null and b/mods/default/sounds/default_soft_footstep.3.ogg differ diff --git a/mods/default/sounds/default_water.ogg b/mods/default/sounds/default_water.ogg new file mode 100644 index 0000000..9cdab37 Binary files /dev/null and b/mods/default/sounds/default_water.ogg differ diff --git a/mods/default/textures/bubble.png b/mods/default/textures/bubble.png new file mode 100644 index 0000000..3f884ef Binary files /dev/null and b/mods/default/textures/bubble.png differ diff --git a/mods/default/textures/bubble.xcf b/mods/default/textures/bubble.xcf new file mode 100644 index 0000000..5c76c73 Binary files /dev/null and b/mods/default/textures/bubble.xcf differ diff --git a/mods/default/textures/crack_anylength.png b/mods/default/textures/crack_anylength.png new file mode 100644 index 0000000..c5c585a Binary files /dev/null and b/mods/default/textures/crack_anylength.png differ diff --git a/mods/default/textures/crack_anylength.xcf b/mods/default/textures/crack_anylength.xcf new file mode 100644 index 0000000..84b36cf Binary files /dev/null and b/mods/default/textures/crack_anylength.xcf differ diff --git a/mods/default/textures/crosshair.png b/mods/default/textures/crosshair.png new file mode 100644 index 0000000..90fedd2 Binary files /dev/null and b/mods/default/textures/crosshair.png differ diff --git a/mods/default/textures/crosshair.xcf b/mods/default/textures/crosshair.xcf new file mode 100644 index 0000000..6909cad Binary files /dev/null and b/mods/default/textures/crosshair.xcf differ diff --git a/mods/default/textures/default_apple.png b/mods/default/textures/default_apple.png new file mode 100644 index 0000000..4c3f908 Binary files /dev/null and b/mods/default/textures/default_apple.png differ diff --git a/mods/default/textures/default_apple.xcf b/mods/default/textures/default_apple.xcf new file mode 100644 index 0000000..bccc59f Binary files /dev/null and b/mods/default/textures/default_apple.xcf differ diff --git a/mods/default/textures/default_apple_bottom.png b/mods/default/textures/default_apple_bottom.png new file mode 100644 index 0000000..8f7197c Binary files /dev/null and b/mods/default/textures/default_apple_bottom.png differ diff --git a/mods/default/textures/default_apple_bottom.xcf b/mods/default/textures/default_apple_bottom.xcf new file mode 100644 index 0000000..f744da3 Binary files /dev/null and b/mods/default/textures/default_apple_bottom.xcf differ diff --git a/mods/default/textures/default_apple_side.png b/mods/default/textures/default_apple_side.png new file mode 100644 index 0000000..86b3469 Binary files /dev/null and b/mods/default/textures/default_apple_side.png differ diff --git a/mods/default/textures/default_apple_side.xcf b/mods/default/textures/default_apple_side.xcf new file mode 100644 index 0000000..13c9aa6 Binary files /dev/null and b/mods/default/textures/default_apple_side.xcf differ diff --git a/mods/default/textures/default_apple_top.png b/mods/default/textures/default_apple_top.png new file mode 100644 index 0000000..29f85d6 Binary files /dev/null and b/mods/default/textures/default_apple_top.png differ diff --git a/mods/default/textures/default_apple_top.xcf b/mods/default/textures/default_apple_top.xcf new file mode 100644 index 0000000..9d39ac1 Binary files /dev/null and b/mods/default/textures/default_apple_top.xcf differ diff --git a/mods/default/textures/default_axe_carbonsteel.png b/mods/default/textures/default_axe_carbonsteel.png new file mode 100644 index 0000000..425b754 Binary files /dev/null and b/mods/default/textures/default_axe_carbonsteel.png differ diff --git a/mods/default/textures/default_axe_carbonsteel.xcf b/mods/default/textures/default_axe_carbonsteel.xcf new file mode 100644 index 0000000..fc6a452 Binary files /dev/null and b/mods/default/textures/default_axe_carbonsteel.xcf differ diff --git a/mods/default/textures/default_axe_steel.png b/mods/default/textures/default_axe_steel.png new file mode 100644 index 0000000..5de4ebd Binary files /dev/null and b/mods/default/textures/default_axe_steel.png differ diff --git a/mods/default/textures/default_axe_steel.xcf b/mods/default/textures/default_axe_steel.xcf new file mode 100644 index 0000000..de4b447 Binary files /dev/null and b/mods/default/textures/default_axe_steel.xcf differ diff --git a/mods/default/textures/default_axe_stone.png b/mods/default/textures/default_axe_stone.png new file mode 100644 index 0000000..5d72cf4 Binary files /dev/null and b/mods/default/textures/default_axe_stone.png differ diff --git a/mods/default/textures/default_axe_stone.xcf b/mods/default/textures/default_axe_stone.xcf new file mode 100644 index 0000000..054d95d Binary files /dev/null and b/mods/default/textures/default_axe_stone.xcf differ diff --git a/mods/default/textures/default_axe_wood.png b/mods/default/textures/default_axe_wood.png new file mode 100644 index 0000000..5dbfac4 Binary files /dev/null and b/mods/default/textures/default_axe_wood.png differ diff --git a/mods/default/textures/default_axe_wood.xcf b/mods/default/textures/default_axe_wood.xcf new file mode 100644 index 0000000..c8a61a3 Binary files /dev/null and b/mods/default/textures/default_axe_wood.xcf differ diff --git a/mods/default/textures/default_block_coal.png b/mods/default/textures/default_block_coal.png new file mode 100644 index 0000000..e6b129f Binary files /dev/null and b/mods/default/textures/default_block_coal.png differ diff --git a/mods/default/textures/default_block_coal.xcf b/mods/default/textures/default_block_coal.xcf new file mode 100644 index 0000000..18e30aa Binary files /dev/null and b/mods/default/textures/default_block_coal.xcf differ diff --git a/mods/default/textures/default_block_steel.png b/mods/default/textures/default_block_steel.png new file mode 100644 index 0000000..69e38da Binary files /dev/null and b/mods/default/textures/default_block_steel.png differ diff --git a/mods/default/textures/default_block_steel.xcf b/mods/default/textures/default_block_steel.xcf new file mode 100644 index 0000000..2170605 Binary files /dev/null and b/mods/default/textures/default_block_steel.xcf differ diff --git a/mods/default/textures/default_book.png b/mods/default/textures/default_book.png new file mode 100644 index 0000000..c5361c9 Binary files /dev/null and b/mods/default/textures/default_book.png differ diff --git a/mods/default/textures/default_book.xcf b/mods/default/textures/default_book.xcf new file mode 100644 index 0000000..159efd9 Binary files /dev/null and b/mods/default/textures/default_book.xcf differ diff --git a/mods/default/textures/default_bookshelf.png b/mods/default/textures/default_bookshelf.png new file mode 100644 index 0000000..733ce23 Binary files /dev/null and b/mods/default/textures/default_bookshelf.png differ diff --git a/mods/default/textures/default_bookshelf.xcf b/mods/default/textures/default_bookshelf.xcf new file mode 100644 index 0000000..1d1e49f Binary files /dev/null and b/mods/default/textures/default_bookshelf.xcf differ diff --git a/mods/default/textures/default_brick.png b/mods/default/textures/default_brick.png new file mode 100644 index 0000000..1dcd415 Binary files /dev/null and b/mods/default/textures/default_brick.png differ diff --git a/mods/default/textures/default_brick.xcf b/mods/default/textures/default_brick.xcf new file mode 100644 index 0000000..1407e42 Binary files /dev/null and b/mods/default/textures/default_brick.xcf differ diff --git a/mods/default/textures/default_bucket.png b/mods/default/textures/default_bucket.png new file mode 100644 index 0000000..87ea0aa Binary files /dev/null and b/mods/default/textures/default_bucket.png differ diff --git a/mods/default/textures/default_bucket.xcf b/mods/default/textures/default_bucket.xcf new file mode 100644 index 0000000..4057e2a Binary files /dev/null and b/mods/default/textures/default_bucket.xcf differ diff --git a/mods/default/textures/default_bucket_water.png b/mods/default/textures/default_bucket_water.png new file mode 100644 index 0000000..edfeff7 Binary files /dev/null and b/mods/default/textures/default_bucket_water.png differ diff --git a/mods/default/textures/default_bucket_water.xcf b/mods/default/textures/default_bucket_water.xcf new file mode 100644 index 0000000..7eb0a41 Binary files /dev/null and b/mods/default/textures/default_bucket_water.xcf differ diff --git a/mods/default/textures/default_cactus_sides.png b/mods/default/textures/default_cactus_sides.png new file mode 100644 index 0000000..8679228 Binary files /dev/null and b/mods/default/textures/default_cactus_sides.png differ diff --git a/mods/default/textures/default_cactus_sides.xcf b/mods/default/textures/default_cactus_sides.xcf new file mode 100644 index 0000000..a7afae6 Binary files /dev/null and b/mods/default/textures/default_cactus_sides.xcf differ diff --git a/mods/default/textures/default_cactus_top.png b/mods/default/textures/default_cactus_top.png new file mode 100644 index 0000000..53d739e Binary files /dev/null and b/mods/default/textures/default_cactus_top.png differ diff --git a/mods/default/textures/default_cactus_top.xcf b/mods/default/textures/default_cactus_top.xcf new file mode 100644 index 0000000..eddedf9 Binary files /dev/null and b/mods/default/textures/default_cactus_top.xcf differ diff --git a/mods/default/textures/default_chest_front.png b/mods/default/textures/default_chest_front.png new file mode 100644 index 0000000..64e85ee Binary files /dev/null and b/mods/default/textures/default_chest_front.png differ diff --git a/mods/default/textures/default_chest_front.xcf b/mods/default/textures/default_chest_front.xcf new file mode 100644 index 0000000..0644662 Binary files /dev/null and b/mods/default/textures/default_chest_front.xcf differ diff --git a/mods/default/textures/default_chest_front_locked.png b/mods/default/textures/default_chest_front_locked.png new file mode 100644 index 0000000..00f1d06 Binary files /dev/null and b/mods/default/textures/default_chest_front_locked.png differ diff --git a/mods/default/textures/default_chest_front_locked.xcf b/mods/default/textures/default_chest_front_locked.xcf new file mode 100644 index 0000000..c8fe92f Binary files /dev/null and b/mods/default/textures/default_chest_front_locked.xcf differ diff --git a/mods/default/textures/default_chest_sides.png b/mods/default/textures/default_chest_sides.png new file mode 100644 index 0000000..0ca0645 Binary files /dev/null and b/mods/default/textures/default_chest_sides.png differ diff --git a/mods/default/textures/default_chest_sides.xcf b/mods/default/textures/default_chest_sides.xcf new file mode 100644 index 0000000..2566bd0 Binary files /dev/null and b/mods/default/textures/default_chest_sides.xcf differ diff --git a/mods/default/textures/default_chest_top.png b/mods/default/textures/default_chest_top.png new file mode 100644 index 0000000..a5d8b06 Binary files /dev/null and b/mods/default/textures/default_chest_top.png differ diff --git a/mods/default/textures/default_chest_top.xcf b/mods/default/textures/default_chest_top.xcf new file mode 100644 index 0000000..9603e48 Binary files /dev/null and b/mods/default/textures/default_chest_top.xcf differ diff --git a/mods/default/textures/default_cobbles.png b/mods/default/textures/default_cobbles.png new file mode 100644 index 0000000..8686973 Binary files /dev/null and b/mods/default/textures/default_cobbles.png differ diff --git a/mods/default/textures/default_cobbles.xcf b/mods/default/textures/default_cobbles.xcf new file mode 100644 index 0000000..1f42740 Binary files /dev/null and b/mods/default/textures/default_cobbles.xcf differ diff --git a/mods/default/textures/default_dirt.png b/mods/default/textures/default_dirt.png new file mode 100644 index 0000000..cad293a Binary files /dev/null and b/mods/default/textures/default_dirt.png differ diff --git a/mods/default/textures/default_dirt.xcf b/mods/default/textures/default_dirt.xcf new file mode 100644 index 0000000..9bafaf0 Binary files /dev/null and b/mods/default/textures/default_dirt.xcf differ diff --git a/mods/default/textures/default_dust_carbonsteel.png b/mods/default/textures/default_dust_carbonsteel.png new file mode 100644 index 0000000..16e2a13 Binary files /dev/null and b/mods/default/textures/default_dust_carbonsteel.png differ diff --git a/mods/default/textures/default_dust_carbonsteel.xcf b/mods/default/textures/default_dust_carbonsteel.xcf new file mode 100644 index 0000000..f0b4a09 Binary files /dev/null and b/mods/default/textures/default_dust_carbonsteel.xcf differ diff --git a/mods/default/textures/default_fence.png b/mods/default/textures/default_fence.png new file mode 100644 index 0000000..9fc41c1 Binary files /dev/null and b/mods/default/textures/default_fence.png differ diff --git a/mods/default/textures/default_fence.xcf b/mods/default/textures/default_fence.xcf new file mode 100644 index 0000000..4b54707 Binary files /dev/null and b/mods/default/textures/default_fence.xcf differ diff --git a/mods/default/textures/default_fiber.png b/mods/default/textures/default_fiber.png new file mode 100644 index 0000000..47c651d Binary files /dev/null and b/mods/default/textures/default_fiber.png differ diff --git a/mods/default/textures/default_fiber.xcf b/mods/default/textures/default_fiber.xcf new file mode 100644 index 0000000..ba239bf Binary files /dev/null and b/mods/default/textures/default_fiber.xcf differ diff --git a/mods/default/textures/default_flowers.png b/mods/default/textures/default_flowers.png new file mode 100644 index 0000000..e1f6f66 Binary files /dev/null and b/mods/default/textures/default_flowers.png differ diff --git a/mods/default/textures/default_flowers.xcf b/mods/default/textures/default_flowers.xcf new file mode 100644 index 0000000..6a53101 Binary files /dev/null and b/mods/default/textures/default_flowers.xcf differ diff --git a/mods/default/textures/default_frame.png b/mods/default/textures/default_frame.png new file mode 100644 index 0000000..0568e43 Binary files /dev/null and b/mods/default/textures/default_frame.png differ diff --git a/mods/default/textures/default_frame.xcf b/mods/default/textures/default_frame.xcf new file mode 100644 index 0000000..0bbc928 Binary files /dev/null and b/mods/default/textures/default_frame.xcf differ diff --git a/mods/default/textures/default_furnace_flame.png b/mods/default/textures/default_furnace_flame.png new file mode 100644 index 0000000..71dad52 Binary files /dev/null and b/mods/default/textures/default_furnace_flame.png differ diff --git a/mods/default/textures/default_furnace_flame.xcf b/mods/default/textures/default_furnace_flame.xcf new file mode 100644 index 0000000..c4fe8d8 Binary files /dev/null and b/mods/default/textures/default_furnace_flame.xcf differ diff --git a/mods/default/textures/default_furnace_front.png b/mods/default/textures/default_furnace_front.png new file mode 100644 index 0000000..b0e600d Binary files /dev/null and b/mods/default/textures/default_furnace_front.png differ diff --git a/mods/default/textures/default_furnace_front.xcf b/mods/default/textures/default_furnace_front.xcf new file mode 100644 index 0000000..d16f536 Binary files /dev/null and b/mods/default/textures/default_furnace_front.xcf differ diff --git a/mods/default/textures/default_furnace_sides.png b/mods/default/textures/default_furnace_sides.png new file mode 100644 index 0000000..08920de Binary files /dev/null and b/mods/default/textures/default_furnace_sides.png differ diff --git a/mods/default/textures/default_furnace_sides.xcf b/mods/default/textures/default_furnace_sides.xcf new file mode 100644 index 0000000..e71a075 Binary files /dev/null and b/mods/default/textures/default_furnace_sides.xcf differ diff --git a/mods/default/textures/default_furnace_top.png b/mods/default/textures/default_furnace_top.png new file mode 100644 index 0000000..f3f5a4e Binary files /dev/null and b/mods/default/textures/default_furnace_top.png differ diff --git a/mods/default/textures/default_furnace_top.xcf b/mods/default/textures/default_furnace_top.xcf new file mode 100644 index 0000000..295b4d0 Binary files /dev/null and b/mods/default/textures/default_furnace_top.xcf differ diff --git a/mods/default/textures/default_glass.png b/mods/default/textures/default_glass.png new file mode 100644 index 0000000..4005149 Binary files /dev/null and b/mods/default/textures/default_glass.png differ diff --git a/mods/default/textures/default_glass.xcf b/mods/default/textures/default_glass.xcf new file mode 100644 index 0000000..f4bf9f2 Binary files /dev/null and b/mods/default/textures/default_glass.xcf differ diff --git a/mods/default/textures/default_glass_frame.png b/mods/default/textures/default_glass_frame.png new file mode 100644 index 0000000..d6fdffc Binary files /dev/null and b/mods/default/textures/default_glass_frame.png differ diff --git a/mods/default/textures/default_glass_frame.xcf b/mods/default/textures/default_glass_frame.xcf new file mode 100644 index 0000000..6faee75 Binary files /dev/null and b/mods/default/textures/default_glass_frame.xcf differ diff --git a/mods/default/textures/default_grass.png b/mods/default/textures/default_grass.png new file mode 100644 index 0000000..79e215f Binary files /dev/null and b/mods/default/textures/default_grass.png differ diff --git a/mods/default/textures/default_grass.xcf b/mods/default/textures/default_grass.xcf new file mode 100644 index 0000000..7da541f Binary files /dev/null and b/mods/default/textures/default_grass.xcf differ diff --git a/mods/default/textures/default_grass_clump.png b/mods/default/textures/default_grass_clump.png new file mode 100644 index 0000000..978acac Binary files /dev/null and b/mods/default/textures/default_grass_clump.png differ diff --git a/mods/default/textures/default_grass_clump.xcf b/mods/default/textures/default_grass_clump.xcf new file mode 100644 index 0000000..d883c93 Binary files /dev/null and b/mods/default/textures/default_grass_clump.xcf differ diff --git a/mods/default/textures/default_grass_clump_inventory.png b/mods/default/textures/default_grass_clump_inventory.png new file mode 100644 index 0000000..34843c8 Binary files /dev/null and b/mods/default/textures/default_grass_clump_inventory.png differ diff --git a/mods/default/textures/default_grass_clump_inventory.xcf b/mods/default/textures/default_grass_clump_inventory.xcf new file mode 100644 index 0000000..13558d5 Binary files /dev/null and b/mods/default/textures/default_grass_clump_inventory.xcf differ diff --git a/mods/default/textures/default_grass_clump_tall.png b/mods/default/textures/default_grass_clump_tall.png new file mode 100644 index 0000000..38f603f Binary files /dev/null and b/mods/default/textures/default_grass_clump_tall.png differ diff --git a/mods/default/textures/default_grass_clump_tall.xcf b/mods/default/textures/default_grass_clump_tall.xcf new file mode 100644 index 0000000..038bccd Binary files /dev/null and b/mods/default/textures/default_grass_clump_tall.xcf differ diff --git a/mods/default/textures/default_grass_side.png b/mods/default/textures/default_grass_side.png new file mode 100644 index 0000000..334e4ac Binary files /dev/null and b/mods/default/textures/default_grass_side.png differ diff --git a/mods/default/textures/default_grass_side.xcf b/mods/default/textures/default_grass_side.xcf new file mode 100644 index 0000000..498069c Binary files /dev/null and b/mods/default/textures/default_grass_side.xcf differ diff --git a/mods/default/textures/default_gravel.png b/mods/default/textures/default_gravel.png new file mode 100644 index 0000000..70ad647 Binary files /dev/null and b/mods/default/textures/default_gravel.png differ diff --git a/mods/default/textures/default_gravel.xcf b/mods/default/textures/default_gravel.xcf new file mode 100644 index 0000000..401dd37 Binary files /dev/null and b/mods/default/textures/default_gravel.xcf differ diff --git a/mods/default/textures/default_ingot_carbonsteel.png b/mods/default/textures/default_ingot_carbonsteel.png new file mode 100644 index 0000000..90dcb1c Binary files /dev/null and b/mods/default/textures/default_ingot_carbonsteel.png differ diff --git a/mods/default/textures/default_ingot_carbonsteel.xcf b/mods/default/textures/default_ingot_carbonsteel.xcf new file mode 100644 index 0000000..427d1c5 Binary files /dev/null and b/mods/default/textures/default_ingot_carbonsteel.xcf differ diff --git a/mods/default/textures/default_ingot_steel.png b/mods/default/textures/default_ingot_steel.png new file mode 100644 index 0000000..59c892b Binary files /dev/null and b/mods/default/textures/default_ingot_steel.png differ diff --git a/mods/default/textures/default_ingot_steel.xcf b/mods/default/textures/default_ingot_steel.xcf new file mode 100644 index 0000000..963a1b8 Binary files /dev/null and b/mods/default/textures/default_ingot_steel.xcf differ diff --git a/mods/default/textures/default_ladder.png b/mods/default/textures/default_ladder.png new file mode 100644 index 0000000..bc3e57a Binary files /dev/null and b/mods/default/textures/default_ladder.png differ diff --git a/mods/default/textures/default_ladder.xcf b/mods/default/textures/default_ladder.xcf new file mode 100644 index 0000000..85629b8 Binary files /dev/null and b/mods/default/textures/default_ladder.xcf differ diff --git a/mods/default/textures/default_ladder_inventory.png b/mods/default/textures/default_ladder_inventory.png new file mode 100644 index 0000000..fb79049 Binary files /dev/null and b/mods/default/textures/default_ladder_inventory.png differ diff --git a/mods/default/textures/default_ladder_inventory.xcf b/mods/default/textures/default_ladder_inventory.xcf new file mode 100644 index 0000000..490b8b9 Binary files /dev/null and b/mods/default/textures/default_ladder_inventory.xcf differ diff --git a/mods/default/textures/default_ladder_sides.png b/mods/default/textures/default_ladder_sides.png new file mode 100644 index 0000000..d133e79 Binary files /dev/null and b/mods/default/textures/default_ladder_sides.png differ diff --git a/mods/default/textures/default_ladder_sides.xcf b/mods/default/textures/default_ladder_sides.xcf new file mode 100644 index 0000000..0d06e01 Binary files /dev/null and b/mods/default/textures/default_ladder_sides.xcf differ diff --git a/mods/default/textures/default_leaves.png b/mods/default/textures/default_leaves.png new file mode 100644 index 0000000..d75c0a7 Binary files /dev/null and b/mods/default/textures/default_leaves.png differ diff --git a/mods/default/textures/default_leaves.xcf b/mods/default/textures/default_leaves.xcf new file mode 100644 index 0000000..b1cca1a Binary files /dev/null and b/mods/default/textures/default_leaves.xcf differ diff --git a/mods/default/textures/default_leaves_birch.png b/mods/default/textures/default_leaves_birch.png new file mode 100644 index 0000000..997660d Binary files /dev/null and b/mods/default/textures/default_leaves_birch.png differ diff --git a/mods/default/textures/default_leaves_birch.xcf b/mods/default/textures/default_leaves_birch.xcf new file mode 100644 index 0000000..1262f65 Binary files /dev/null and b/mods/default/textures/default_leaves_birch.xcf differ diff --git a/mods/default/textures/default_leaves_oak.png b/mods/default/textures/default_leaves_oak.png new file mode 100644 index 0000000..ed71a1b Binary files /dev/null and b/mods/default/textures/default_leaves_oak.png differ diff --git a/mods/default/textures/default_leaves_oak.xcf b/mods/default/textures/default_leaves_oak.xcf new file mode 100644 index 0000000..31280d6 Binary files /dev/null and b/mods/default/textures/default_leaves_oak.xcf differ diff --git a/mods/default/textures/default_lump_coal.png b/mods/default/textures/default_lump_coal.png new file mode 100644 index 0000000..a1d012a Binary files /dev/null and b/mods/default/textures/default_lump_coal.png differ diff --git a/mods/default/textures/default_lump_coal.xcf b/mods/default/textures/default_lump_coal.xcf new file mode 100644 index 0000000..fc3c8ad Binary files /dev/null and b/mods/default/textures/default_lump_coal.xcf differ diff --git a/mods/default/textures/default_lump_iron.png b/mods/default/textures/default_lump_iron.png new file mode 100644 index 0000000..ad7e5ee Binary files /dev/null and b/mods/default/textures/default_lump_iron.png differ diff --git a/mods/default/textures/default_lump_iron.xcf b/mods/default/textures/default_lump_iron.xcf new file mode 100644 index 0000000..ea4b748 Binary files /dev/null and b/mods/default/textures/default_lump_iron.xcf differ diff --git a/mods/default/textures/default_lump_sugar.png b/mods/default/textures/default_lump_sugar.png new file mode 100644 index 0000000..3da9bd6 Binary files /dev/null and b/mods/default/textures/default_lump_sugar.png differ diff --git a/mods/default/textures/default_lump_sugar.xcf b/mods/default/textures/default_lump_sugar.xcf new file mode 100644 index 0000000..23045e0 Binary files /dev/null and b/mods/default/textures/default_lump_sugar.xcf differ diff --git a/mods/default/textures/default_mineral_coal.png b/mods/default/textures/default_mineral_coal.png new file mode 100644 index 0000000..8f073b0 Binary files /dev/null and b/mods/default/textures/default_mineral_coal.png differ diff --git a/mods/default/textures/default_mineral_coal.xcf b/mods/default/textures/default_mineral_coal.xcf new file mode 100644 index 0000000..23f26c6 Binary files /dev/null and b/mods/default/textures/default_mineral_coal.xcf differ diff --git a/mods/default/textures/default_mineral_iron.png b/mods/default/textures/default_mineral_iron.png new file mode 100644 index 0000000..1bca032 Binary files /dev/null and b/mods/default/textures/default_mineral_iron.png differ diff --git a/mods/default/textures/default_mineral_iron.xcf b/mods/default/textures/default_mineral_iron.xcf new file mode 100644 index 0000000..0036b01 Binary files /dev/null and b/mods/default/textures/default_mineral_iron.xcf differ diff --git a/mods/default/textures/default_paper.png b/mods/default/textures/default_paper.png new file mode 100644 index 0000000..261922b Binary files /dev/null and b/mods/default/textures/default_paper.png differ diff --git a/mods/default/textures/default_paper.xcf b/mods/default/textures/default_paper.xcf new file mode 100644 index 0000000..d111c14 Binary files /dev/null and b/mods/default/textures/default_paper.xcf differ diff --git a/mods/default/textures/default_papyrus.png b/mods/default/textures/default_papyrus.png new file mode 100644 index 0000000..62314cc Binary files /dev/null and b/mods/default/textures/default_papyrus.png differ diff --git a/mods/default/textures/default_papyrus.xcf b/mods/default/textures/default_papyrus.xcf new file mode 100644 index 0000000..c986fb3 Binary files /dev/null and b/mods/default/textures/default_papyrus.xcf differ diff --git a/mods/default/textures/default_papyrus_inventory.png b/mods/default/textures/default_papyrus_inventory.png new file mode 100644 index 0000000..a975ebb Binary files /dev/null and b/mods/default/textures/default_papyrus_inventory.png differ diff --git a/mods/default/textures/default_papyrus_inventory.xcf b/mods/default/textures/default_papyrus_inventory.xcf new file mode 100644 index 0000000..702bcf3 Binary files /dev/null and b/mods/default/textures/default_papyrus_inventory.xcf differ diff --git a/mods/default/textures/default_pick_carbonsteel.png b/mods/default/textures/default_pick_carbonsteel.png new file mode 100644 index 0000000..5f29847 Binary files /dev/null and b/mods/default/textures/default_pick_carbonsteel.png differ diff --git a/mods/default/textures/default_pick_carbonsteel.xcf b/mods/default/textures/default_pick_carbonsteel.xcf new file mode 100644 index 0000000..07212e4 Binary files /dev/null and b/mods/default/textures/default_pick_carbonsteel.xcf differ diff --git a/mods/default/textures/default_pick_steel.png b/mods/default/textures/default_pick_steel.png new file mode 100644 index 0000000..75b597b Binary files /dev/null and b/mods/default/textures/default_pick_steel.png differ diff --git a/mods/default/textures/default_pick_steel.xcf b/mods/default/textures/default_pick_steel.xcf new file mode 100644 index 0000000..fca5e6e Binary files /dev/null and b/mods/default/textures/default_pick_steel.xcf differ diff --git a/mods/default/textures/default_pick_stone.png b/mods/default/textures/default_pick_stone.png new file mode 100644 index 0000000..4d732bf Binary files /dev/null and b/mods/default/textures/default_pick_stone.png differ diff --git a/mods/default/textures/default_pick_stone.xcf b/mods/default/textures/default_pick_stone.xcf new file mode 100644 index 0000000..03c49e5 Binary files /dev/null and b/mods/default/textures/default_pick_stone.xcf differ diff --git a/mods/default/textures/default_pick_wood.png b/mods/default/textures/default_pick_wood.png new file mode 100644 index 0000000..efd2ef9 Binary files /dev/null and b/mods/default/textures/default_pick_wood.png differ diff --git a/mods/default/textures/default_pick_wood.xcf b/mods/default/textures/default_pick_wood.xcf new file mode 100644 index 0000000..fef7f45 Binary files /dev/null and b/mods/default/textures/default_pick_wood.xcf differ diff --git a/mods/default/textures/default_reinforced_cobbles.png b/mods/default/textures/default_reinforced_cobbles.png new file mode 100644 index 0000000..74a3242 Binary files /dev/null and b/mods/default/textures/default_reinforced_cobbles.png differ diff --git a/mods/default/textures/default_reinforced_cobbles.xcf b/mods/default/textures/default_reinforced_cobbles.xcf new file mode 100644 index 0000000..2c98554 Binary files /dev/null and b/mods/default/textures/default_reinforced_cobbles.xcf differ diff --git a/mods/default/textures/default_reinforced_frame.png b/mods/default/textures/default_reinforced_frame.png new file mode 100644 index 0000000..eb8b24e Binary files /dev/null and b/mods/default/textures/default_reinforced_frame.png differ diff --git a/mods/default/textures/default_reinforced_frame.xcf b/mods/default/textures/default_reinforced_frame.xcf new file mode 100644 index 0000000..cb17105 Binary files /dev/null and b/mods/default/textures/default_reinforced_frame.xcf differ diff --git a/mods/default/textures/default_sand.png b/mods/default/textures/default_sand.png new file mode 100644 index 0000000..d4c2e13 Binary files /dev/null and b/mods/default/textures/default_sand.png differ diff --git a/mods/default/textures/default_sand.xcf b/mods/default/textures/default_sand.xcf new file mode 100644 index 0000000..91de674 Binary files /dev/null and b/mods/default/textures/default_sand.xcf differ diff --git a/mods/default/textures/default_sandstone.png b/mods/default/textures/default_sandstone.png new file mode 100644 index 0000000..ac58590 Binary files /dev/null and b/mods/default/textures/default_sandstone.png differ diff --git a/mods/default/textures/default_sandstone.xcf b/mods/default/textures/default_sandstone.xcf new file mode 100644 index 0000000..b32a679 Binary files /dev/null and b/mods/default/textures/default_sandstone.xcf differ diff --git a/mods/default/textures/default_sapling.png b/mods/default/textures/default_sapling.png new file mode 100644 index 0000000..c748f00 Binary files /dev/null and b/mods/default/textures/default_sapling.png differ diff --git a/mods/default/textures/default_sapling.xcf b/mods/default/textures/default_sapling.xcf new file mode 100644 index 0000000..3a7b8a5 Binary files /dev/null and b/mods/default/textures/default_sapling.xcf differ diff --git a/mods/default/textures/default_sapling_birch.png b/mods/default/textures/default_sapling_birch.png new file mode 100644 index 0000000..e6ff60f Binary files /dev/null and b/mods/default/textures/default_sapling_birch.png differ diff --git a/mods/default/textures/default_sapling_birch.xcf b/mods/default/textures/default_sapling_birch.xcf new file mode 100644 index 0000000..ca20d06 Binary files /dev/null and b/mods/default/textures/default_sapling_birch.xcf differ diff --git a/mods/default/textures/default_sapling_birch_inventory.png b/mods/default/textures/default_sapling_birch_inventory.png new file mode 100644 index 0000000..baf599f Binary files /dev/null and b/mods/default/textures/default_sapling_birch_inventory.png differ diff --git a/mods/default/textures/default_sapling_birch_inventory.xcf b/mods/default/textures/default_sapling_birch_inventory.xcf new file mode 100644 index 0000000..a8323fd Binary files /dev/null and b/mods/default/textures/default_sapling_birch_inventory.xcf differ diff --git a/mods/default/textures/default_sapling_inventory.png b/mods/default/textures/default_sapling_inventory.png new file mode 100644 index 0000000..1ba3b14 Binary files /dev/null and b/mods/default/textures/default_sapling_inventory.png differ diff --git a/mods/default/textures/default_sapling_inventory.xcf b/mods/default/textures/default_sapling_inventory.xcf new file mode 100644 index 0000000..87414fb Binary files /dev/null and b/mods/default/textures/default_sapling_inventory.xcf differ diff --git a/mods/default/textures/default_sapling_oak.png b/mods/default/textures/default_sapling_oak.png new file mode 100644 index 0000000..6496b04 Binary files /dev/null and b/mods/default/textures/default_sapling_oak.png differ diff --git a/mods/default/textures/default_sapling_oak.xcf b/mods/default/textures/default_sapling_oak.xcf new file mode 100644 index 0000000..f8d840f Binary files /dev/null and b/mods/default/textures/default_sapling_oak.xcf differ diff --git a/mods/default/textures/default_sapling_oak_inventory.png b/mods/default/textures/default_sapling_oak_inventory.png new file mode 100644 index 0000000..ffd71ef Binary files /dev/null and b/mods/default/textures/default_sapling_oak_inventory.png differ diff --git a/mods/default/textures/default_shovel_carbonsteel.png b/mods/default/textures/default_shovel_carbonsteel.png new file mode 100644 index 0000000..d908513 Binary files /dev/null and b/mods/default/textures/default_shovel_carbonsteel.png differ diff --git a/mods/default/textures/default_shovel_carbonsteel.xcf b/mods/default/textures/default_shovel_carbonsteel.xcf new file mode 100644 index 0000000..6614fb4 Binary files /dev/null and b/mods/default/textures/default_shovel_carbonsteel.xcf differ diff --git a/mods/default/textures/default_shovel_steel.png b/mods/default/textures/default_shovel_steel.png new file mode 100644 index 0000000..2d23adb Binary files /dev/null and b/mods/default/textures/default_shovel_steel.png differ diff --git a/mods/default/textures/default_shovel_steel.xcf b/mods/default/textures/default_shovel_steel.xcf new file mode 100644 index 0000000..e24dec4 Binary files /dev/null and b/mods/default/textures/default_shovel_steel.xcf differ diff --git a/mods/default/textures/default_shovel_stone.png b/mods/default/textures/default_shovel_stone.png new file mode 100644 index 0000000..6151d55 Binary files /dev/null and b/mods/default/textures/default_shovel_stone.png differ diff --git a/mods/default/textures/default_shovel_stone.xcf b/mods/default/textures/default_shovel_stone.xcf new file mode 100644 index 0000000..26691b1 Binary files /dev/null and b/mods/default/textures/default_shovel_stone.xcf differ diff --git a/mods/default/textures/default_shovel_wood.png b/mods/default/textures/default_shovel_wood.png new file mode 100644 index 0000000..c4f8c01 Binary files /dev/null and b/mods/default/textures/default_shovel_wood.png differ diff --git a/mods/default/textures/default_shovel_wood.xcf b/mods/default/textures/default_shovel_wood.xcf new file mode 100644 index 0000000..5489a69 Binary files /dev/null and b/mods/default/textures/default_shovel_wood.xcf differ diff --git a/mods/default/textures/default_sign.png b/mods/default/textures/default_sign.png new file mode 100644 index 0000000..62fbd56 Binary files /dev/null and b/mods/default/textures/default_sign.png differ diff --git a/mods/default/textures/default_sign.xcf b/mods/default/textures/default_sign.xcf new file mode 100644 index 0000000..c00321a Binary files /dev/null and b/mods/default/textures/default_sign.xcf differ diff --git a/mods/default/textures/default_spear_carbonsteel.png b/mods/default/textures/default_spear_carbonsteel.png new file mode 100644 index 0000000..a923eb6 Binary files /dev/null and b/mods/default/textures/default_spear_carbonsteel.png differ diff --git a/mods/default/textures/default_spear_carbonsteel.xcf b/mods/default/textures/default_spear_carbonsteel.xcf new file mode 100644 index 0000000..b4e6d31 Binary files /dev/null and b/mods/default/textures/default_spear_carbonsteel.xcf differ diff --git a/mods/default/textures/default_spear_steel.png b/mods/default/textures/default_spear_steel.png new file mode 100644 index 0000000..24423aa Binary files /dev/null and b/mods/default/textures/default_spear_steel.png differ diff --git a/mods/default/textures/default_spear_steel.xcf b/mods/default/textures/default_spear_steel.xcf new file mode 100644 index 0000000..9e803aa Binary files /dev/null and b/mods/default/textures/default_spear_steel.xcf differ diff --git a/mods/default/textures/default_spear_stone.png b/mods/default/textures/default_spear_stone.png new file mode 100644 index 0000000..23c2eef Binary files /dev/null and b/mods/default/textures/default_spear_stone.png differ diff --git a/mods/default/textures/default_spear_stone.xcf b/mods/default/textures/default_spear_stone.xcf new file mode 100644 index 0000000..65a79a5 Binary files /dev/null and b/mods/default/textures/default_spear_stone.xcf differ diff --git a/mods/default/textures/default_spear_wood.png b/mods/default/textures/default_spear_wood.png new file mode 100644 index 0000000..76a5db0 Binary files /dev/null and b/mods/default/textures/default_spear_wood.png differ diff --git a/mods/default/textures/default_spear_wood.xcf b/mods/default/textures/default_spear_wood.xcf new file mode 100644 index 0000000..6792782 Binary files /dev/null and b/mods/default/textures/default_spear_wood.xcf differ diff --git a/mods/default/textures/default_stick.png b/mods/default/textures/default_stick.png new file mode 100644 index 0000000..6c79c7d Binary files /dev/null and b/mods/default/textures/default_stick.png differ diff --git a/mods/default/textures/default_stick.xcf b/mods/default/textures/default_stick.xcf new file mode 100644 index 0000000..5d88041 Binary files /dev/null and b/mods/default/textures/default_stick.xcf differ diff --git a/mods/default/textures/default_stone.png b/mods/default/textures/default_stone.png new file mode 100644 index 0000000..8d6a199 Binary files /dev/null and b/mods/default/textures/default_stone.png differ diff --git a/mods/default/textures/default_stone.xcf b/mods/default/textures/default_stone.xcf new file mode 100644 index 0000000..5c5a97a Binary files /dev/null and b/mods/default/textures/default_stone.xcf differ diff --git a/mods/default/textures/default_torch.png b/mods/default/textures/default_torch.png new file mode 100644 index 0000000..83427eb Binary files /dev/null and b/mods/default/textures/default_torch.png differ diff --git a/mods/default/textures/default_torch.xcf b/mods/default/textures/default_torch.xcf new file mode 100644 index 0000000..e074633 Binary files /dev/null and b/mods/default/textures/default_torch.xcf differ diff --git a/mods/default/textures/default_torch_3d.png b/mods/default/textures/default_torch_3d.png new file mode 100644 index 0000000..451f71e Binary files /dev/null and b/mods/default/textures/default_torch_3d.png differ diff --git a/mods/default/textures/default_torch_3d.xcf b/mods/default/textures/default_torch_3d.xcf new file mode 100644 index 0000000..e3d3e2b Binary files /dev/null and b/mods/default/textures/default_torch_3d.xcf differ diff --git a/mods/default/textures/default_torch_3d_ends.png b/mods/default/textures/default_torch_3d_ends.png new file mode 100644 index 0000000..bcefae8 Binary files /dev/null and b/mods/default/textures/default_torch_3d_ends.png differ diff --git a/mods/default/textures/default_torch_3d_ends.xcf b/mods/default/textures/default_torch_3d_ends.xcf new file mode 100644 index 0000000..9a835ea Binary files /dev/null and b/mods/default/textures/default_torch_3d_ends.xcf differ diff --git a/mods/default/textures/default_tree.png b/mods/default/textures/default_tree.png new file mode 100644 index 0000000..b5ad91f Binary files /dev/null and b/mods/default/textures/default_tree.png differ diff --git a/mods/default/textures/default_tree.xcf b/mods/default/textures/default_tree.xcf new file mode 100644 index 0000000..644b233 Binary files /dev/null and b/mods/default/textures/default_tree.xcf differ diff --git a/mods/default/textures/default_tree_birch.png b/mods/default/textures/default_tree_birch.png new file mode 100644 index 0000000..425dc0e Binary files /dev/null and b/mods/default/textures/default_tree_birch.png differ diff --git a/mods/default/textures/default_tree_birch.xcf b/mods/default/textures/default_tree_birch.xcf new file mode 100644 index 0000000..5b2a55d Binary files /dev/null and b/mods/default/textures/default_tree_birch.xcf differ diff --git a/mods/default/textures/default_tree_birch_top.png b/mods/default/textures/default_tree_birch_top.png new file mode 100644 index 0000000..efb0fc6 Binary files /dev/null and b/mods/default/textures/default_tree_birch_top.png differ diff --git a/mods/default/textures/default_tree_birch_top.xcf b/mods/default/textures/default_tree_birch_top.xcf new file mode 100644 index 0000000..7aa7a47 Binary files /dev/null and b/mods/default/textures/default_tree_birch_top.xcf differ diff --git a/mods/default/textures/default_tree_oak.png b/mods/default/textures/default_tree_oak.png new file mode 100644 index 0000000..6b3868b Binary files /dev/null and b/mods/default/textures/default_tree_oak.png differ diff --git a/mods/default/textures/default_tree_oak.xcf b/mods/default/textures/default_tree_oak.xcf new file mode 100644 index 0000000..0b95ceb Binary files /dev/null and b/mods/default/textures/default_tree_oak.xcf differ diff --git a/mods/default/textures/default_tree_oak_top.png b/mods/default/textures/default_tree_oak_top.png new file mode 100644 index 0000000..42a8865 Binary files /dev/null and b/mods/default/textures/default_tree_oak_top.png differ diff --git a/mods/default/textures/default_tree_oak_top.xcf b/mods/default/textures/default_tree_oak_top.xcf new file mode 100644 index 0000000..672ae82 Binary files /dev/null and b/mods/default/textures/default_tree_oak_top.xcf differ diff --git a/mods/default/textures/default_tree_top.png b/mods/default/textures/default_tree_top.png new file mode 100644 index 0000000..99daa97 Binary files /dev/null and b/mods/default/textures/default_tree_top.png differ diff --git a/mods/default/textures/default_tree_top.xcf b/mods/default/textures/default_tree_top.xcf new file mode 100644 index 0000000..d8695fc Binary files /dev/null and b/mods/default/textures/default_tree_top.xcf differ diff --git a/mods/default/textures/default_water.png b/mods/default/textures/default_water.png new file mode 100644 index 0000000..b4853eb Binary files /dev/null and b/mods/default/textures/default_water.png differ diff --git a/mods/default/textures/default_water.xcf b/mods/default/textures/default_water.xcf new file mode 100644 index 0000000..56c540f Binary files /dev/null and b/mods/default/textures/default_water.xcf differ diff --git a/mods/default/textures/default_water_animated.png b/mods/default/textures/default_water_animated.png new file mode 100644 index 0000000..ae87e70 Binary files /dev/null and b/mods/default/textures/default_water_animated.png differ diff --git a/mods/default/textures/default_water_animated.xcf b/mods/default/textures/default_water_animated.xcf new file mode 100644 index 0000000..3159c8a Binary files /dev/null and b/mods/default/textures/default_water_animated.xcf differ diff --git a/mods/default/textures/default_wood.png b/mods/default/textures/default_wood.png new file mode 100644 index 0000000..22882c0 Binary files /dev/null and b/mods/default/textures/default_wood.png differ diff --git a/mods/default/textures/default_wood.xcf b/mods/default/textures/default_wood.xcf new file mode 100644 index 0000000..8fcedfa Binary files /dev/null and b/mods/default/textures/default_wood.xcf differ diff --git a/mods/default/textures/default_wood_birch.png b/mods/default/textures/default_wood_birch.png new file mode 100644 index 0000000..87207ca Binary files /dev/null and b/mods/default/textures/default_wood_birch.png differ diff --git a/mods/default/textures/default_wood_birch.xcf b/mods/default/textures/default_wood_birch.xcf new file mode 100644 index 0000000..9f812da Binary files /dev/null and b/mods/default/textures/default_wood_birch.xcf differ diff --git a/mods/default/textures/default_wood_oak.png b/mods/default/textures/default_wood_oak.png new file mode 100644 index 0000000..c0b58af Binary files /dev/null and b/mods/default/textures/default_wood_oak.png differ diff --git a/mods/default/textures/default_wood_oak.xcf b/mods/default/textures/default_wood_oak.xcf new file mode 100644 index 0000000..3890bba Binary files /dev/null and b/mods/default/textures/default_wood_oak.xcf differ diff --git a/mods/default/textures/heart.png b/mods/default/textures/heart.png new file mode 100644 index 0000000..d499547 Binary files /dev/null and b/mods/default/textures/heart.png differ diff --git a/mods/default/textures/heart.xcf b/mods/default/textures/heart.xcf new file mode 100644 index 0000000..5a1a3d6 Binary files /dev/null and b/mods/default/textures/heart.xcf differ diff --git a/mods/default/textures/moon.png b/mods/default/textures/moon.png new file mode 100644 index 0000000..463a1c7 Binary files /dev/null and b/mods/default/textures/moon.png differ diff --git a/mods/default/textures/moon.xcf b/mods/default/textures/moon.xcf new file mode 100644 index 0000000..d9f42f9 Binary files /dev/null and b/mods/default/textures/moon.xcf differ diff --git a/mods/default/textures/player.png b/mods/default/textures/player.png new file mode 100644 index 0000000..aa84fdc Binary files /dev/null and b/mods/default/textures/player.png differ diff --git a/mods/default/textures/player.xcf b/mods/default/textures/player.xcf new file mode 100644 index 0000000..715bc82 Binary files /dev/null and b/mods/default/textures/player.xcf differ diff --git a/mods/default/textures/player_back.png b/mods/default/textures/player_back.png new file mode 100644 index 0000000..ed420eb Binary files /dev/null and b/mods/default/textures/player_back.png differ diff --git a/mods/default/textures/player_back.xcf b/mods/default/textures/player_back.xcf new file mode 100644 index 0000000..893f9d6 Binary files /dev/null and b/mods/default/textures/player_back.xcf differ diff --git a/mods/default/textures/spark.png b/mods/default/textures/spark.png new file mode 100644 index 0000000..76a2c0a Binary files /dev/null and b/mods/default/textures/spark.png differ diff --git a/mods/default/textures/spark.xcf b/mods/default/textures/spark.xcf new file mode 100644 index 0000000..0f9f1b8 Binary files /dev/null and b/mods/default/textures/spark.xcf differ diff --git a/mods/default/textures/sun.png b/mods/default/textures/sun.png new file mode 100644 index 0000000..c967449 Binary files /dev/null and b/mods/default/textures/sun.png differ diff --git a/mods/default/textures/sun.xcf b/mods/default/textures/sun.xcf new file mode 100644 index 0000000..772b937 Binary files /dev/null and b/mods/default/textures/sun.xcf differ diff --git a/mods/default/textures/ui_arrow.png b/mods/default/textures/ui_arrow.png new file mode 100644 index 0000000..fb5bbec Binary files /dev/null and b/mods/default/textures/ui_arrow.png differ diff --git a/mods/default/textures/ui_arrow.xcf b/mods/default/textures/ui_arrow.xcf new file mode 100644 index 0000000..df185b7 Binary files /dev/null and b/mods/default/textures/ui_arrow.xcf differ diff --git a/mods/default/textures/ui_arrow_bg.png b/mods/default/textures/ui_arrow_bg.png new file mode 100644 index 0000000..b88684e Binary files /dev/null and b/mods/default/textures/ui_arrow_bg.png differ diff --git a/mods/default/textures/ui_arrow_bg.xcf b/mods/default/textures/ui_arrow_bg.xcf new file mode 100644 index 0000000..05fb35f Binary files /dev/null and b/mods/default/textures/ui_arrow_bg.xcf differ diff --git a/mods/default/textures/ui_button_2w_active.png b/mods/default/textures/ui_button_2w_active.png new file mode 100644 index 0000000..aae01ef Binary files /dev/null and b/mods/default/textures/ui_button_2w_active.png differ diff --git a/mods/default/textures/ui_button_2w_active.xcf b/mods/default/textures/ui_button_2w_active.xcf new file mode 100644 index 0000000..0935fc6 Binary files /dev/null and b/mods/default/textures/ui_button_2w_active.xcf differ diff --git a/mods/default/textures/ui_button_2w_inactive.png b/mods/default/textures/ui_button_2w_inactive.png new file mode 100644 index 0000000..2210ec0 Binary files /dev/null and b/mods/default/textures/ui_button_2w_inactive.png differ diff --git a/mods/default/textures/ui_button_2w_inactive.xcf b/mods/default/textures/ui_button_2w_inactive.xcf new file mode 100644 index 0000000..8a04f4a Binary files /dev/null and b/mods/default/textures/ui_button_2w_inactive.xcf differ diff --git a/mods/default/textures/ui_button_3w_active.png b/mods/default/textures/ui_button_3w_active.png new file mode 100644 index 0000000..1502d5b Binary files /dev/null and b/mods/default/textures/ui_button_3w_active.png differ diff --git a/mods/default/textures/ui_button_3w_active.xcf b/mods/default/textures/ui_button_3w_active.xcf new file mode 100644 index 0000000..eef3fe0 Binary files /dev/null and b/mods/default/textures/ui_button_3w_active.xcf differ diff --git a/mods/default/textures/ui_button_3w_inactive.png b/mods/default/textures/ui_button_3w_inactive.png new file mode 100644 index 0000000..d1c23ee Binary files /dev/null and b/mods/default/textures/ui_button_3w_inactive.png differ diff --git a/mods/default/textures/ui_button_3w_inactive.xcf b/mods/default/textures/ui_button_3w_inactive.xcf new file mode 100644 index 0000000..ff837a0 Binary files /dev/null and b/mods/default/textures/ui_button_3w_inactive.xcf differ diff --git a/mods/default/textures/ui_fire.png b/mods/default/textures/ui_fire.png new file mode 100644 index 0000000..6302b9e Binary files /dev/null and b/mods/default/textures/ui_fire.png differ diff --git a/mods/default/textures/ui_fire.xcf b/mods/default/textures/ui_fire.xcf new file mode 100644 index 0000000..340ea78 Binary files /dev/null and b/mods/default/textures/ui_fire.xcf differ diff --git a/mods/default/textures/ui_fire_bg.png b/mods/default/textures/ui_fire_bg.png new file mode 100644 index 0000000..ad700b4 Binary files /dev/null and b/mods/default/textures/ui_fire_bg.png differ diff --git a/mods/default/textures/ui_fire_bg.xcf b/mods/default/textures/ui_fire_bg.xcf new file mode 100644 index 0000000..1d23ff8 Binary files /dev/null and b/mods/default/textures/ui_fire_bg.xcf differ diff --git a/mods/default/textures/ui_formspec_bg_short.png b/mods/default/textures/ui_formspec_bg_short.png new file mode 100644 index 0000000..e9c416c Binary files /dev/null and b/mods/default/textures/ui_formspec_bg_short.png differ diff --git a/mods/default/textures/ui_formspec_bg_short.xcf b/mods/default/textures/ui_formspec_bg_short.xcf new file mode 100644 index 0000000..b7a601a Binary files /dev/null and b/mods/default/textures/ui_formspec_bg_short.xcf differ diff --git a/mods/default/textures/ui_formspec_bg_tall.png b/mods/default/textures/ui_formspec_bg_tall.png new file mode 100644 index 0000000..d222815 Binary files /dev/null and b/mods/default/textures/ui_formspec_bg_tall.png differ diff --git a/mods/default/textures/ui_formspec_bg_tall.xcf b/mods/default/textures/ui_formspec_bg_tall.xcf new file mode 100644 index 0000000..76ee7d9 Binary files /dev/null and b/mods/default/textures/ui_formspec_bg_tall.xcf differ diff --git a/mods/default/textures/ui_hotbar_bg.png b/mods/default/textures/ui_hotbar_bg.png new file mode 100644 index 0000000..7c27eda Binary files /dev/null and b/mods/default/textures/ui_hotbar_bg.png differ diff --git a/mods/default/textures/ui_hotbar_bg.xcf b/mods/default/textures/ui_hotbar_bg.xcf new file mode 100644 index 0000000..8d091a1 Binary files /dev/null and b/mods/default/textures/ui_hotbar_bg.xcf differ diff --git a/mods/default/textures/ui_hotbar_selected.png b/mods/default/textures/ui_hotbar_selected.png new file mode 100644 index 0000000..d551bd3 Binary files /dev/null and b/mods/default/textures/ui_hotbar_selected.png differ diff --git a/mods/default/textures/ui_hotbar_selected.xcf b/mods/default/textures/ui_hotbar_selected.xcf new file mode 100644 index 0000000..eeaf90a Binary files /dev/null and b/mods/default/textures/ui_hotbar_selected.xcf differ diff --git a/mods/default/textures/ui_icon_achievements.png b/mods/default/textures/ui_icon_achievements.png new file mode 100644 index 0000000..f54cfc4 Binary files /dev/null and b/mods/default/textures/ui_icon_achievements.png differ diff --git a/mods/default/textures/ui_icon_achievements.xcf b/mods/default/textures/ui_icon_achievements.xcf new file mode 100644 index 0000000..9311dae Binary files /dev/null and b/mods/default/textures/ui_icon_achievements.xcf differ diff --git a/mods/default/textures/ui_icon_armor.png b/mods/default/textures/ui_icon_armor.png new file mode 100644 index 0000000..2314471 Binary files /dev/null and b/mods/default/textures/ui_icon_armor.png differ diff --git a/mods/default/textures/ui_icon_armor.xcf b/mods/default/textures/ui_icon_armor.xcf new file mode 100644 index 0000000..b02ee20 Binary files /dev/null and b/mods/default/textures/ui_icon_armor.xcf differ diff --git a/mods/default/textures/ui_icon_crafting.png b/mods/default/textures/ui_icon_crafting.png new file mode 100644 index 0000000..c454918 Binary files /dev/null and b/mods/default/textures/ui_icon_crafting.png differ diff --git a/mods/default/textures/ui_icon_crafting.xcf b/mods/default/textures/ui_icon_crafting.xcf new file mode 100644 index 0000000..1b16452 Binary files /dev/null and b/mods/default/textures/ui_icon_crafting.xcf differ diff --git a/mods/default/textures/ui_icon_craftingguide.png b/mods/default/textures/ui_icon_craftingguide.png new file mode 100644 index 0000000..904680b Binary files /dev/null and b/mods/default/textures/ui_icon_craftingguide.png differ diff --git a/mods/default/textures/ui_icon_craftingguide.xcf b/mods/default/textures/ui_icon_craftingguide.xcf new file mode 100644 index 0000000..40b5e8c Binary files /dev/null and b/mods/default/textures/ui_icon_craftingguide.xcf differ diff --git a/mods/default/textures/ui_icon_extra.png b/mods/default/textures/ui_icon_extra.png new file mode 100644 index 0000000..3e52c68 Binary files /dev/null and b/mods/default/textures/ui_icon_extra.png differ diff --git a/mods/default/textures/ui_icon_extra.xcf b/mods/default/textures/ui_icon_extra.xcf new file mode 100644 index 0000000..d0276b6 Binary files /dev/null and b/mods/default/textures/ui_icon_extra.xcf differ diff --git a/mods/default/textures/ui_icon_map.png b/mods/default/textures/ui_icon_map.png new file mode 100644 index 0000000..6ef4f8b Binary files /dev/null and b/mods/default/textures/ui_icon_map.png differ diff --git a/mods/default/textures/ui_icon_map.xcf b/mods/default/textures/ui_icon_map.xcf new file mode 100644 index 0000000..963e146 Binary files /dev/null and b/mods/default/textures/ui_icon_map.xcf differ diff --git a/mods/default/textures/ui_itemslot.png b/mods/default/textures/ui_itemslot.png new file mode 100644 index 0000000..6fbffa2 Binary files /dev/null and b/mods/default/textures/ui_itemslot.png differ diff --git a/mods/default/textures/ui_itemslot.xcf b/mods/default/textures/ui_itemslot.xcf new file mode 100644 index 0000000..81ab111 Binary files /dev/null and b/mods/default/textures/ui_itemslot.xcf differ diff --git a/mods/default/textures/ui_itemslot_dark.png b/mods/default/textures/ui_itemslot_dark.png new file mode 100644 index 0000000..7740268 Binary files /dev/null and b/mods/default/textures/ui_itemslot_dark.png differ diff --git a/mods/default/textures/ui_itemslot_dark.xcf b/mods/default/textures/ui_itemslot_dark.xcf new file mode 100644 index 0000000..589589d Binary files /dev/null and b/mods/default/textures/ui_itemslot_dark.xcf differ diff --git a/mods/default/textures/ui_tab_active.png b/mods/default/textures/ui_tab_active.png new file mode 100644 index 0000000..f41baa0 Binary files /dev/null and b/mods/default/textures/ui_tab_active.png differ diff --git a/mods/default/textures/ui_tab_active.xcf b/mods/default/textures/ui_tab_active.xcf new file mode 100644 index 0000000..e9885d1 Binary files /dev/null and b/mods/default/textures/ui_tab_active.xcf differ diff --git a/mods/default/textures/ui_tab_inactive.png b/mods/default/textures/ui_tab_inactive.png new file mode 100644 index 0000000..321d0ca Binary files /dev/null and b/mods/default/textures/ui_tab_inactive.png differ diff --git a/mods/default/textures/ui_tab_inactive.xcf b/mods/default/textures/ui_tab_inactive.xcf new file mode 100644 index 0000000..59e8fa7 Binary files /dev/null and b/mods/default/textures/ui_tab_inactive.xcf differ diff --git a/mods/default/textures/wieldhand.png b/mods/default/textures/wieldhand.png new file mode 100644 index 0000000..1b12e27 Binary files /dev/null and b/mods/default/textures/wieldhand.png differ diff --git a/mods/default/textures/wieldhand.xcf b/mods/default/textures/wieldhand.xcf new file mode 100644 index 0000000..c1ddbb3 Binary files /dev/null and b/mods/default/textures/wieldhand.xcf differ diff --git a/mods/default/tools.lua b/mods/default/tools.lua new file mode 100644 index 0000000..78792a7 --- /dev/null +++ b/mods/default/tools.lua @@ -0,0 +1,336 @@ +-- +-- Tool definition +-- + +local creative_digtime=0.5 + +local tool_levels=nil + +-- Creative mode/hand defs +if minetest.setting_getbool("creative_mode") == true then + tool_levels = { + wood = { + [3] = creative_digtime, + [2] = creative_digtime, + }, + stone = { + [3] = creative_digtime, + [2] = creative_digtime, + [1] = creative_digtime, + }, + steel = { + [3] = creative_digtime, + [2] = creative_digtime, + [1] = creative_digtime, + }, + } + + minetest.register_item( + ":", + { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1,y=1,z=2.0}, + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level = 0, + groupcaps = { + fleshy = {times={[1]=creative_digtime, [2]=creative_digtime, [3]=creative_digtime}, uses=0, maxlevel=1}, + crumbly = {times={[1]=creative_digtime, [2]=creative_digtime, [3]=creative_digtime}, uses=0, maxlevel=1}, + choppy = {times={[1]=creative_digtime, [2]=creative_digtime, [3]=creative_digtime}, uses=0, maxlevel=1}, + cracky = {times={[1]=creative_digtime, [2]=creative_digtime, [3]=creative_digtime}, uses=0, maxlevel=1}, + snappy = {times={[1]=creative_digtime, [2]=creative_digtime, [3]=creative_digtime}, uses=0, maxlevel=1}, + oddly_breakable_by_hand = {times={[1]=creative_digtime,[2]=creative_digtime,[3]=creative_digtime}, uses=0, maxlevel=3}, + }, + range = 3.8, + damage_groups = {fleshy = 1} + } + }) +else + tool_levels = { + wood = { + [3] = 1.6, + [2] = 2.4, + }, + stone = { + [3] = 1.0, + [2] = 2.0, + [1] = 2.6, + }, + steel = { + [3] = 0.4, + [2] = 1.2, + [1] = 2.0, + }, + } + + minetest.register_item( + ":", + { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1.5,y=3,z=3}, + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level = 0, + groupcaps = { + fleshy = {times={[2]=1.6, [3]=1.0}, uses=0, maxlevel=1}, + crumbly = {times={[2]=3.0, [3]=2.0}, uses=0, maxlevel=1}, + snappy = {times={[3]=0.8}, uses=0, maxlevel=1}, + oddly_breakable_by_hand = {times={[1]=7.0,[2]=5.5,[3]=4.0}, uses=0, maxlevel=3}, + }, + range = 3.8, + damage_groups = {fleshy = 1} + } + }) +end + +-- Pickaxes + +minetest.register_tool( + "default:pick_wood", + { + description = "Wooden Pickaxe", + inventory_image = "default_pick_wood.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times=tool_levels.wood, uses=10, maxlevel=1} + }, + damage_groups = {fleshy = 2} + }, + }) + +minetest.register_tool( + "default:pick_stone", + { + description = "Stone Pickaxe", + inventory_image = "default_pick_stone.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times=tool_levels.stone, uses=20, maxlevel=1} + }, + damage_groups = {fleshy = 3} + }, + }) + +minetest.register_tool( + "default:pick_steel", + { + description = "Steel Pickaxe", + inventory_image = "default_pick_steel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times=tool_levels.steel, uses=25, maxlevel=2} + }, + damage_groups = {fleshy = 4} + }, + }) + +minetest.register_tool( + "default:pick_carbonsteel", + { + description = "Carbon Steel Pickaxe", + inventory_image = "default_pick_carbonsteel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + cracky={times=tool_levels.steel, uses=35, maxlevel=2} + }, + damage_groups = {fleshy = 6} + }, + }) + +-- Shovels + +minetest.register_tool( + "default:shovel_wood", + { + description = "Wooden Shovel", + inventory_image = "default_shovel_wood.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + crumbly={times=tool_levels.wood, uses=10, maxlevel=1} + }, + damage_groups = {fleshy = 2} + }, + }) + +minetest.register_tool( + "default:shovel_stone", + { + description = "Stone Shovel", + inventory_image = "default_shovel_stone.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + crumbly={times=tool_levels.stone, uses=20, maxlevel=1} + }, + damage_groups = {fleshy = 3} + }, + }) + +minetest.register_tool( + "default:shovel_steel", + { + description = "Steel Shovel", + inventory_image = "default_shovel_steel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + crumbly={times=tool_levels.steel, uses=25, maxlevel=2} + }, + damage_groups = {fleshy = 4} + }, + }) + +minetest.register_tool( + "default:shovel_carbonsteel", + { + description = "Carbon Steel Shovel", + inventory_image = "default_shovel_carbonsteel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + crumbly={times=tool_levels.steel, uses=35, maxlevel=2} + }, + damage_groups = {fleshy = 6} + }, + }) + +-- Axes + +minetest.register_tool( + "default:axe_wood", + { + description = "Wooden Axe", + inventory_image = "default_axe_wood.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + choppy={times=tool_levels.wood, uses=10, maxlevel=1}, + fleshy={times={[2]=1.20, [3]=0.60}, uses=10, maxlevel=1} + }, + damage_groups = {fleshy = 3} + }, + }) + +minetest.register_tool( + "default:axe_stone", + { + description = "Stone Axe", + inventory_image = "default_axe_stone.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + choppy={times=tool_levels.stone, uses=20, maxlevel=1}, + fleshy={times={[2]=1.10, [3]=0.40}, uses=20, maxlevel=1} + }, + damage_groups = {fleshy = 4} + }, + }) + +minetest.register_tool( + "default:axe_steel", + { + description = "Steel Axe", + inventory_image = "default_axe_steel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times=tool_levels.steel, uses=25, maxlevel=2}, + fleshy={times={[2]=1.00, [3]=0.20}, uses=40, maxlevel=1} + }, + damage_groups = {fleshy = 5} + }, + }) + +minetest.register_tool( + "default:axe_carbonsteel", + { + description = "Carbon Steel Axe", + inventory_image = "default_axe_carbonsteel.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times=tool_levels.steel, uses=35, maxlevel=2}, + fleshy={times={[2]=1.00, [3]=0.20}, uses=40, maxlevel=1} + }, + damage_groups = {fleshy = 7} + }, + }) + +-- Spears + +minetest.register_tool( + "default:spear_wood", + { + description = "Wooden Spear", + inventory_image = "default_spear_wood.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + groupcaps={ + fleshy={times={[2]=1.10, [3]=0.60}, uses=10, maxlevel=1}, + snappy={times={[2]=1.00, [3]=0.50}, uses=10, maxlevel=1}, + choppy={times={[3]=1.00}, uses=20, maxlevel=0} + }, + damage_groups = {fleshy = 4} + } + }) + +minetest.register_tool( + "default:spear_stone", + { + description = "Stone Spear", + inventory_image = "default_spear_stone.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=0, + groupcaps={ + fleshy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1}, + snappy={times={[2]=0.80, [3]=0.40}, uses=20, maxlevel=1}, + choppy={times={[3]=0.90}, uses=20, maxlevel=0} + }, + damage_groups = {fleshy = 5} + } + }) + +minetest.register_tool( + "default:spear_steel", + { + description = "Steel Spear", + inventory_image = "default_spear_steel.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=2}, + snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1}, + choppy={times={[3]=0.70}, uses=40, maxlevel=0} + }, + damage_groups = {fleshy = 6} + } + }) + +minetest.register_tool( + "default:spear_carbonsteel", + { + description = "Carbon Steel Spear", + inventory_image = "default_spear_carbonsteel.png", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=25, maxlevel=2}, + snappy={times={[2]=0.70, [3]=0.30}, uses=55, maxlevel=1}, + choppy={times={[3]=0.70}, uses=55, maxlevel=0} + }, + damage_groups = {fleshy = 10} + } + }) + +default.log("tools", "loaded") \ No newline at end of file diff --git a/mods/door/README.txt b/mods/door/README.txt new file mode 100644 index 0000000..b018dba --- /dev/null +++ b/mods/door/README.txt @@ -0,0 +1,9 @@ +Door mod +======== +By PilzAdam +Tweaked by Kaadmy, for Pixture + +Right-click doors to open/close them + +Asset license: CC0 +Source license: MIT(originally WTFPL) diff --git a/mods/door/depends.txt b/mods/door/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/door/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/door/init.lua b/mods/door/init.lua new file mode 100644 index 0000000..f7fbe0b --- /dev/null +++ b/mods/door/init.lua @@ -0,0 +1,317 @@ +-- +-- Door mod +-- By Kaadmy, for Pixture +-- + +door = {} + +-- Registers a door +function door.register_door(name, def) + def.groups.not_in_creative_inventory = 1 + + local box = {{-0.5, -0.5, -0.5, 0.5, 0.5, -0.5+1.5/16}} + + if not def.node_box_bottom then + def.node_box_bottom = box + end + if not def.node_box_top then + def.node_box_top = box + end + if not def.selection_box_bottom then + def.selection_box_bottom= box + end + if not def.selection_box_top then + def.selection_box_top = box + end + + if not def.sound_close_door then + def.sound_close_door = "door_close" + end + if not def.sound_open_door then + def.sound_open_door = "door_open" + end + + + minetest.register_craftitem( + name, { + description = def.description, + inventory_image = def.inventory_image, + + on_place = function(itemstack, placer, pointed_thing) + if not pointed_thing.type == "node" then + return itemstack + end + + local ptu = pointed_thing.under + local nu = minetest.get_node(ptu) + if minetest.registered_nodes[nu.name].on_rightclick then + return minetest.registered_nodes[nu.name].on_rightclick(ptu, nu, placer, itemstack) + end + + local pt = pointed_thing.above + local pt2 = {x=pt.x, y=pt.y, z=pt.z} + pt2.y = pt2.y+1 + if + not minetest.registered_nodes[minetest.get_node(pt).name].buildable_to or + not minetest.registered_nodes[minetest.get_node(pt2).name].buildable_to or + not placer or + not placer:is_player() + then + return itemstack + end + + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + local pt3 = {x=pt.x, y=pt.y, z=pt.z} + if p2 == 0 then + pt3.x = pt3.x-1 + elseif p2 == 1 then + pt3.z = pt3.z+1 + elseif p2 == 2 then + pt3.x = pt3.x+1 + elseif p2 == 3 then + pt3.z = pt3.z-1 + end + if minetest.get_item_group(minetest.get_node(pt3).name, "door") == 0 then + minetest.set_node(pt, {name=name.."_b_1", param2=p2}) + minetest.set_node(pt2, {name=name.."_t_1", param2=p2}) + else + minetest.set_node(pt, {name=name.."_b_2", param2=p2}) + minetest.set_node(pt2, {name=name.."_t_2", param2=p2}) + minetest.get_meta(pt):set_int("right", 1) + minetest.get_meta(pt2):set_int("right", 1) + end + + itemstack:take_item() + + return itemstack + end, + }) + + local tt = def.tiles_top + local tb = def.tiles_bottom + + local function after_dig_node(pos, name, digger) + local node = minetest.get_node(pos) + if node.name == name then + minetest.node_dig(pos, node, digger) + end + end + + local function on_rightclick(pos, dir, check_name, replace, replace_dir, params) + pos.y = pos.y+dir + if not minetest.get_node(pos).name == check_name then + return + end + local p2 = minetest.get_node(pos).param2 + p2 = params[p2+1] + + minetest.swap_node(pos, {name=replace_dir, param2=p2}) + + pos.y = pos.y-dir + minetest.swap_node(pos, {name=replace, param2=p2}) + + local snd_1 = def.sound_close_door + local snd_2 = def.sound_open_door + if params[1] == 3 then + snd_1 = def.sound_open_door + snd_2 = def.sound_close_door + end + + if minetest.get_meta(pos):get_int("right") ~= 0 then + minetest.sound_play(snd_1, {pos = pos, gain = 0.8, max_hear_distance = 10}) + else + minetest.sound_play(snd_2, {pos = pos, gain = 0.8, max_hear_distance = 10}) + end + end + + local function check_player_priv(pos, player) + if not def.only_placer_can_open then + return true + end + local meta = minetest.get_meta(pos) + local pn = player:get_player_name() + end + + minetest.register_node( + name.."_b_1", + { + tiles = {tb[2], tb[2], tb[2], tb[2], tb[1], tb[1].."^[transformfx"}, + paramtype = "light", + paramtype2 = "facedir", + drop = name, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_bottom + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_bottom + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y+1 + after_dig_node(pos, name.."_t_1", digger) + end, + + on_rightclick = function(pos, node, clicker) + if check_player_priv(pos, clicker) then + on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0}) + end + end, + + can_dig = check_player_priv, + sounds = def.sounds, + sunlight_propagates = def.sunlight + }) + + minetest.register_node( + name.."_t_1", + { + tiles = {tt[2], tt[2], tt[2], tt[2], tt[1], tt[1].."^[transformfx"}, + paramtype = "light", + paramtype2 = "facedir", + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_top + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_top + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y-1 + after_dig_node(pos, name.."_b_1", digger) + end, + + on_rightclick = function(pos, node, clicker) + if check_player_priv(pos, clicker) then + on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0}) + end + end, + + can_dig = check_player_priv, + sounds = def.sounds, + sunlight_propagates = def.sunlight, + }) + + minetest.register_node( + name.."_b_2", + { + tiles = {tb[2], tb[2], tb[2], tb[2], tb[1].."^[transformfx", tb[1]}, + paramtype = "light", + paramtype2 = "facedir", + drop = name, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_bottom + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_bottom + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y+1 + after_dig_node(pos, name.."_t_2", digger) + end, + + on_rightclick = function(pos, node, clicker) + if check_player_priv(pos, clicker) then + on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2}) + end + end, + + can_dig = check_player_priv, + sounds = def.sounds, + sunlight_propagates = def.sunlight + }) + + minetest.register_node( + name.."_t_2", + { + tiles = {tt[2], tt[2], tt[2], tt[2], tt[1].."^[transformfx", tt[1]}, + paramtype = "light", + paramtype2 = "facedir", + drop = "", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = def.node_box_top + }, + selection_box = { + type = "fixed", + fixed = def.selection_box_top + }, + groups = def.groups, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + pos.y = pos.y-1 + after_dig_node(pos, name.."_b_2", digger) + end, + + on_rightclick = function(pos, node, clicker) + if check_player_priv(pos, clicker) then + on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2}) + end + end, + + can_dig = check_player_priv, + sounds = def.sounds, + sunlight_propagates = def.sunlight + }) + +end + +door.register_door( + "door:door_wood", + { + description = "Wooden Door", + inventory_image = "door_wood.png", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1}, + tiles_top = {"door_wood_a.png", "door_brown.png"}, + tiles_bottom = {"door_wood_b.png", "door_brown.png"}, + sounds = default.node_sound_wood_defaults(), + sunlight = false, + }) + +minetest.register_craft( + { + output = "door:door_wood", + recipe = { + {"default:fiber", "default:glass", "default:fiber"}, + {"default:stick", "default:stick", "default:stick"}, + {"default:fiber", "group:planks", "default:fiber"}, + } + }) + +door.register_door( + "door:door_stone", + { + description = "Stone Door", + inventory_image = "door_stone.png", + groups = {cracky=3,oddly_breakable_by_hand=1,door=1}, + tiles_top = {"door_stone_a.png", "door_brown.png"}, + tiles_bottom = {"door_stone_b.png", "door_brown.png"}, + sounds = default.node_sound_stone_defaults(), + sunlight = false, + }) + +minetest.register_craft( + { + output = "door:door_stone", + recipe = { + {"default:fiber", "default:glass", "default:fiber"}, + {"default:stick", "default:stick", "default:stick"}, + {"default:fiber", "group:stone", "default:fiber"}, + } + }) + +default.log("mod:door", "loaded") \ No newline at end of file diff --git a/mods/door/sounds/door_close.ogg b/mods/door/sounds/door_close.ogg new file mode 100644 index 0000000..ef44236 Binary files /dev/null and b/mods/door/sounds/door_close.ogg differ diff --git a/mods/door/sounds/door_open.ogg b/mods/door/sounds/door_open.ogg new file mode 100644 index 0000000..ef44236 Binary files /dev/null and b/mods/door/sounds/door_open.ogg differ diff --git a/mods/door/textures/door_brown.png b/mods/door/textures/door_brown.png new file mode 100644 index 0000000..a0fe2d0 Binary files /dev/null and b/mods/door/textures/door_brown.png differ diff --git a/mods/door/textures/door_brown.xcf b/mods/door/textures/door_brown.xcf new file mode 100644 index 0000000..cca63ef Binary files /dev/null and b/mods/door/textures/door_brown.xcf differ diff --git a/mods/door/textures/door_gray.png b/mods/door/textures/door_gray.png new file mode 100644 index 0000000..9ba9d36 Binary files /dev/null and b/mods/door/textures/door_gray.png differ diff --git a/mods/door/textures/door_gray.xcf b/mods/door/textures/door_gray.xcf new file mode 100644 index 0000000..3cf1553 Binary files /dev/null and b/mods/door/textures/door_gray.xcf differ diff --git a/mods/door/textures/door_stone.png b/mods/door/textures/door_stone.png new file mode 100644 index 0000000..30541c2 Binary files /dev/null and b/mods/door/textures/door_stone.png differ diff --git a/mods/door/textures/door_stone.xcf b/mods/door/textures/door_stone.xcf new file mode 100644 index 0000000..590b7ec Binary files /dev/null and b/mods/door/textures/door_stone.xcf differ diff --git a/mods/door/textures/door_stone_a.png b/mods/door/textures/door_stone_a.png new file mode 100644 index 0000000..cc475fa Binary files /dev/null and b/mods/door/textures/door_stone_a.png differ diff --git a/mods/door/textures/door_stone_a.xcf b/mods/door/textures/door_stone_a.xcf new file mode 100644 index 0000000..62ce879 Binary files /dev/null and b/mods/door/textures/door_stone_a.xcf differ diff --git a/mods/door/textures/door_stone_b.png b/mods/door/textures/door_stone_b.png new file mode 100644 index 0000000..09e609f Binary files /dev/null and b/mods/door/textures/door_stone_b.png differ diff --git a/mods/door/textures/door_stone_b.xcf b/mods/door/textures/door_stone_b.xcf new file mode 100644 index 0000000..9ccd66b Binary files /dev/null and b/mods/door/textures/door_stone_b.xcf differ diff --git a/mods/door/textures/door_wood.png b/mods/door/textures/door_wood.png new file mode 100644 index 0000000..1aa0ba2 Binary files /dev/null and b/mods/door/textures/door_wood.png differ diff --git a/mods/door/textures/door_wood.xcf b/mods/door/textures/door_wood.xcf new file mode 100644 index 0000000..0b51376 Binary files /dev/null and b/mods/door/textures/door_wood.xcf differ diff --git a/mods/door/textures/door_wood_a.png b/mods/door/textures/door_wood_a.png new file mode 100644 index 0000000..5cc9cbc Binary files /dev/null and b/mods/door/textures/door_wood_a.png differ diff --git a/mods/door/textures/door_wood_a.xcf b/mods/door/textures/door_wood_a.xcf new file mode 100644 index 0000000..5496e6d Binary files /dev/null and b/mods/door/textures/door_wood_a.xcf differ diff --git a/mods/door/textures/door_wood_b.png b/mods/door/textures/door_wood_b.png new file mode 100644 index 0000000..43434ff Binary files /dev/null and b/mods/door/textures/door_wood_b.png differ diff --git a/mods/door/textures/door_wood_b.xcf b/mods/door/textures/door_wood_b.xcf new file mode 100644 index 0000000..1ec4f3c Binary files /dev/null and b/mods/door/textures/door_wood_b.xcf differ diff --git a/mods/farming/README.txt b/mods/farming/README.txt new file mode 100644 index 0000000..b158bbe --- /dev/null +++ b/mods/farming/README.txt @@ -0,0 +1,9 @@ +Farming mod +=========== +By Kaadmy, for Pixture + +Place wheat/cotton seeds near water +When they become stage 4, they can be harvested + +Asset license: CC0 +Source license: MIT diff --git a/mods/farming/craft.lua b/mods/farming/craft.lua new file mode 100644 index 0000000..6696538 --- /dev/null +++ b/mods/farming/craft.lua @@ -0,0 +1,56 @@ +minetest.register_craftitem( + "farming:cotton", + { + description = "Cotton", + inventory_image = "farming_cotton.png" + }) + +minetest.register_craftitem( + "farming:wheat", + { + description = "Wheat", + inventory_image = "farming_wheat.png" + }) + +minetest.register_craftitem( + "farming:flour", + { + description = "Flour", + inventory_image = "farming_flour.png" + }) + +minetest.register_craftitem( + "farming:bread", + { + description = "Bread", + inventory_image = "farming_bread.png", + on_use = minetest.item_eat({hp = 4, sat = 40}) + }) + +minetest.register_craft( + { + output = "farming:flour", + recipe = { + {"farming:wheat", "farming:wheat"}, + {"farming:wheat", "farming:wheat"}, + } + }) + +minetest.register_craft( + { + output = "farming:cotton_bale 2", + recipe = { + {"farming:cotton", "farming:cotton"}, + {"farming:cotton", "farming:cotton"}, + } + }) + +minetest.register_craft( + { + type = "cooking", + output = "farming:bread", + recipe = "farming:flour", + cooktime = 15, + }) + +default.log("craft", "loaded") \ No newline at end of file diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt new file mode 100644 index 0000000..27bd0a4 --- /dev/null +++ b/mods/farming/depends.txt @@ -0,0 +1,2 @@ +default +weather diff --git a/mods/farming/init.lua b/mods/farming/init.lua new file mode 100644 index 0000000..faa0050 --- /dev/null +++ b/mods/farming/init.lua @@ -0,0 +1,64 @@ +-- +-- Farming mod +-- By Kaadmy, for Pixture +-- + +farming={} + +grow_plant=function(pos, name, plant) + local my_node = minetest.get_node(pos) + + if minetest.find_node_near(pos, plant.growing_distance, plant.grows_near) == nil then + return + end + + local light=minetest.get_node_light(pos) + + if light ~= nil and (light < plant.light_min or light > plant.light_max) then return end + + local on_node = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) + + for _,can_grow_on in ipairs(plant.grows_on) do + if on_node.name == can_grow_on then + if my_node.name == "farming:"..name.."_1" then + minetest.set_node(pos, {name = "farming:"..name.."_2"}) + elseif my_node.name == "farming:"..name.."_2" then + minetest.set_node(pos, {name = "farming:"..name.."_3"}) + elseif my_node.name == "farming:"..name.."_3" then + minetest.set_node(pos, {name = "farming:"..name.."_4"}) + end + + break + end + end +end + +farming.register_plant=function(name, plant) + -- note: you'll have to register 4 + -- plant growing nodes before calling this! + -- + -- format: "farming:[plant name]_[stage from 1-4]" + minetest.register_abm( + { + nodenames = { + "farming:"..name.."_1", + "farming:"..name.."_2", + "farming:"..name.."_3", + }, + neighbors = plant.grows_on, + interval = 1, + chance = plant.grow_time/4, + action = function(pos, node, active_object_count, active_object_count_wider) + grow_plant(pos, name, plant) + if weather == "storm" then + grow_plant(pos, name, plant) + end + end + }) + end + +dofile(minetest.get_modpath("farming").."/nodes.lua") +dofile(minetest.get_modpath("farming").."/plants.lua") +dofile(minetest.get_modpath("farming").."/craft.lua") + +default.log("mod:farming", "loaded") \ No newline at end of file diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua new file mode 100644 index 0000000..91207b6 --- /dev/null +++ b/mods/farming/nodes.lua @@ -0,0 +1,203 @@ +minetest.register_node( + "farming:wheat_1", + { + description = "Wheat Seed", + drawtype = "plantlike", + tiles = {"farming_wheat_1.png"}, + inventory_image = "farming_wheat_4.png", + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:wheat"}, rarity = 3} + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:wheat_2", + { + description = "Wheat", + drawtype = "plantlike", + tiles = {"farming_wheat_2.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:wheat"}, rarity = 2} + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:wheat_3", + { + description = "Wheat", + drawtype = "plantlike", + tiles = {"farming_wheat_3.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:wheat"}, rarity = 1} + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:wheat_4", + { + description = "Wheat", + drawtype = "plantlike", + tiles = {"farming_wheat_4.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:wheat"}, rarity = 1}, + {items = {"farming:wheat 2"}, rarity = 4}, + {items = {"farming:wheat_1"}, rarity = 1}, + {items = {"farming:wheat_1"}, rarity = 2}, + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:cotton_1", + { + description = "Cotton Seed", + drawtype = "plantlike", + tiles = {"farming_cotton_1.png"}, + inventory_image = "farming_cotton_4.png", + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:cotton"}, rarity = 3} + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:cotton_2", + { + description = "Cotton", + drawtype = "plantlike", + tiles = {"farming_cotton_2.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:cotton"}, rarity = 2} + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:cotton_3", + { + description = "Cotton", + drawtype = "plantlike", + tiles = {"farming_cotton_3.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:cotton"}, rarity = 1} + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:cotton_4", + { + description = "Cotton", + drawtype = "plantlike", + tiles = {"farming_cotton_4.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton 2"}, rarity = 4}, + {items = {"farming:cotton_1"}, rarity = 1}, + {items = {"farming:cotton_1"}, rarity = 2}, + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(4/16), 0.5} + }, + groups = {dig_immediate=2}, + sounds=default.node_sound_leaves_defaults() + }) + +minetest.register_node( + "farming:cotton_bale", + { + description = "Cotton Bale", + tiles ={"farming_cotton_bale.png"}, + is_ground_content = false, + groups = {snappy=2, oddly_breakable_by_hand=3, fall_damage_add_percent=-15, fuzzy = 1}, + sounds = default.node_sound_leaves_defaults(), + }) + +default.log("nodes", "loaded") \ No newline at end of file diff --git a/mods/farming/plants.lua b/mods/farming/plants.lua new file mode 100644 index 0000000..d21b721 --- /dev/null +++ b/mods/farming/plants.lua @@ -0,0 +1,23 @@ +farming.register_plant( + "wheat", + { + grow_time = 1440, + grows_near = {"group:water"}, + growing_distance = 3, + grows_on = {"default:dirt", "default:dirt_with_grass"}, + light_min = 8, + light_max = 15, +}) + +farming.register_plant( + "cotton", + { + grow_time = 2880, + grows_near = {"group:water"}, + growing_distance = 4, + grows_on = {"default:dirt", "default:dirt_with_grass", "default:sand"}, + light_min = 12, + light_max = 15, +}) + +default.log("plants", "loaded") \ No newline at end of file diff --git a/mods/farming/textures/farming_bread.png b/mods/farming/textures/farming_bread.png new file mode 100644 index 0000000..996e12b Binary files /dev/null and b/mods/farming/textures/farming_bread.png differ diff --git a/mods/farming/textures/farming_bread.xcf b/mods/farming/textures/farming_bread.xcf new file mode 100644 index 0000000..abe9edd Binary files /dev/null and b/mods/farming/textures/farming_bread.xcf differ diff --git a/mods/farming/textures/farming_cotton.png b/mods/farming/textures/farming_cotton.png new file mode 100644 index 0000000..711f88d Binary files /dev/null and b/mods/farming/textures/farming_cotton.png differ diff --git a/mods/farming/textures/farming_cotton.xcf b/mods/farming/textures/farming_cotton.xcf new file mode 100644 index 0000000..8f485d5 Binary files /dev/null and b/mods/farming/textures/farming_cotton.xcf differ diff --git a/mods/farming/textures/farming_cotton_1.png b/mods/farming/textures/farming_cotton_1.png new file mode 100644 index 0000000..acc50a1 Binary files /dev/null and b/mods/farming/textures/farming_cotton_1.png differ diff --git a/mods/farming/textures/farming_cotton_1.xcf b/mods/farming/textures/farming_cotton_1.xcf new file mode 100644 index 0000000..1caecae Binary files /dev/null and b/mods/farming/textures/farming_cotton_1.xcf differ diff --git a/mods/farming/textures/farming_cotton_2.png b/mods/farming/textures/farming_cotton_2.png new file mode 100644 index 0000000..1163168 Binary files /dev/null and b/mods/farming/textures/farming_cotton_2.png differ diff --git a/mods/farming/textures/farming_cotton_2.xcf b/mods/farming/textures/farming_cotton_2.xcf new file mode 100644 index 0000000..26e7cff Binary files /dev/null and b/mods/farming/textures/farming_cotton_2.xcf differ diff --git a/mods/farming/textures/farming_cotton_3.png b/mods/farming/textures/farming_cotton_3.png new file mode 100644 index 0000000..52fb993 Binary files /dev/null and b/mods/farming/textures/farming_cotton_3.png differ diff --git a/mods/farming/textures/farming_cotton_3.xcf b/mods/farming/textures/farming_cotton_3.xcf new file mode 100644 index 0000000..24a43a6 Binary files /dev/null and b/mods/farming/textures/farming_cotton_3.xcf differ diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png new file mode 100644 index 0000000..996fda9 Binary files /dev/null and b/mods/farming/textures/farming_cotton_4.png differ diff --git a/mods/farming/textures/farming_cotton_4.xcf b/mods/farming/textures/farming_cotton_4.xcf new file mode 100644 index 0000000..9ccf7fb Binary files /dev/null and b/mods/farming/textures/farming_cotton_4.xcf differ diff --git a/mods/farming/textures/farming_cotton_bale.png b/mods/farming/textures/farming_cotton_bale.png new file mode 100644 index 0000000..83862ec Binary files /dev/null and b/mods/farming/textures/farming_cotton_bale.png differ diff --git a/mods/farming/textures/farming_cotton_bale.xcf b/mods/farming/textures/farming_cotton_bale.xcf new file mode 100644 index 0000000..3d53934 Binary files /dev/null and b/mods/farming/textures/farming_cotton_bale.xcf differ diff --git a/mods/farming/textures/farming_flour.png b/mods/farming/textures/farming_flour.png new file mode 100644 index 0000000..b2f41d7 Binary files /dev/null and b/mods/farming/textures/farming_flour.png differ diff --git a/mods/farming/textures/farming_flour.xcf b/mods/farming/textures/farming_flour.xcf new file mode 100644 index 0000000..13d4b63 Binary files /dev/null and b/mods/farming/textures/farming_flour.xcf differ diff --git a/mods/farming/textures/farming_wheat.png b/mods/farming/textures/farming_wheat.png new file mode 100644 index 0000000..084a3f7 Binary files /dev/null and b/mods/farming/textures/farming_wheat.png differ diff --git a/mods/farming/textures/farming_wheat.xcf b/mods/farming/textures/farming_wheat.xcf new file mode 100644 index 0000000..bb363e9 Binary files /dev/null and b/mods/farming/textures/farming_wheat.xcf differ diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png new file mode 100644 index 0000000..6c49c08 Binary files /dev/null and b/mods/farming/textures/farming_wheat_1.png differ diff --git a/mods/farming/textures/farming_wheat_1.xcf b/mods/farming/textures/farming_wheat_1.xcf new file mode 100644 index 0000000..f9e067f Binary files /dev/null and b/mods/farming/textures/farming_wheat_1.xcf differ diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png new file mode 100644 index 0000000..702a78a Binary files /dev/null and b/mods/farming/textures/farming_wheat_2.png differ diff --git a/mods/farming/textures/farming_wheat_2.xcf b/mods/farming/textures/farming_wheat_2.xcf new file mode 100644 index 0000000..6bcf6eb Binary files /dev/null and b/mods/farming/textures/farming_wheat_2.xcf differ diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png new file mode 100644 index 0000000..7bb7a3a Binary files /dev/null and b/mods/farming/textures/farming_wheat_3.png differ diff --git a/mods/farming/textures/farming_wheat_3.xcf b/mods/farming/textures/farming_wheat_3.xcf new file mode 100644 index 0000000..be11cd8 Binary files /dev/null and b/mods/farming/textures/farming_wheat_3.xcf differ diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png new file mode 100644 index 0000000..6a1de6f Binary files /dev/null and b/mods/farming/textures/farming_wheat_4.png differ diff --git a/mods/farming/textures/farming_wheat_4.xcf b/mods/farming/textures/farming_wheat_4.xcf new file mode 100644 index 0000000..9d72a04 Binary files /dev/null and b/mods/farming/textures/farming_wheat_4.xcf differ diff --git a/mods/give_initial_stuff/README.txt b/mods/give_initial_stuff/README.txt new file mode 100644 index 0000000..d8b1ead --- /dev/null +++ b/mods/give_initial_stuff/README.txt @@ -0,0 +1,5 @@ +Give initial stuff mod +====================== +By Kaadmy + +Source license: WTFPL diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/give_initial_stuff/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua new file mode 100644 index 0000000..04e3d54 --- /dev/null +++ b/mods/give_initial_stuff/init.lua @@ -0,0 +1,17 @@ +-- +-- Gives initial stuff +-- By Kaadmy, for Pixture +-- + +local function give_initial_stuff(player) + minetest.chat_send_player(player:get_player_name(), "Welcome to Pixture!") + + if minetest.setting_getbool("give_initial_stuff") then + local inv=player:get_inventory() + + inv:add_item("main", "default:pick_stone") + inv:add_item("main", "default:torch 10") + end +end + +minetest.register_on_newplayer(give_initial_stuff) diff --git a/mods/gold/README.txt b/mods/gold/README.txt new file mode 100644 index 0000000..234903c --- /dev/null +++ b/mods/gold/README.txt @@ -0,0 +1,8 @@ +Gold mod +======== +By Kaadmy, for Pixture + +Trading/currency mod; required by mobs + +Asset license: CC0 +Source license: MIT diff --git a/mods/gold/depends.txt b/mods/gold/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/gold/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/gold/init.lua b/mods/gold/init.lua new file mode 100644 index 0000000..92b120f --- /dev/null +++ b/mods/gold/init.lua @@ -0,0 +1,251 @@ +-- +-- Gold and NPC Trading +-- By Kaadmy, for Pixture +-- + +gold = {} + +gold.pr = PseudoRandom(minetest.get_mapgen_params().seed+8732) + +gold.trades = {} + +gold.trades["farmer"] = { + -- plants + {"gold:gold", "", "farming:wheat_1 6"}, + {"gold:gold 3", "", "farming:cotton_1 4"}, + {"gold:gold 5", "", "farming:cotton_1 8"}, + {"gold:gold", "", "default:papyrus 4"}, + {"gold:gold 4", "", "default:cactus 2"}, + + -- crafts + {"gold:gold 7", "", "farming:cotton_bale 3"}, + + -- materials + {"default:planks 3", "farming:cotton_bale 3", "bed:bed"}, + + -- tool repair + {"gold:gold 6", "default:shovel_stone", "default:shovel_stone"}, + {"gold:gold 8", "default:shovel_steel", "default:shovel_steel"}, + {"gold:gold 10", "default:shovel_carbonsteel", "default:shovel_carbonsteel"}, +} +gold.trades["tavernkeeper"] = { + -- materials + {"gold:gold 2", "", "default:planks 12"}, + {"gold:gold 2", "", "default:planks_birch 8"}, + + -- useables + {"gold:gold 9", "", "bed:bed"}, + {"gold:gold 5", "", "default:chest"}, + {"default:planks_birch 3", "mobs:wool 3", "bed:bed"}, + + -- filling buckets + {"gold:gold", "default:bucket", "default:bucket_water"}, +} +gold.trades["blacksmith"] = { + -- smeltables + {"gold:gold", "", "default:lump_coal"}, + {"gold:gold 3", "", "default:lump_iron"}, + {"gold:gold 5", "", "default:dust_carbonsteel"}, + + -- materials + {"gold:gold 2", "", "default:cobble 10"}, + {"gold:gold 3", "", "default:stone 10"}, + {"gold:gold 5", "", "default:reinforced_cobble 10"}, + {"gold:gold 25", "", "default:block_steel"}, + {"gold:gold 6", "", "default:glass 5"}, + + -- usebles + {"gold:gold 7", "", "default:furnace"}, + + -- ingots + {"gold:gold 5", "", "default:ingot_steel"}, + {"gold:gold 8", "", "default:ingot_carbonsteel"}, + + -- auto smelting + {"gold:gold 2", "default:lump_iron", "default:ingot_steel"}, + {"gold:gold 4", "default:dust_carbonsteel", "default:ingot_carbonsteel"}, + + -- tool repair + {"gold:gold 8", "default:pick_stone", "default:pick_stone"}, + {"gold:gold 12", "default:pick_steel", "default:pick_steel"}, + {"gold:gold 16", "default:pick_carbonsteel", "default:pick_carbonsteel"}, +} +gold.trades["butcher"] = { + -- materials + {"gold:gold 3", "", "default:planks_oak 10"}, + + -- cooked edibles + {"gold:gold 2", "", "mobs:meat"}, + {"gold:gold 3", "", "mobs:pork"}, + + -- raw edibles + {"gold:gold 2", "", "mobs:meat_raw 2"}, + {"gold:gold 3", "", "mobs:pork_raw 2"}, + + -- cooking edibles + {"gold:gold 1", "mobs:meat_raw", "mobs:meat"}, + {"gold:gold 2", "mobs:pork_raw", "mobs:pork"}, + + -- tool repair + {"gold:gold 5", "default:spear_stone", "default:spear_stone"}, + {"gold:gold 7", "default:spear_steel", "default:spear_steel"}, + {"gold:gold 11", "default:spear_carbonsteel", "default:spear_carbonsteel"}, +} + +gold.trade_names = { + ["farmer"] = "Farmer", + ["tavernkeeper"] = "Tavern Keeper", + ["blacksmith"] = "Blacksmith", + ["butcher"] = "Butcher", +} + +local form_trading = "" + +form_trading = form_trading .. default.ui.get_page("core_2part") + +form_trading = form_trading .. "list[current_player;gold_trade_out;3.75,2.25;1,1;]" +form_trading = form_trading .. "listring[current_player;gold_trade_out]" + +form_trading = form_trading .. default.ui.get_hotbar_itemslot_bg(3.75, 2.25, 1, 1) + +form_trading = form_trading .. "list[current_player;main;0.25,4.75;8,4;]" +form_trading = form_trading .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1) +form_trading = form_trading .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3) + +form_trading = form_trading .. "list[current_player;gold_trade_in;6.25,1.25;1,2;]" +form_trading = form_trading .. "listring[current_player;gold_trade_in]" +form_trading = form_trading .. default.ui.get_itemslot_bg(6.25, 1.25, 1, 2) + +form_trading = form_trading .. "image[2.5,1.25;1,1;ui_arrow_bg.png^[transformR270]" +form_trading = form_trading .. "image[5,2.25;1,1;ui_arrow.png^[transformR90]" + +form_trading = form_trading .. default.ui.button_exit(1.25, 3.25, 2, 1, "cancel", "Cancel") +form_trading = form_trading .. default.ui.button(5.25, 3.25, 2, 1, "trade", "Trade") + +default.ui.register_page("gold_trading_book", form_trading) + +function gold.trade(trade, trade_type, player) + local name = player:get_player_name() + local item = player:get_wielded_item() + + if item:get_name() ~= "gold:trading_book" then return end + + local inv = player:get_inventory() + + if inv:get_size("gold_trade_wanted") ~= 2 then + inv:set_size("gold_trade_wanted", 2) + end + + if inv:get_size("gold_trade_out") ~= 1 then + inv:set_size("gold_trade_out", 1) + end + + if inv:get_size("gold_trade_in") ~= 2 then + inv:set_size("gold_trade_in", 2) + end + + inv:set_stack("gold_trade_wanted", 1, trade[1]) + inv:set_stack("gold_trade_wanted", 2, trade[2]) + + local meta = minetest.deserialize(item:get_metadata()) + + if not meta then meta = {} end + meta.trade = trade + + local trade_name = gold.trade_names[trade_type] + + local trade_wanted1 = inv:get_stack("gold_trade_wanted", 1) + local trade_wanted2 = inv:get_stack("gold_trade_wanted", 2) + + local form = default.ui.get_page("gold_trading_book") + form = form .. "label[0.25,0.25;"..minetest.formspec_escape(trade_name).."]" + + form = form .. default.ui.fake_itemstack(1.25, 1.25, trade_wanted1, "trade_wanted1") + form = form .. default.ui.fake_itemstack(1.25, 2.25, trade_wanted2, "trade_wanted2") + form = form .. default.ui.fake_itemstack(3.75, 1.25, ItemStack(trade[3]), "vistrade_result") + + minetest.show_formspec(name, "gold:trading_book", form) + + meta.trade_type = trade_type + + item:set_metadata(minetest.serialize(meta)) + player:set_wielded_item(item) +end + +minetest.register_on_player_receive_fields( + function(player, form_name, fields) + if form_name ~= "gold:trading_book" or fields.cancel then return end + + local inv = player:get_inventory() + + if fields.trade then + local item = player:get_wielded_item() + + local trade_wanted1 = inv:get_stack("gold_trade_wanted", 1):to_string() + local trade_wanted2 = inv:get_stack("gold_trade_wanted", 2):to_string() + + local trade_in1 = inv:get_stack("gold_trade_in", 1):to_string() + local trade_in2 = inv:get_stack("gold_trade_in", 2):to_string() + + local matches = trade_wanted1 == trade_in1 and trade_wanted2 == trade_in2 + + local meta = minetest.deserialize(item:get_metadata()) + + local trade = {"gold:gold", "gold:gold", "default:stick"} + local trade_type = "" + + if meta then + trade = meta.trade + trade_type = meta.trade_type + end + + if matches then + if inv:room_for_item("gold_trade_out", trade[3]) then + inv:add_item("gold_trade_out", trade[3]) + inv:set_stack("gold_trade_in", 1, "") + inv:set_stack("gold_trade_in", 2, "") + end + end + end + end) + +minetest.register_craftitem( + "gold:trading_book", + { + description = "Trading Book", + inventory_image = "default_book.png^gold_bookribbon.png", + stack_max = 1, + }) + +minetest.register_craftitem( + "gold:gold", + { + description = "Gold", + inventory_image = "gold_gold.png", + stack_max = 120 + }) + +minetest.register_alias("gold", "gold:gold") + +minetest.register_node( + "gold:ore", + { + description = "Gold Ore", + tiles ={"default_stone.png^gold_mineral.png"}, + groups = {cracky=1, stone=1}, + drop = "gold:gold", + is_ground_content = true, + sounds = default.node_sound_stone_defaults(), + }) + +minetest.register_ore( + { + ore_type = "scatter", + ore = "gold:ore", + wherein = "default:stone", + clust_scarcity = 12*12*12, + clust_num_ores = 10, + clust_size = 10, + height_min = -256, + height_max = -32, + }) \ No newline at end of file diff --git a/mods/gold/textures/gold_bookribbon.png b/mods/gold/textures/gold_bookribbon.png new file mode 100644 index 0000000..95a196a Binary files /dev/null and b/mods/gold/textures/gold_bookribbon.png differ diff --git a/mods/gold/textures/gold_bookribbon.xcf b/mods/gold/textures/gold_bookribbon.xcf new file mode 100644 index 0000000..7e3d2cd Binary files /dev/null and b/mods/gold/textures/gold_bookribbon.xcf differ diff --git a/mods/gold/textures/gold_gold.png b/mods/gold/textures/gold_gold.png new file mode 100644 index 0000000..f16822f Binary files /dev/null and b/mods/gold/textures/gold_gold.png differ diff --git a/mods/gold/textures/gold_gold.xcf b/mods/gold/textures/gold_gold.xcf new file mode 100644 index 0000000..4d659d0 Binary files /dev/null and b/mods/gold/textures/gold_gold.xcf differ diff --git a/mods/gold/textures/gold_mineral.png b/mods/gold/textures/gold_mineral.png new file mode 100644 index 0000000..df410ed Binary files /dev/null and b/mods/gold/textures/gold_mineral.png differ diff --git a/mods/gold/textures/gold_mineral.xcf b/mods/gold/textures/gold_mineral.xcf new file mode 100644 index 0000000..7119f28 Binary files /dev/null and b/mods/gold/textures/gold_mineral.xcf differ diff --git a/mods/hunger/README.txt b/mods/hunger/README.txt new file mode 100644 index 0000000..1fead96 --- /dev/null +++ b/mods/hunger/README.txt @@ -0,0 +1,16 @@ +Hunger mod +========== +For nodetest +Tweaked by Kaadmy, for Pixture + +Only mod that isn't MIT or WTFPL :( +Though most is re-written anyway... + +Asset license: CC0 +Source license: + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + http://www.gnu.org/licenses/lgpl-2.1.html diff --git a/mods/hunger/depends.txt b/mods/hunger/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/hunger/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/hunger/init.lua b/mods/hunger/init.lua new file mode 100644 index 0000000..84fd2c7 --- /dev/null +++ b/mods/hunger/init.lua @@ -0,0 +1,256 @@ +-- +-- Hunger mod +-- For nodetest +-- Tweaked by Kaadmy, for Pixture +-- + +hunger = {} + +hunger.hunger = {} -- the hunger level for each player +hunger.active = {} -- how a player has been active recently +hunger.moving = {} -- how much the player is moving +hunger.saturation = {} -- how saturated with food the player is + +local player_step = {} +local player_health_step = {} +local player_bar = {} +local base_interval = 1 +local file = minetest.get_worldpath() .. "/hunger" + +function hunger.save_hunger() + local output = io.open(file, "w") + for name, v in pairs(hunger.hunger) do + output:write(hunger.hunger[name].." "..hunger.saturation[name].." "..name.."\n") + end + io.close(output) +end + +local function load_hunger() + local input = io.open(file, "r") + if input then + repeat + local hnger = input:read("*n") + local sat = input:read("*n") + local name = input:read("*l") + + if name == nil or sat == nil then break end + + name = name:sub(2) + + if not hnger then hnger = 20 end + if not sat then say = 0 end + + hunger.hunger[name] = hnger + hunger.saturation[name] = sat + + print("[hunger] '"..name.."' has "..hnger.." hunger and is saturated to "..sat.."%") + until input:read(0) == nil + io.close(input) + else + hunger.save_hunger() + end +end + +load_hunger() + +function hunger.update_bar(player) + if not player then return end + local name = player:get_player_name() + if player_bar[name] then + player:hud_change(player_bar[name], "number", hunger.hunger[name]) + else + player_bar[name] = player:hud_add( + { + hud_elem_type = "statbar", + position = {x=0.5,y=1.0}, + text = "hunger.png", + number = hunger.hunger[name], + dir = 0, + size = {x=16, y=16}, + offset = {x=64, y=-(48+24+16)}, + }) + end +end + +if minetest.setting_getbool("enable_damage") == true then + + -- Prevent players from starving while afk (<--joke) + minetest.register_on_dignode( + function(pos, oldnode, player) + if not player then return end + local name = player:get_player_name() + hunger.active[name] = hunger.active[name]+ 2 + end) + + minetest.register_on_placenode( + function(pos, node, player) + if not player then return end + local name = player:get_player_name() + hunger.active[name] = hunger.active[name]+ 2 + end) + + minetest.register_on_joinplayer( + function(player) + local name = player:get_player_name() + if not hunger.hunger[name] then hunger.hunger[name] = 20 end + player:hud_add( + { + hud_elem_type = "statbar", + position = {x=0.5,y=1.0}, + text = "hunger.png^[colorize:#666666:255", + number = 20, + dir = 0, + size = {x=16, y=16}, + offset = {x=64, y=-(48+24+16)}, + }) + + hunger.update_bar(player) + end) + + minetest.register_on_leaveplayer( + function(player) + local name = player:get_player_name() + player_bar[name] = nil + end) + + minetest.register_on_respawnplayer( + function(player) + local name = player:get_player_name() + hunger.hunger[name] = 20 + hunger.update_bar(player) + hunger.save_hunger() + end) + + minetest.register_on_item_eat( + function(hpdata, replace_with_item, itemstack, player, pointed_thing) + if not player then return end + if not hpdata then return end + + local hp_change = 0 + local saturation = 2 + + if type(hpdata) == "number" then + hp_change = hpdata + else + hp_change = hpdata.hp + saturation = hpdata.sat + end + + local name = player:get_player_name() + + hunger.hunger[name] = hunger.hunger[name] + hp_change + if hunger.hunger[name] > 20 then + hunger.hunger[name] = 20 + end + + hunger.saturation[name] = hunger.saturation[name] + saturation + if hunger.saturation[name] > 100 then + hunger.saturation[name] = 100 + end + + local headpos = player:getpos() + headpos.y = headpos.y + 1 + minetest.sound_play("hunger_eat", {pos = headpos, max_hear_distance = 8}) + hunger.update_bar(player) + hunger.save_hunger() + + itemstack:take_item(1) + + return itemstack + end) + + -- Main function + local timer = 0 + minetest.register_globalstep( + function(dtime) + for _,player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local controls = player:get_player_control() + local moving = 0 + + if controls.up or controls.down or controls.left or controls.right then + moving = moving + 1 + end + + if controls.sneak and not controls.aux1 then + moving = moving - 1 + end + + if controls.jump then + moving = moving + 1 + end + + if controls.jump then + moving = moving + 1 + end + + if controls.aux1 then + moving = moving + 2 + end + + if moving < 0 then moving = 0 end + + hunger.moving[name] = moving + end + + timer = timer + dtime; + + if timer < base_interval then return end + timer = 0 + local change = false + for _,player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local hp = player:get_hp() + + if not hunger.hunger[name] then hunger.hunger[name] = 20 end + if not hunger.saturation[name] then hunger.saturation[name] = 0 end + + if not player_step[name] then player_step[name] = 0 end + if not hunger.active[name] then hunger.active[name] = 0 end + if hunger.moving[name] == nil then hunger.moving[name] = 0 end + + hunger.active[name] = hunger.active[name] + hunger.moving[name] + + player_step[name] = player_step[name] + hunger.active[name] + 1 + + hunger.saturation[name] = hunger.saturation[name] - 1 + + if hunger.saturation[name] <= 0 then + hunger.saturation[name] = 0 + if player_step[name] >= 24 then -- how much the player has been active + player_step[name] = 0 + hunger.hunger[name] = hunger.hunger[name] - 1 + if hunger.hunger[name] <= 0 and hp >= 0 then + player:set_hp(hp - 1) + hunger.hunger[name] = 0 + + local pos_sound = player:getpos() + player:set_physics_override({speed = 0.8}) + minetest.chat_send_player(name, "You are hungry.") + end + end + + change = true + end + + hunger.active[name] = 0 + hunger.update_bar(player) + + if player_health_step[name] == nil then player_health_step[name] = 0 end + + player_health_step[name] = player_health_step[name] + 1 + + if player_health_step[name] >= 5 and player:get_hp() < 20 and hunger.hunger[name] >= 16 then + player_health_step[name] = 0 + player:set_hp(hp+1) + end + end + + if change then hunger.save_hunger() end + end) +else + minetest.register_on_item_eat( + function(hpdata, replace_with_item, itemstack, player, pointed_thing) + return + end) +end \ No newline at end of file diff --git a/mods/hunger/sounds/hunger_eat.ogg b/mods/hunger/sounds/hunger_eat.ogg new file mode 100644 index 0000000..83e3cf6 Binary files /dev/null and b/mods/hunger/sounds/hunger_eat.ogg differ diff --git a/mods/hunger/textures/hunger.png b/mods/hunger/textures/hunger.png new file mode 100644 index 0000000..580b9c4 Binary files /dev/null and b/mods/hunger/textures/hunger.png differ diff --git a/mods/hunger/textures/hunger.xcf b/mods/hunger/textures/hunger.xcf new file mode 100644 index 0000000..190cc5b Binary files /dev/null and b/mods/hunger/textures/hunger.xcf differ diff --git a/mods/item_drop/README.txt b/mods/item_drop/README.txt new file mode 100644 index 0000000..f1fafe3 --- /dev/null +++ b/mods/item_drop/README.txt @@ -0,0 +1,7 @@ +Item drop mod +============= +By PilzAdam +Tweaked by Kaadmy, for Pixture + +Asset license: CC0(original was WTFPL) +Source license: CC0(original was WTFPL) diff --git a/mods/item_drop/depends.txt b/mods/item_drop/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/item_drop/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/item_drop/init.lua b/mods/item_drop/init.lua new file mode 100644 index 0000000..ee0fe61 --- /dev/null +++ b/mods/item_drop/init.lua @@ -0,0 +1,113 @@ +-- +-- Item drop mod +-- By PilzAdam +-- Tweaked by Kaadmy, for Pixture +-- + +local function valid(object) + return object:get_luaentity().timer ~= nil and object:get_luaentity().timer > 1 +end + +minetest.register_globalstep( + function(dtime) + for _,player in ipairs(minetest.get_connected_players()) do + if player:get_hp() > 0 or not minetest.setting_getbool("enable_damage") then + local pos = player:getpos() + local inv = player:get_inventory() + + for _,object in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and valid(object) then + if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + if object:get_luaentity().itemstring ~= "" then + minetest.sound_play("item_drop_pickup", {pos = pos, gain = 0.1, max_hear_distance = 8}) + end + object:get_luaentity().itemstring = "" + object:remove() + end + end + end + + for _,object in ipairs(minetest.get_objects_inside_radius(pos, 1.25)) do + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and valid(object) then + if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + local pos1 = pos + pos1.y = pos1.y+0.2 + local pos2 = object:getpos() + local vec = vector.normalize({x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z}) + vec.x = vec.x*3 + vec.y = vec.y*3 + vec.z = vec.z*3 + object:setvelocity(vec) + object:get_luaentity().physical_state = false + object:get_luaentity().object:set_properties( + { + physical = false + }) + + minetest.after( + 1, + function(args) + local lua = object:get_luaentity() + if object == nil or lua == nil or lua.itemstring == nil then + return + end + if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + if object:get_luaentity().itemstring ~= "" then + minetest.sound_play("item_drop_pickup", {pos = pos, gain = 0.3, max_hear_distance = 16}) + end + object:get_luaentity().itemstring = "" + object:remove() + else + object:setvelocity({x = 0, y = 0, z = 0}) + object:get_luaentity().physical_state = true + object:get_luaentity().object:set_properties( + { + physical = true + }) + end + end, {player, object}) + + end + end + end + end + end + end) + +function minetest.handle_node_drops(pos, drops, digger) + for _,item in ipairs(drops) do + local count, name + if type(item) == "string" then + count = 1 + name = item + else + count = item:get_count() + name = item:get_name() + end + for i=1,count do + local obj = minetest.add_item(pos, name) + if obj ~= nil then + local x = math.random(1, 5) + if math.random(1,2) == 1 then + x = -x + end + local z = math.random(1, 5) + if math.random(1,2) == 1 then + z = -z + end + obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) + + -- FIXME this doesnt work for deactiveted objects + if minetest.setting_get("remove_items") and tonumber(minetest.setting_get("remove_items")) then + minetest.after(tonumber(minetest.setting_get("remove_items")), function(obj) + obj:remove() + end, obj) + end + end + end + end +end + +default.log("mod:item_drop", "loaded") \ No newline at end of file diff --git a/mods/item_drop/sounds/item_drop_pickup.1.ogg b/mods/item_drop/sounds/item_drop_pickup.1.ogg new file mode 100644 index 0000000..2ae432d Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.1.ogg differ diff --git a/mods/item_drop/sounds/item_drop_pickup.2.ogg b/mods/item_drop/sounds/item_drop_pickup.2.ogg new file mode 100644 index 0000000..f58bf08 Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.2.ogg differ diff --git a/mods/item_drop/sounds/item_drop_pickup.3.ogg b/mods/item_drop/sounds/item_drop_pickup.3.ogg new file mode 100644 index 0000000..cf57c94 Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.3.ogg differ diff --git a/mods/item_drop/sounds/item_drop_pickup.4.ogg b/mods/item_drop/sounds/item_drop_pickup.4.ogg new file mode 100644 index 0000000..bfe99d9 Binary files /dev/null and b/mods/item_drop/sounds/item_drop_pickup.4.ogg differ diff --git a/mods/mobs/README.txt b/mods/mobs/README.txt new file mode 100644 index 0000000..4363918 --- /dev/null +++ b/mods/mobs/README.txt @@ -0,0 +1,7 @@ +Mobs mod +======== +By PilzAdam, KrupnovPavel, Zeg9, TenPlus1 +Tweaked by Kaadmy, for Pixture + +Asset license: CC0 +Source License: MIT(originally WTFPL) diff --git a/mods/mobs/api.lua b/mods/mobs/api.lua new file mode 100644 index 0000000..33b17fe --- /dev/null +++ b/mods/mobs/api.lua @@ -0,0 +1,1660 @@ +-- Mobs Api (9th August 2015) +mobs = {} +mobs.mod = "redo" + +-- Initial settings check +local damage_enabled = minetest.setting_getbool("enable_damage") or true +local peaceful_only = minetest.setting_getbool("only_peaceful_mobs") or false +local enable_blood = minetest.setting_getbool("mobs_enable_blood") or true +mobs.protected = tonumber(minetest.setting_get("mobs_spawn_protected")) or 0 +mobs.remove = minetest.setting_getbool("remove_far_mobs") or false + +function mobs:register_mob(name, def) + minetest.register_entity( + name, + { + stepheight = def.stepheight or 0.6, + name = name, + fly = def.fly, + fly_in = def.fly_in or "air", + owner = def.owner or "", + order = def.order or "", + on_die = def.on_die, + do_custom = def.do_custom, + jump_height = def.jump_height or 6, + jump_chance = def.jump_chance or 0, + rotate = math.rad(def.rotate or 0), -- 0=front, 90=side, 180=back, 270=side2 + lifetimer = def.lifetimer or 180, -- 3 minutes + hp_min = def.hp_min or 5, + hp_max = def.hp_max or 10, + physical = true, + collides_with_objects = def.collides_with_objects or true, + collisionbox = def.collisionbox, + visual = def.visual, + visual_size = def.visual_size or {x = 1, y = 1}, + mesh = def.mesh, + makes_footstep_sound = def.makes_footstep_sound or false, + view_range = def.view_range or 5, + walk_velocity = def.walk_velocity or 1, + run_velocity = def.run_velocity or 2, + damage = def.damage, + light_damage = def.light_damage or 0, + water_damage = def.water_damage or 0, + lava_damage = def.lava_damage or 0, + fall_damage = def.fall_damage or 1, + fall_speed = def.fall_speed or -10, -- must be lower than -2 (default: -10) + drops = def.drops or {}, + armor = def.armor, + on_rightclick = def.on_rightclick, + type = def.type, + explode_radius = def.explode_radius or 3, + attack_type = def.attack_type, + arrow = def.arrow, + shoot_interval = def.shoot_interval, + sounds = def.sounds or {}, + animation = def.animation, + follow = def.follow or "", + jump = def.jump or true, + walk_chance = def.walk_chance or 50, + attacks_monsters = def.attacks_monsters or false, + group_attack = def.group_attack or false, + --fov = def.fov or 120, + passive = def.passive or false, + recovery_time = def.recovery_time or 0.5, + knock_back = def.knock_back or 3, + blood_amount = def.blood_amount or 5, + blood_texture = def.blood_texture or "mobs_blood.png", + shoot_offset = def.shoot_offset or 0, + floats = def.floats or 1, -- floats in water by default + replace_rate = def.replace_rate, + replace_what = def.replace_what, + replace_with = def.replace_with, + replace_offset = def.replace_offset or 0, + timer = 0, + env_damage_timer = 0, -- only if state = "attack" + attack = {player=nil, dist=nil}, + state = "stand", + tamed = false, + pause_timer = 0, + horny = false, + hornytimer = 0, + child = false, + gotten = false, + health = 0, + on_replace = def.on_replace or nil, + on_spawn = def.on_spawn or nil, + check_fed = function(self, name, feed_count, breed) -- check if a mob is fed + self.food = (self.food or 0) + 1 + + -- make children grow quicker + if self.child == true then + self.hornytimer = self.hornytimer + 20 + return true + end + + -- feed and tame + if self.food >= feed_count then + self.food = 0 + + if breed and self.hornytimer == 0 then + self.horny = true + end + + self.gotten = false + + if (not self.tamed) and name ~= nil and (not self.owner) or self.owner == "" then + self.owner = name + self.tamed = true + end + + -- make sound when fed so many times + if self.sounds.random then + minetest.sound_play( + self.sounds.random, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + end + end, + do_attack = function(self, player, dist) + if self.state ~= "attack" then + if math.random(0,100) < 90 + and self.sounds.war_cry then + minetest.sound_play( + self.sounds.war_cry, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + self.state = "attack" + self.attack.player = player + self.attack.dist = dist + end + end, + set_velocity = function(self, v) + v = (v or 0) + if def.drawtype + and def.drawtype == "side" then + self.rotate = math.rad(90) + end + local yaw = self.object:getyaw() + self.rotate + local x = math.sin(yaw) * -v + local z = math.cos(yaw) * v + self.object:setvelocity({x = x, y = self.object:getvelocity().y, z = z}) + end, + get_velocity = function(self) + local v = self.object:getvelocity() + return (v.x ^ 2 + v.z ^ 2) ^ (0.5) + end, + --[[ + in_fov = function(self,pos) + -- checks if POS is in self's FOV + local yaw = self.object:getyaw() + self.rotate + local vx = math.sin(yaw) + local vz = math.cos(yaw) + local ds = math.sqrt(vx ^ 2 + vz ^ 2) + local ps = math.sqrt(pos.x ^ 2 + pos.z ^ 2) + local d = { x = vx / ds, z = vz / ds } + local p = { x = pos.x / ps, z = pos.z / ps } + local an = ( d.x * p.x ) + ( d.z * p.z ) + + a = math.deg( math.acos( an ) ) + + if a > ( self.fov / 2 ) then + return false + else + return true + end + end,--]] + set_animation = function(self, type) + if not self.animation then + return + end + + if not self.animation.current then + self.animation.current = "" + end + + if type == "stand" + and self.animation.current ~= "stand" then + if self.animation.stand_start + and self.animation.stand_end + and self.animation.speed_normal then + self.object:set_animation({ + x = self.animation.stand_start, + y = self.animation.stand_end}, + self.animation.speed_normal, 0) + self.animation.current = "stand" + end + elseif type == "walk" + and self.animation.current ~= "walk" then + if self.animation.walk_start + and self.animation.walk_end + and self.animation.speed_normal then + self.object:set_animation({ + x = self.animation.walk_start, + y = self.animation.walk_end}, + self.animation.speed_normal, 0) + self.animation.current = "walk" + end + elseif type == "run" + and self.animation.current ~= "run" then + if self.animation.run_start + and self.animation.run_end + and self.animation.speed_run then + self.object:set_animation({ + x = self.animation.run_start, + y = self.animation.run_end}, + self.animation.speed_run, 0) + self.animation.current = "run" + end + elseif type == "punch" + and self.animation.current ~= "punch" then + if self.animation.punch_start + and self.animation.punch_end + and self.animation.speed_normal then + self.object:set_animation({ + x = self.animation.punch_start, + y = self.animation.punch_end}, + self.animation.speed_normal, 0) + self.animation.current = "punch" + end + end + end, + on_step = function(self, dtime) + + if self.type == "monster" + and peaceful_only then + self.object:remove() + return + end + + -- if lifetimer run out and not npc; tamed or attacking then remove mob + if self.type ~= "npc" + and not self.tamed then + self.lifetimer = self.lifetimer - dtime + if self.lifetimer <= 0 + and self.state ~= "attack" then + minetest.log("action","lifetimer expired, removed "..self.name) + effect(self.object:getpos(), 15, "tnt_smoke.png") + self.object:remove() + return + end + end + + -- check for mob drop/replace (used for chicken egg and sheep eating grass/wheat) + if self.replace_rate + and self.child == false + and math.random(1, self.replace_rate) == 1 then + local pos = self.object:getpos() + pos.y = pos.y + self.replace_offset + -- print ("replace node = ".. minetest.get_node(pos).name, pos.y) + if self.replace_what and self.object:getvelocity().y == 0 and #minetest.find_nodes_in_area(pos, pos, self.replace_what) > 0 then + --and self.state == "stand" then + if self.on_replace ~= nil then + self.on_replace(self, pos) + else + minetest.set_node(pos, {name = self.replace_with}) + end + end + end + + local yaw = 0 + + if not self.fly then + -- floating in water (or falling) + local pos = self.object:getpos() + local nod = minetest.get_node_or_nil(pos) + if nod then nod = nod.name else nod = "default:dirt" end + local nodef = minetest.registered_nodes[nod] + + local v = self.object:getvelocity() + if v.y > 0.1 then + self.object:setacceleration({ + x = 0, + y= self.fall_speed, + z = 0 + }) + end + if nodef.groups.water then + if self.floats == 1 then + self.object:setacceleration( + { + x = 0, + y = -self.fall_speed / (math.max(1, v.y) ^ 2), + z = 0 + }) + end + else + self.object:setacceleration( + { + x = 0, + y = self.fall_speed, + z = 0 + }) + + -- fall damage + if self.fall_damage == 1 + and self.object:getvelocity().y == 0 then + local d = (self.old_y or 0) - self.object:getpos().y + if d > 5 then + self.object:set_hp(self.object:get_hp() - math.floor(d - 5)) + effect(self.object:getpos(), 5, "tnt_smoke.png") + check_for_death(self) + end + self.old_y = self.object:getpos().y + end + end + end + + -- knockback timer + if self.pause_timer > 0 then + self.pause_timer = self.pause_timer - dtime + if self.pause_timer < 1 then + self.pause_timer = 0 + end + return + end + + -- attack timer + self.timer = self.timer + dtime + if self.state ~= "attack" then + if self.timer < 1 then + return + end + self.timer = 0 + end + + if self.sounds.random + and math.random(1, 100) <= 1 then + minetest.sound_play( + self.sounds.random, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + + local do_env_damage = function(self) + + local pos = self.object:getpos() + local tod = minetest.get_timeofday() + + -- daylight above ground + if self.light_damage ~= 0 + and pos.y > 0 + and tod > 0.2 + and tod < 0.8 + and (minetest.get_node_light(pos) or 0) > 12 then + self.object:set_hp(self.object:get_hp() - self.light_damage) + effect(pos, 5, "tnt_smoke.png") + if check_for_death(self) then return end + end + + pos.y = pos.y + self.collisionbox[2] -- foot level + local nod = minetest.get_node_or_nil(pos) + if not nod then return end ; -- print ("standing in "..nod.name) + local nodef = minetest.registered_nodes[nod.name] + pos.y = pos.y + 1 + + -- water + if self.water_damage ~= 0 + and nodef.groups.water then + self.object:set_hp(self.object:get_hp() - self.water_damage) + effect(pos, 5, "bubble.png") + if check_for_death(self) then return end + end + + -- lava or fire + if self.lava_damage ~= 0 + and nodef.groups.lava then + self.object:set_hp(self.object:get_hp() - self.lava_damage) + effect(pos, 5, "mobs_flame.png", 8) + if check_for_death(self) then return end + end + + end + + local do_jump = function(self) + if self.fly then + return + end + + self.jumptimer = (self.jumptimer or 0) + 1 + if self.jumptimer < 3 then + local pos = self.object:getpos() + pos.y = (pos.y + self.collisionbox[2]) - 0.2 + local nod = minetest.get_node(pos) + --print ("standing on:", nod.name, pos.y) + if not nod + or not minetest.registered_nodes[nod.name] + or minetest.registered_nodes[nod.name].walkable == false then + return + end + if self.direction then + pos.y = pos.y + 0.5 + local nod = minetest.get_node_or_nil( + { + x = pos.x + self.direction.x, + y = pos.y, + z = pos.z + self.direction.z + }) + --print ("in front:", nod.name, pos.y) + if nod and nod.name and + (nod.name ~= "air" + or self.walk_chance == 0) then + local def = minetest.registered_items[nod.name] + if (def + and def.walkable + and not nod.name:find("fence")) + or self.walk_chance == 0 then + local v = self.object:getvelocity() + v.y = self.jump_height + 1 + v.x = v.x * 2.2 + v.z = v.z * 2.2 + self.object:setvelocity(v) + if self.sounds.jump then + minetest.sound_play( + self.sounds.jump, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + end + end + end + else + self.jumptimer = 0 + end + end + + -- environmental damage timer + self.env_damage_timer = self.env_damage_timer + dtime + if self.state == "attack" + and self.env_damage_timer > 1 then + self.env_damage_timer = 0 + do_env_damage(self) + elseif self.state ~= "attack" then + do_env_damage(self) + end + + -- find someone to attack + if self.type == "monster" + and damage_enabled + and self.state ~= "attack" then + + local s = self.object:getpos() + local p, sp, dist + local player = nil + local type = nil + local obj = nil + local min_dist = self.view_range + 1 + local min_player = nil + + for _,oir in ipairs(minetest.get_objects_inside_radius(s, self.view_range)) do + + if oir:is_player() then + player = oir + type = "player" + else + obj = oir:get_luaentity() + if obj then + player = obj.object + type = obj.type + end + end + + if type == "player" + or type == "npc" then + s = self.object:getpos() + p = player:getpos() + sp = s + p.y = p.y + 1 + sp.y = sp.y + 1 -- aim higher to make looking up hills more realistic + dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + if dist < self.view_range then + -- and self.in_fov(self,p) then + -- choose closest player to attack + if minetest.line_of_sight(sp, p, 2) == true + and dist < min_dist then + min_dist = dist + min_player = player + end + end + end + end + -- attack player + if min_player then + self.do_attack(self, min_player, min_dist) + end + end + + -- npc, find closest monster to attack + local min_dist = self.view_range + 1 + local min_player = nil + + if self.type == "npc" + and self.attacks_monsters + and self.state ~= "attack" then + local s = self.object:getpos() + local obj = nil + for _, oir in pairs(minetest.get_objects_inside_radius(s,self.view_range)) do + obj = oir:get_luaentity() + if obj + and obj.type == "monster" then + -- attack monster + p = obj.object:getpos() + dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + if dist < min_dist then + min_dist = dist + min_player = obj.object + end + end + end + if min_player then + self.do_attack(self, min_player, min_dist) + end + end + + -- horny animal can mate for 40 seconds, afterwards horny animal cannot mate again for 200 seconds + if self.horny == true + and self.hornytimer < 240 + and self.child == false then + self.hornytimer = self.hornytimer + 1 + if self.hornytimer >= 240 then + self.hornytimer = 0 + self.horny = false + end + end + + -- if animal is child take 240 seconds before growing into adult + if self.child == true then + self.hornytimer = self.hornytimer + 1 + if self.hornytimer > 240 then + self.child = false + self.hornytimer = 0 + self.object:set_properties( + { + textures = self.base_texture, + mesh = self.base_mesh, + visual_size = self.base_size, + collisionbox = self.base_colbox, + }) + end + end + + -- if animal is horny, find another same animal who is horny and mate + if self.horny == true + and self.hornytimer <= 40 then + local pos = self.object:getpos() + effect({x = pos.x, y = pos.y + 0.5, z = pos.z}, 4, "heart.png") + local ents = minetest.get_objects_inside_radius(pos, self.view_range) + local num = 0 + local ent = nil + for i,obj in ipairs(ents) do + ent = obj:get_luaentity() + + -- check for same animal with different colour + local canmate = false + if ent then + if ent.name == self.name then + canmate = true + else + local entname = string.split(ent.name,":") + local selfname = string.split(self.name,":") + if entname[1] == selfname[1] then + entname = string.split(entname[2],"_") + selfname = string.split(selfname[2],"_") + if entname[1] == selfname[1] then + canmate = true + end + end + end + end + + if ent + and canmate == true + and ent.horny == true + and ent.hornytimer <= 40 then + num = num + 1 + end + if num > 1 then + self.hornytimer = 41 + ent.hornytimer = 41 + minetest.after( + 7, + function(dtime) + local mob = minetest.add_entity(pos, self.name) + local ent2 = mob:get_luaentity() + local textures = self.base_texture + if def.child_texture then + textures = def.child_texture[1] + end + mob:set_properties({ + textures = textures, + visual_size = { + x = self.base_size.x / 2, + y = self.base_size.y / 2 + }, + collisionbox = { + self.base_colbox[1] / 2, + self.base_colbox[2] / 2, + self.base_colbox[3] / 2, + self.base_colbox[4] / 2, + self.base_colbox[5] / 2, + self.base_colbox[6] / 2 + }, + }) + ent2.child = true + ent2.tamed = true + --ent2.following = ent -- follow mother + end) + num = 0 + break + end + end + end + + -- find player to follow + if (self.follow ~= "" or self.order == "follow") and not self.following and self.state ~= "attack" then + local s, p, dist + for _,player in pairs(minetest.get_connected_players()) do + s = self.object:getpos() + p = player:getpos() + dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + if dist < self.view_range then + self.following = player + break + end + end + end + + -- custom function (defined in mob lua file) + if self.do_custom then + self.do_custom(self) + end + + if self.type == "npc" + and self.order == "follow" + and self.state ~= "attack" then + -- npc stop following player if not owner + if self.following + and self.type == "npc" + and self.owner + and self.owner ~= self.following:get_player_name() then + self.following = nil + end + else + -- stop following player if not holding specific item + if self.following + and self.following.is_player + and self.following:get_wielded_item():get_name() ~= self.follow then + self.following = nil + end + end + + -- follow player or mob + if self.following then + local s = self.object:getpos() + local p + + if self.following.is_player + and self.following:is_player() then + p = self.following:getpos() + elseif self.following.object then + p = self.following.object:getpos() + end + + if p then + local dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + if dist > self.view_range then + self.following = nil + else + local vec = {x = p.x - s.x, y = p.y - s.y, z = p.z - s.z} + yaw = (math.atan(vec.z / vec.x) + math.pi / 2) - self.rotate + if p.x > s.x then + yaw = yaw + math.pi + end + self.object:setyaw(yaw) + + -- anyone but standing npc's can move along + if dist > 2 + and self.order ~= "stand" then + if (self.jump + and self.get_velocity(self) <= 0.5 + and self.object:getvelocity().y == 0) + or (self.object:getvelocity().y == 0 + and self.jump_chance > 0) then + self.direction = { + x = math.sin(yaw) * -1, + y = -20, + z = math.cos(yaw) + } + do_jump(self) + end + self.set_velocity(self, self.walk_velocity) + if self.walk_chance ~= 0 then + self:set_animation("walk") + end + else + self.set_velocity(self, 0) + self:set_animation("stand") + end + return + end + end + end + + if self.state == "stand" then + -- randomly turn + if math.random(1, 4) == 1 then + -- if there is a player nearby look at them + local lp = nil + local s = self.object:getpos() + + if self.type == "npc" then + local o = minetest.get_objects_inside_radius(self.object:getpos(), 3) + + local yaw = 0 + for _,o in ipairs(o) do + if o:is_player() then + lp = o:getpos() + break + end + end + end + + if lp ~= nil then + local vec = {x = lp.x - s.x, y = lp.y - s.y, z = lp.z - s.z} + yaw = (math.atan(vec.z / vec.x) + math.pi / 2) - self.rotate + if lp.x > s.x then + yaw = yaw + math.pi + end + else + yaw = self.object:getyaw() + ((math.random(0, 360) - 180) / 180 * math.pi) + end + self.object:setyaw(yaw) + end + + self.set_velocity(self, 0) + self.set_animation(self, "stand") + + -- npc's ordered to stand stay standing + if self.type == "npc" + and self.order == "stand" then + self.set_velocity(self, 0) + self.state = "stand" + self:set_animation("stand") + else + if self.walk_chance ~= 0 and math.random(1, 100) <= self.walk_chance then + self.set_velocity(self, self.walk_velocity) + self.state = "walk" + self.set_animation(self, "walk") + end + + -- jumping mobs only + -- if self.jump and math.random(1, 100) <= self.jump_chance then + -- self.direction = {x = 0, y = 0, z = 0} + -- do_jump(self) + -- self.set_velocity(self, self.walk_velocity) + -- end + end + + elseif self.state == "walk" then + local s = self.object:getpos() + local lp = minetest.find_node_near(s, 1, {"group:water"}) + + -- water swimmers cannot move out of water + if self.fly and self.fly_in == "default:water_source" and not lp then + print ("out of water") + self.set_velocity(self, 0) + self.state = "flop" -- change to undefined state so nothing more happens + self:set_animation("stand") + return + end + -- if water nearby then turn away + if lp then + local vec = {x = lp.x - s.x, y = lp.y - s.y, z = lp.z - s.z} + yaw = math.atan(vec.z / vec.x) + 3 * math.pi / 2 - self.rotate + if lp.x > s.x then + yaw = yaw + math.pi + end + self.object:setyaw(yaw) + + -- otherwise randomly turn + elseif math.random(1, 100) <= 30 then + self.object:setyaw(self.object:getyaw() + ((math.random(0, 360) - 180) / 180 * math.pi)) + end + if self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then + self.direction = { + x = math.sin(yaw) * -1, + y = -20, + z = math.cos(yaw) + } + do_jump(self) + end + + self:set_animation("walk") + self.set_velocity(self, self.walk_velocity) + if math.random(1, 100) <= 30 then + self.set_velocity(self, 0) + self.state = "stand" + self:set_animation("stand") + end + + -- exploding mobs + elseif self.state == "attack" and self.attack_type == "explode" then + if not self.attack.player + or not self.attack.player:is_player() then + self.state = "stand" + self:set_animation("stand") + self.timer = 0 + self.blinktimer = 0 + return + end + local s = self.object:getpos() + local p = self.attack.player:getpos() + local dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + if dist > self.view_range or self.attack.player:get_hp() <= 0 then + self.state = "stand" + self.v_start = false + self.set_velocity(self, 0) + self.timer = 0 + self.blinktimer = 0 + self.attack = {player = nil, dist = nil} + self:set_animation("stand") + return + else + self:set_animation("walk") + self.attack.dist = dist + end + + local vec = {x = p.x - s.x, y = p.y - s.y, z = p.z - s.z} + yaw = math.atan(vec.z / vec.x) + math.pi / 2 - self.rotate + if p.x > s.x then + yaw = yaw+math.pi + end + self.object:setyaw(yaw) + if self.attack.dist > 3 then + if not self.v_start then + self.v_start = true + self.set_velocity(self, self.run_velocity) + self.timer = 0 + self.blinktimer = 0 + else + self.timer = 0 + self.blinktimer = 0 + if self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0 then + local v = self.object:getvelocity() + v.y = 5 + self.object:setvelocity(v) + end + self.set_velocity(self, self.run_velocity) + end + self:set_animation("run") + else + self.set_velocity(self, 0) + self.timer = self.timer + dtime + self.blinktimer = (self.blinktimer or 0) + dtime + if self.blinktimer > 0.2 then + self.blinktimer = 0 + if self.blinkstatus then + self.object:settexturemod("") + else + self.object:settexturemod("^[brighten") + end + self.blinkstatus = not self.blinkstatus + end + if self.timer > 3 then + local pos = vector.round(self.object:getpos()) + entity_physics(pos, 3) -- hurt player/mobs caught in blast area + if minetest.find_node_near(pos, 1, {"group:water"}) or minetest.is_protected(pos, "") then + self.object:remove() + if self.sounds.explode ~= "" then + minetest.sound_play(self.sounds.explode, { + pos = pos, + gain = 1.0, + max_hear_distance = 16 + }) + end + effect(pos, 15, "tnt_smoke.png", 5) + return + end + self.object:remove() + pos.y = pos.y - 1 + mobs:explosion(pos, self.explode_radius, 0, 1, self.sounds.explode) + end + end + -- end of exploding mobs + + elseif self.state == "attack" + and self.attack_type == "dogfight" then + if not self.attack.player or not self.attack.player:getpos() then + print("stop attacking") + self.state = "stand" + self:set_animation("stand") + return + end + local s = self.object:getpos() + local p = self.attack.player:getpos() + local dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + + -- fly bit modified from BlockMens creatures mod + if self.fly + and dist > 2 then + + local nod = minetest.get_node_or_nil(s) + local p1 = s + local me_y = math.floor(p1.y) + local p2 = p + local p_y = math.floor(p2.y + 1) + local v = self.object:getvelocity() + if nod + and nod.name == self.fly_in then + if me_y < p_y then + self.object:setvelocity({ + x = v.x, + y = 1 * self.walk_velocity, + z = v.z + }) + elseif me_y > p_y then + self.object:setvelocity({ + x = v.x, + y = -1 * self.walk_velocity, + z = v.z + }) + end + else + if me_y < p_y then + self.object:setvelocity({ + x = v.x, + y = 0.01, + z = v.z + }) + elseif me_y > p_y then + self.object:setvelocity({ + x = v.x, + y = -0.01, + z = v.z + }) + end + end + + end + -- end fly bit + + if dist > self.view_range or self.attack.player:get_hp() <= 0 then + self.state = "stand" + self.set_velocity(self, 0) + self.attack = {player = nil, dist = nil} + self:set_animation("stand") + return + else + self.attack.dist = dist + end + + local vec = {x = p.x - s.x, y = p.y - s.y, z = p.z - s.z} + yaw = (math.atan(vec.z / vec.x) + math.pi / 2) - self.rotate + if p.x > s.x then + yaw = yaw + math.pi + end + self.object:setyaw(yaw) + -- attack distance is 2 + half of mob width so the bigger mobs can attack (like slimes) + if self.attack.dist > ((-self.collisionbox[1] + self.collisionbox[4]) / 2) + 2 then + -- jump attack + if (self.jump and self.get_velocity(self) <= 0.5 and self.object:getvelocity().y == 0) or (self.object:getvelocity().y == 0 and self.jump_chance > 0) then + self.direction = { + x = math.sin(yaw) * -1, + y = -20, + z = math.cos(yaw) + } + do_jump(self) + end + self.set_velocity(self, self.run_velocity) + self:set_animation("run") + else + self.set_velocity(self, 0) + self:set_animation("punch") + if self.timer > 1 then + self.timer = 0 + local p2 = p + local s2 = s + p2.y = p2.y + 1.5 + s2.y = s2.y + 1.5 + if minetest.line_of_sight(p2, s2) == true then + if self.sounds.attack then + minetest.sound_play( + self.sounds.attack, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + self.attack.player:punch( + self.object, + 1.0, + { + full_punch_interval=1.0, + damage_groups = {fleshy=self.damage} + }, vec) + if self.attack.player:get_hp() <= 0 then + self.state = "stand" + self:set_animation("stand") + end + end + end + end + + elseif self.state == "attack" + and self.attack_type == "shoot" then + + local s = self.object:getpos() + local p = self.attack.player:getpos() + if not p then + self.state = "stand" + return + end + p.y = p.y - .5 + s.y = s.y + .5 + local dist = ((p.x - s.x) ^ 2 + (p.y - s.y) ^ 2 + (p.z - s.z) ^ 2) ^ 0.5 + if dist > self.view_range or self.attack.player:get_hp() <= 0 then + self.state = "stand" + self.set_velocity(self, 0) + self:set_animation("stand") + return + else + self.attack.dist = dist + end + + local vec = {x = p.x - s.x, y = p.y - s.y, z = p.z - s.z} + yaw = (math.atan(vec.z / vec.x) + math.pi / 2) - self.rotate + if p.x > s.x then + yaw = yaw + math.pi + end + self.object:setyaw(yaw) + self.set_velocity(self, 0) + + if self.shoot_interval and self.timer > self.shoot_interval and math.random(1, 100) <= 60 then + self.timer = 0 + + self:set_animation("punch") + + if self.sounds.attack then + minetest.sound_play( + self.sounds.attack, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + + local p = self.object:getpos() + p.y = p.y + (self.collisionbox[2] + self.collisionbox[5]) / 2 + local obj = minetest.add_entity(p, self.arrow) + local amount = (vec.x ^ 2 + vec.y ^ 2 + vec.z ^ 2) ^ 0.5 + local v = obj:get_luaentity().velocity + vec.y = vec.y + self.shoot_offset -- this makes shoot aim accurate + vec.x = vec.x *v / amount + vec.y = vec.y *v / amount + vec.z = vec.z *v / amount + obj:setvelocity(vec) + end + end + end, + + on_activate = function(self, staticdata, dtime_s) + + if self.type == "monster" + and peaceful_only then + self.object:remove() + end + + -- load entity variables + if staticdata then + local tmp = minetest.deserialize(staticdata) + if tmp then + for _,stat in pairs(tmp) do + self[_] = stat + end + end + end + + -- select random texture, set model and size + if not self.base_texture then + self.base_texture = def.textures[math.random(1, #def.textures)] + self.base_mesh = def.mesh + self.base_size = self.visual_size + self.base_colbox = self.collisionbox + end + + -- set texture, model and size + local textures = self.base_texture + local mesh = self.base_mesh + local vis_size = self.base_size + local colbox = self.base_colbox + + -- specific texture if gotten + if self.gotten == true + and def.gotten_texture then + textures = def.gotten_texture + end + + -- specific mesh if gotten + if self.gotten == true + and def.gotten_mesh then + mesh = def.gotten_mesh + end + + -- if object is child then set half size + if self.child == true then + vis_size = { + x = self.base_size.x / 2, + y = self.base_size.y / 2 + } + if def.child_texture then + textures = def.child_texture[1] + end + colbox = { + self.base_colbox[1] / 2, + self.base_colbox[2] / 2, + self.base_colbox[3] / 2, + self.base_colbox[4] / 2, + self.base_colbox[5] / 2, + self.base_colbox[6] / 2 + } + end + + if self.health == 0 then + self.health = math.random (self.hp_min, self.hp_max) + end + + self.object:set_hp( self.health ) + self.object:set_armor_groups({fleshy = self.armor}) + self.state = "stand" + self.order = "stand" + self.following = nil + self.old_y = self.object:getpos().y + self.object:setyaw(math.random(1, 360) / 180 * math.pi) + self.sounds.distance = (self.sounds.distance or 10) + self.textures = textures + self.mesh = mesh + self.collisionbox = colbox + self.visual_size = vis_size + -- set anything changed above + self.object:set_properties(self) + + if self.on_spawn then + self:on_spawn() + end + + end, + + get_staticdata = function(self) + + -- remove mob when out of range unless tamed + if mobs.remove == true and self.remove_ok and not self.tamed then + print ("REMOVED", self.remove_ok, self.name) + self.object:remove() + end + self.remove_ok = true + self.attack = nil + + local tmp = {} + for _,stat in pairs(self) do + local t = type(stat) + if t ~= 'function' + and t ~= 'nil' + and t ~= 'userdata' then + tmp[_] = self[_] + end + end + -- print('===== '..self.name..'\n'.. dump(tmp)..'\n=====\n') + return minetest.serialize(tmp) + end, + + on_punch = function(self, hitter, tflp, tool_capabilities, dir) + -- weapon wear + local weapon = hitter:get_wielded_item() + if weapon:get_definition().tool_capabilities ~= nil then + local wear = ( (weapon:get_definition().tool_capabilities.full_punch_interval or 1.4) / 75 ) * 9000 + weapon:add_wear(wear) + hitter:set_wielded_item(weapon) + end + + -- weapon sounds + if weapon:get_definition().sounds ~= nil then + local s = math.random(0, #weapon:get_definition().sounds) + minetest.sound_play(weapon:get_definition().sounds[s], { + object=hitter, + max_hear_distance = 8 + }) + else + minetest.sound_play("default_punch", { + object = hitter, + max_hear_distance = 5 + }) + end + + -- exit here if dead + if check_for_death(self) then + return + end + + -- blood_particles + if self.blood_amount > 0 + and enable_blood == true then + local pos = self.object:getpos() + pos.y = pos.y + (-self.collisionbox[2] + self.collisionbox[5]) / 2 + effect(pos, self.blood_amount, self.blood_texture) + end + + -- knock back effect + if self.knock_back > 0 then + local kb = self.knock_back + local r = self.recovery_time + local v = self.object:getvelocity() + if tflp < tool_capabilities.full_punch_interval then + if kb > 0 then + kb = kb * ( tflp / tool_capabilities.full_punch_interval ) + end + r = r * ( tflp / tool_capabilities.full_punch_interval ) + end + self.object:setvelocity({x = dir.x * kb,y = 0,z = dir.z * kb}) + self.pause_timer = r + end + + -- attack puncher and call other mobs for help + if self.passive == false + and not self.tamed then + if self.state ~= "attack" then + self.do_attack(self, hitter, 1) + end + -- alert others to the attack + local obj = nil + for _, oir in pairs(minetest.get_objects_inside_radius(hitter:getpos(), 5)) do + obj = oir:get_luaentity() + if obj then + if obj.group_attack == true + and obj.state ~= "attack" then + obj.do_attack(obj, hitter, 1) + end + end + end + end + end, + }) +end + +mobs.spawning_mobs = {} + +function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light, interval, chance, active_object_count, min_height, max_height) + mobs.spawning_mobs[name] = true + minetest.register_abm( + { + nodenames = nodes, + neighbors = neighbors, + interval = interval, + chance = chance, + action = function(pos, node, _, active_object_count_wider) + -- do not spawn if too many active entities in area + if active_object_count_wider > active_object_count or not mobs.spawning_mobs[name] then + --or not pos then + return + end + + -- spawn above node + pos.y = pos.y + 1 + + -- mobs cannot spawn inside protected areas if enabled + if mobs.protected == 1 + and minetest.is_protected(pos, "") then + return + end + + -- check if light and height levels are ok to spawn + local light = minetest.get_node_light(pos) + if not light + or light > max_light + or light < min_light + or pos.y > max_height + or pos.y < min_height then + return + end + + -- are we spawning inside a solid node? + local nod = minetest.get_node_or_nil(pos) + if not nod + or not nod.name + or not minetest.registered_nodes[nod.name] + or minetest.registered_nodes[nod.name].walkable == true then + return + end + + pos.y = pos.y + 1 + + nod = minetest.get_node_or_nil(pos) + if not nod + or not nod.name + or not minetest.registered_nodes[nod.name] + or minetest.registered_nodes[nod.name].walkable == true then + return + end + + if minetest.setting_getbool("display_mob_spawn") then + minetest.chat_send_all("[mobs] Add "..name.." at "..minetest.pos_to_string(pos)) + end + + -- spawn mob half block higher + pos.y = pos.y - 0.5 + minetest.add_entity(pos, name) + --print ("Spawned "..name.." at "..minetest.pos_to_string(pos).." on "..node.name.." near "..neighbors[1]) + + end + }) +end + +-- compatibility with older mob registration +function mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height) + mobs:spawn_specific(name, nodes, {"air"}, min_light, max_light, 30, chance, active_object_count, -31000, max_height) +end + +-- particle effects +function effect(pos, amount, texture, max_size) + minetest.add_particlespawner( + { + amount = amount, + time = 0.25, + minpos = pos, + maxpos = pos, + minvel = {x = -0, y = -2, z = -0}, + maxvel = {x = 2, y = 2, z = 2}, + minacc = {x = -4, y = -4, z = -4}, + maxacc = {x = 4, y = 4, z = 4}, + minexptime = 0.1, + maxexptime = 1, + minsize = 1, + maxsize = (max_size or 2), + texture = texture, + }) +end + +-- explosion +function mobs:explosion(pos, radius, fire, smoke, sound) + -- node hit, bursts into flame (cannot blast through obsidian or protection redo mod items) + if not fire then fire = 0 end + if not smoke then smoke = 0 end + local pos = vector.round(pos) + local radius = 1 + local vm = VoxelManip() + local minp, maxp = vm:read_from_map(vector.subtract(pos, radius), vector.add(pos, radius)) + local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) + local data = vm:get_data() + local p = {} + local c_air = minetest.get_content_id("air") + local c_ignore = minetest.get_content_id("ignore") + local c_obsidian = minetest.get_content_id("default:obsidian") + local c_brick = minetest.get_content_id("default:obsidianbrick") + local c_chest = minetest.get_content_id("default:chest_locked") + if sound + and sound ~= "" then + minetest.sound_play(sound, { + pos = pos, + gain = 1.0, + max_hear_distance = 16 + }) + end + -- if area protected then no blast damage + if minetest.is_protected(pos, "") then + return + end + for z = -radius, radius do + for y = -radius, radius do + local vi = a:index(pos.x + (-radius), pos.y + y, pos.z + z) + for x = -radius, radius do + p.x = pos.x + x + p.y = pos.y + y + p.z = pos.z + z + if data[vi] ~= c_air and data[vi] ~= c_ignore + and data[vi] ~= c_obsidian and data[vi] ~= c_brick + and data[vi] ~= c_chest then + local n = minetest.get_node(p).name + if minetest.get_item_group(n, "unbreakable") ~= 1 then + -- if chest then drop items inside + if n == "default:chest" then + local meta = minetest.get_meta(p) + local inv = meta:get_inventory() + for i = 1,32 do + local m_stack = inv:get_stack("main", i) + local obj = minetest.add_item(pos, m_stack) + if obj then + obj:setvelocity({x = math.random(-2, 2), y = 7, z = math.random(-2, 2)}) + end + end + end + if fire > 0 + and (minetest.registered_nodes[n].groups.flammable + or math.random(1, 100) <= 30) then +-- minetest.set_node(p, {name = "fire:basic_flame"}) fire mod is disabled + else + minetest.remove_node(p) + end + if smoke > 0 then + effect(p, 2, "tnt_smoke.png", 5) + end + end + end + vi = vi + 1 + end + end + end +end + +-- on mob death drop items +function check_for_death(self) + local hp = self.object:get_hp() + if hp > 0 then + self.health = hp + if self.sounds.damage ~= nil then + minetest.sound_play( + self.sounds.damage, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + return false + end + local pos = self.object:getpos() + self.object:remove() + local obj = nil + for _,drop in ipairs(self.drops) do + if math.random(1, drop.chance) == 1 then + obj = minetest.add_item(pos, ItemStack(drop.name.." "..math.random(drop.min, drop.max))) + if obj then + obj:setvelocity( + { + x = math.random(-1, 1), + y = 5, + z = math.random(-1, 1) + }) + end + end + end + if self.sounds.death ~= nil then + minetest.sound_play( + self.sounds.death, + { + object = self.object, + max_hear_distance = self.sounds.distance + }) + end + if self.on_die then + self.on_die(self, pos) + end + return true +end + +-- from TNT mod +function calc_velocity(pos1, pos2, old_vel, power) + local vel = vector.direction(pos1, pos2) + vel = vector.normalize(vel) + vel = vector.multiply(vel, power) + local dist = vector.distance(pos1, pos2) + dist = math.max(dist, 1) + vel = vector.divide(vel, dist) + vel = vector.add(vel, old_vel) + return vel +end + +-- modified from TNT mod +function entity_physics(pos, radius) + radius = radius * 2 + local objs = minetest.get_objects_inside_radius(pos, radius) + local obj_pos, obj_vel, dist + for _, obj in pairs(objs) do + obj_pos = obj:getpos() + obj_vel = obj:getvelocity() + dist = math.max(1, vector.distance(pos, obj_pos)) + if obj_vel ~= nil then + obj:setvelocity(calc_velocity(pos, obj_pos, obj_vel, radius * 10)) + end + local damage = (4 / dist) * radius + obj:set_hp(obj:get_hp() - damage) + end +end + +-- register arrow for shoot attack +function mobs:register_arrow(name, def) + if not name or not def then return end -- errorcheck + minetest.register_entity( + name, + { + physical = false, + visual = def.visual, + visual_size = def.visual_size, + textures = def.textures, + velocity = def.velocity, + hit_player = def.hit_player, + hit_node = def.hit_node, + hit_mob = def.hit_mob, + drop = def.drop or false, + collisionbox = {0, 0, 0, 0, 0, 0}, -- remove box around arrows + + on_step = function(self, dtime) + self.timer = (self.timer or 0) + 1 + if self.timer > 150 then self.object:remove() return end + + local engage = 10 - (self.velocity / 2) -- clear entity before arrow becomes active + local pos = self.object:getpos() + local node = minetest.get_node_or_nil(self.object:getpos()) + if node then node = node.name else node = "air" end + + if self.hit_node + and minetest.registered_nodes[node] + and minetest.registered_nodes[node].walkable then + self.hit_node(self, pos, node) + if self.drop == true then + pos.y = pos.y + 1 + self.lastpos = (self.lastpos or pos) + minetest.add_item(self.lastpos, self.object:get_luaentity().name) + end + self.object:remove() ; -- print ("hit node") + return + end + + if (self.hit_player or self.hit_mob) + and self.timer > engage then + for _,player in pairs(minetest.get_objects_inside_radius(pos, 1.0)) do + if self.hit_player + and player:is_player() then + self.hit_player(self, player) + self.object:remove() ; -- print ("hit player") + return + end + if self.hit_mob + and player:get_luaentity().name ~= self.object:get_luaentity().name + and player:get_luaentity().name ~= "__builtin:item" then + self.hit_mob(self, player) + self.object:remove() ; -- print ("hit mob") + return + end + end + end + self.lastpos = pos + end + }) +end + +-- Spawn Egg +function mobs:register_egg(mob, desc, background) + local invimg = background + minetest.register_craftitem( + mob, + { + description = desc, + inventory_image = invimg, + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + if pointed_thing.above + and not minetest.is_protected(pos, placer:get_player_name()) then + pos.y = pos.y + 0.5 + local mob = minetest.add_entity(pos, mob) + local ent = mob:get_luaentity() + if ent.type ~= "monster" then + -- set owner + ent.owner = placer:get_player_name() + ent.tamed = true + end + itemstack:take_item() + end + return itemstack + end, + }) +end + +-- capture critter (thanks to blert2112 for idea) +function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith) + if clicker:is_player() and clicker:get_inventory() and not self.child then + -- get name of clicked mob + local mobname = self.name + -- if not nil change what will be added to inventory + if replacewith then + mobname = replacewith + end + + local name = clicker:get_player_name() + + -- is mob tamed? + if self.tamed == false and force_take == false then + minetest.chat_send_player(name, "Not tamed!") + return + end + + -- cannot pick up if not owner + if self.owner ~= name and force_take == false then + minetest.chat_send_player(name, self.owner.." is owner!") + return + end + + if clicker:get_inventory():room_for_item("main", mobname) then + -- was mob clicked with hand, net, or lasso? + local tool = clicker:get_wielded_item() + local chance = 0 + if tool:is_empty() then + chance = chance_hand + elseif tool:get_name() == "mobs:net" then + chance = chance_net + tool:add_wear(4000) -- 17 uses + clicker:set_wielded_item(tool) + elseif tool:get_name() == "mobs:lasso" then + chance = chance_lasso + tool:add_wear(1500) -- 43 uses + clicker:set_wielded_item(tool) + end + -- return if no chance + if chance == 0 then return end + -- calculate chance.. was capture successful? + if math.random(100) <= chance then + -- successful capture.. add to inventory + clicker:get_inventory():add_item("main", mobname) + self.object:remove() + else + minetest.chat_send_player(name, "Missed!") + end + end + end +end + +-- feeding, taming and breeding (thanks blert2112) +function mobs:feed_tame(self, clicker, feed_count, breed) + -- feed a mob(mostly a wrapper to handle self.check_fed) + local item = nil + local itemstring = clicker + local name = nil + + if type(clicker) ~= "string" then + item = clicker:get_wielded_item() + itemstring = item:get_name() + name = clicker:get_player_name() + end + + if itemstring == self.follow then + if name ~= nil then + -- take item + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + end + + self:check_fed(name, feed_count, breed) + + return true + else + return false + end +end \ No newline at end of file diff --git a/mods/mobs/boar.lua b/mods/mobs/boar.lua new file mode 100644 index 0000000..ca04b00 --- /dev/null +++ b/mods/mobs/boar.lua @@ -0,0 +1,78 @@ + +-- Warthog(Boar) by KrupnoPavel +-- Changed to Boar and tweaked by Kaadmy + +mobs:register_mob("mobs:boar", { + type = "animal", + passive = false, + attack_type = "dogfight", + damage = 2, + hp_min = 15, + hp_max = 20, + armor = 200, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.1, 0.4}, + visual = "mesh", + mesh = "mobs_boar.x", + textures = { + {"mobs_boar.png"}, + }, + makes_footstep_sound = true, + sounds = { + random = "mobs_boar", + attack = "mobs_boar_angry", + }, + walk_velocity = 2, + run_velocity = 3, + jump = true, + follow = "default:apple", + view_range = 10, + drops = { + {name = "mobs:pork_raw", + chance = 1, min = 1, max = 4}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 20, + stand_start = 0, + stand_end = 60, + walk_start = 61, + walk_end = 80, + punch_start = 90, + punch_end = 110, + }, + on_rightclick = function(self, clicker) + mobs:feed_tame(self, clicker, 8, true) + mobs:capture_mob(self, clicker, 0, 5, 40, false, nil) + end, +}) + +mobs:register_spawn("mobs:boar", {"default:dirt_with_grass"}, 20, 10, 15000, 1, 31000) +mobs:register_egg("mobs:boar", "Boar", "mobs_boar_inventory.png") + +-- raw porkchop +minetest.register_craftitem( + "mobs:pork_raw", + { + description = "Raw Porkchop", + inventory_image = "mobs_pork_raw.png", + on_use = minetest.item_eat({hp = 4, sat = 30}), + }) + +-- cooked porkchop +minetest.register_craftitem( + "mobs:pork", + { + description = "Cooked Porkchop", + inventory_image = "mobs_pork_cooked.png", + on_use = minetest.item_eat({hp = 8, sat = 50}), + }) + +minetest.register_craft( + { + type = "cooking", + output = "mobs:pork", + recipe = "mobs:pork_raw", + cooktime = 5, + }) \ No newline at end of file diff --git a/mods/mobs/crafts.lua b/mods/mobs/crafts.lua new file mode 100644 index 0000000..93adb21 --- /dev/null +++ b/mods/mobs/crafts.lua @@ -0,0 +1,89 @@ +-- wool +minetest.register_node( + "mobs:wool", + { + description = "Wool Bundle", + tiles ={"mobs_wool.png"}, + is_ground_content = false, + groups = {snappy = 2, oddly_breakable_by_hand = 3, fall_damage_add_percent = -25, fuzzy = 1}, + sounds = default.node_sound_leaves_defaults(), + }) + +-- raw meat +minetest.register_craftitem( + "mobs:meat_raw", + { + description = "Raw Meat", + inventory_image = "mobs_meat_raw.png", + on_use = minetest.item_eat({hp = 3, sat = 30}), + }) + +-- cooked meat +minetest.register_craftitem( + "mobs:meat", + { + description = "Cooked Meat", + inventory_image = "mobs_meat_cooked.png", + on_use = minetest.item_eat({hp = 7, sat = 70}), + }) + +minetest.register_craft( + { + type = "cooking", + output = "mobs:meat", + recipe = "mobs:meat_raw", + cooktime = 5, + }) + +-- shears (right click to shear animal) +minetest.register_tool( + "mobs:shears", + { + description = "Steel Shears (right-click to shear)", + inventory_image = "mobs_shears.png", + }) + +minetest.register_craft( + { + output = 'mobs:shears', + recipe = { + {'default:ingot_steel', ''}, + {'group:stick', 'default:ingot_steel'}, + } + }) + +-- net (right click to capture animal) +minetest.register_tool( + "mobs:net", + { + description = "Net (right-click to capture)", + inventory_image = "mobs_net.png", + }) + +minetest.register_craft( + { + output = 'mobs:net', + recipe = { + {'', '', 'default:fiber'}, + {'', 'default:fiber', 'default:fiber'}, + {'group:stick', '', ''}, + } + }) + +-- lasso (right click to capture animal) +minetest.register_tool( + "mobs:lasso", + { + description = "Lasso (right-click to capture)", + inventory_image = "mobs_lasso.png", + }) + +minetest.register_craft( + { + output = 'mobs:lasso', + recipe = { + {'', 'default:fiber', ''}, + {'default:fiber', '', 'default:fiber'}, + {'group:stick', 'default:fiber', ''}, + } + }) \ No newline at end of file diff --git a/mods/mobs/depends.txt b/mods/mobs/depends.txt new file mode 100644 index 0000000..b7cc57f --- /dev/null +++ b/mods/mobs/depends.txt @@ -0,0 +1,2 @@ +default +util diff --git a/mods/mobs/init.lua b/mods/mobs/init.lua new file mode 100644 index 0000000..ff05dbf --- /dev/null +++ b/mods/mobs/init.lua @@ -0,0 +1,23 @@ +-- +-- Mobs mod +-- By PilzAdam, KrupnovPavel, Zeg9, TenPlus1 +-- Tweaked by Kaadmy, for Pixture +-- + +local path = minetest.get_modpath("mobs") + +-- Mob Api +dofile(path.."/api.lua") + +-- Animals +dofile(path.."/sheep.lua") -- PilzAdam +dofile(path.."/boar.lua") -- KrupnoPavel +dofile(path.."/mineturtle.lua") -- Kaadmy + +-- NPC +dofile(path.."/npc.lua") -- TenPlus1 + +-- Mob Items +dofile(path.."/crafts.lua") + +default.log("mod:mobs", "loaded") diff --git a/mods/mobs/license.txt b/mods/mobs/license.txt new file mode 100644 index 0000000..7a0960e --- /dev/null +++ b/mods/mobs/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Krupnov Pavel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/mods/mobs/mineturtle.lua b/mods/mobs/mineturtle.lua new file mode 100644 index 0000000..b46685f --- /dev/null +++ b/mods/mobs/mineturtle.lua @@ -0,0 +1,55 @@ +-- Mineturtle by Kaadmy + +mobs:register_mob( + "mobs:mineturtle", + { + type = "monster", + passive = false, + attack_type = "explode", + damage = 2, + hp_min = 10, + hp_max = 15, + armor = 200, + collisionbox = {-0.4, 0, -0.4, 0.4, 0.7, 0.4}, + visual = "mesh", + mesh = "mobs_mineturtle.x", + textures = { + {"mobs_mineturtle.png"}, + }, + makes_footstep_sound = false, + sounds = { + random = "mobs_mineturtle", + explode= "tnt_explode", + }, + walk_velocity = 2, + run_velocity = 4, + jump = true, + follow = "tnt:tnt", + view_range = 10, + drops = { + {name = "tnt:tnt", + chance = 1, min = 1, max = 3}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 25, + speed_run = 35, + stand_start = 0, + stand_end = 30, + run_start = 31, + run_end = 50, + walk_start = 31, + walk_end = 50, + punch_start = 51, + punch_end = 60, + }, + on_rightclick = function(self, clicker) + mobs:feed_tame(self, clicker, 4, false) + mobs:capture_mob(self, clicker, 0, 20, 40, false, nil) + end, + }) + +mobs:register_spawn("mobs:mineturtle", {"default:dirt_with_grass"}, 20, 5, 200000, 1, 31000) +mobs:register_egg("mobs:mineturtle", "Mine Turtle", "mobs_mineturtle_inventory.png") \ No newline at end of file diff --git a/mods/mobs/models/mobs_boar.blend b/mods/mobs/models/mobs_boar.blend new file mode 100644 index 0000000..d2cd04b Binary files /dev/null and b/mods/mobs/models/mobs_boar.blend differ diff --git a/mods/mobs/models/mobs_boar.x b/mods/mobs/models/mobs_boar.x new file mode 100644 index 0000000..5f20f87 --- /dev/null +++ b/mods/mobs/models/mobs_boar.x @@ -0,0 +1,3284 @@ +xof 0303txt 0032 + +template XSkinMeshHeader { + <3cf169ce-ff7c-44ab-93c0-f78f62d172e2> + WORD nMaxSkinWeightsPerVertex; + WORD nMaxSkinWeightsPerFace; + WORD nBones; +} + +template SkinWeights { + <6f0d123b-bad2-4167-a0d0-80224f25fabb> + STRING transformNodeName; + DWORD nWeights; + array DWORD vertexIndices[nWeights]; + array float weights[nWeights]; + Matrix4x4 matrixOffset; +} + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame mob_armature { + FrameTransformMatrix { + 10.000000, 0.000000, 0.000000, 0.000000, + 0.000000,10.000000, 0.000000, 0.000000, + 0.000000, 0.000000,10.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame mob_armature_body { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000,-1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + } // End of mob_armature_body + Frame mob_armature_head { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.500000, 0.000000, 1.000000;; + } + } // End of mob_armature_head + Frame mob_armature_fl_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.200000, 0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_fl_leg + Frame mob_armature_fr_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.200000, 0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_fr_leg + Frame mob_armature_rr_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.200000,-0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_rr_leg + Frame mob_armature_rl_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.200000,-0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_rl_leg + Frame mob { + FrameTransformMatrix { + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.100000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // mob mesh + 224; + 4.000000;-6.000000; 1.000000;, + -4.000000;-6.000000; 1.000000;, + -4.000000;-6.000000;-5.000000;, + 4.000000;-6.000000;-5.000000;, + -4.000000;-6.000000; 1.000000;, + -4.000000; 6.000000; 1.000000;, + -4.000000; 6.000000;-5.000000;, + -4.000000;-6.000000;-5.000000;, + -4.000000; 6.000000; 1.000000;, + 4.000000; 6.000000; 1.000000;, + 4.000000; 6.000000;-5.000000;, + -4.000000; 6.000000;-5.000000;, + 4.000000; 6.000000; 1.000000;, + 4.000000;-6.000000; 1.000000;, + 4.000000;-6.000000;-5.000000;, + 4.000000; 6.000000;-5.000000;, + 4.000000;-6.000000;-5.000000;, + -4.000000;-6.000000;-5.000000;, + -4.000000; 6.000000;-5.000000;, + 4.000000; 6.000000;-5.000000;, + 4.000000; 6.000000; 1.000000;, + -4.000000; 6.000000; 1.000000;, + -4.000000;-6.000000; 1.000000;, + 4.000000;-6.000000; 1.000000;, + 3.500000;-5.500000;-5.000000;, + 0.500000;-5.500000;-5.000000;, + 0.500000;-5.500000;-8.000000;, + 3.500000;-5.500000;-8.000000;, + 0.500000;-5.500000;-5.000000;, + 0.500000;-2.500000;-5.000000;, + 0.500000;-2.500000;-8.000000;, + 0.500000;-5.500000;-8.000000;, + 0.500000;-2.500000;-5.000000;, + 3.500000;-2.500000;-5.000000;, + 3.500000;-2.500000;-8.000000;, + 0.500000;-2.500000;-8.000000;, + 3.500000;-2.500000;-5.000000;, + 3.500000;-5.500000;-5.000000;, + 3.500000;-5.500000;-8.000000;, + 3.500000;-2.500000;-8.000000;, + 3.500000;-5.500000;-8.000000;, + 0.500000;-5.500000;-8.000000;, + 0.500000;-2.500000;-8.000000;, + 3.500000;-2.500000;-8.000000;, + 3.500000;-2.500000;-5.000000;, + 0.500000;-2.500000;-5.000000;, + 0.500000;-5.500000;-5.000000;, + 3.500000;-5.500000;-5.000000;, + -0.500000;-5.500000;-5.000000;, + -3.500000;-5.500000;-5.000000;, + -3.500000;-5.500000;-8.000000;, + -0.500000;-5.500000;-8.000000;, + 3.000000;-5.000000;-10.000000;, + 1.000000;-5.000000;-10.000000;, + 1.000000;-3.000000;-10.000000;, + 3.000000;-3.000000;-10.000000;, + 3.000000;-3.000000;-8.000000;, + 3.000000;-5.000000;-8.000000;, + 3.000000;-5.000000;-10.000000;, + 3.000000;-3.000000;-10.000000;, + 1.000000;-3.000000;-8.000000;, + 3.000000;-3.000000;-8.000000;, + 3.000000;-3.000000;-10.000000;, + 1.000000;-3.000000;-10.000000;, + 1.000000;-5.000000;-8.000000;, + 1.000000;-3.000000;-8.000000;, + 1.000000;-3.000000;-10.000000;, + 1.000000;-5.000000;-10.000000;, + 3.000000;-5.000000;-8.000000;, + 1.000000;-5.000000;-8.000000;, + 1.000000;-5.000000;-10.000000;, + 3.000000;-5.000000;-10.000000;, + -3.500000;-5.500000;-5.000000;, + -3.500000;-2.500000;-5.000000;, + -3.500000;-2.500000;-8.000000;, + -3.500000;-5.500000;-8.000000;, + -3.500000;-2.500000;-5.000000;, + -0.500000;-2.500000;-5.000000;, + -0.500000;-2.500000;-8.000000;, + -3.500000;-2.500000;-8.000000;, + -0.500000;-2.500000;-5.000000;, + -0.500000;-5.500000;-5.000000;, + -0.500000;-5.500000;-8.000000;, + -0.500000;-2.500000;-8.000000;, + -0.500000;-5.500000;-8.000000;, + -3.500000;-5.500000;-8.000000;, + -3.500000;-2.500000;-8.000000;, + -0.500000;-2.500000;-8.000000;, + -0.500000;-2.500000;-5.000000;, + -3.500000;-2.500000;-5.000000;, + -3.500000;-5.500000;-5.000000;, + -0.500000;-5.500000;-5.000000;, + -1.000000;-5.000000;-10.000000;, + -3.000000;-5.000000;-10.000000;, + -3.000000;-3.000000;-10.000000;, + -1.000000;-3.000000;-10.000000;, + -1.000000;-3.000000;-8.000000;, + -1.000000;-5.000000;-8.000000;, + -1.000000;-5.000000;-10.000000;, + -1.000000;-3.000000;-10.000000;, + -3.000000;-3.000000;-8.000000;, + -1.000000;-3.000000;-8.000000;, + -1.000000;-3.000000;-10.000000;, + -3.000000;-3.000000;-10.000000;, + -3.000000;-5.000000;-8.000000;, + -3.000000;-3.000000;-8.000000;, + -3.000000;-3.000000;-10.000000;, + -3.000000;-5.000000;-10.000000;, + -1.000000;-5.000000;-8.000000;, + -3.000000;-5.000000;-8.000000;, + -3.000000;-5.000000;-10.000000;, + -1.000000;-5.000000;-10.000000;, + 3.500000; 2.500000;-5.000000;, + 0.500000; 2.500000;-5.000000;, + 0.500000; 2.500000;-8.000000;, + 3.500000; 2.500000;-8.000000;, + 0.500000; 2.500000;-5.000000;, + 0.500000; 5.500000;-5.000000;, + 0.500000; 5.500000;-8.000000;, + 0.500000; 2.500000;-8.000000;, + 0.500000; 5.500000;-5.000000;, + 3.500000; 5.500000;-5.000000;, + 3.500000; 5.500000;-8.000000;, + 0.500000; 5.500000;-8.000000;, + 3.500000; 5.500000;-5.000000;, + 3.500000; 2.500000;-5.000000;, + 3.500000; 2.500000;-8.000000;, + 3.500000; 5.500000;-8.000000;, + 3.500000; 2.500000;-8.000000;, + 0.500000; 2.500000;-8.000000;, + 0.500000; 5.500000;-8.000000;, + 3.500000; 5.500000;-8.000000;, + 3.500000; 5.500000;-5.000000;, + 0.500000; 5.500000;-5.000000;, + 0.500000; 2.500000;-5.000000;, + 3.500000; 2.500000;-5.000000;, + -0.500000; 2.500000;-5.000000;, + -3.500000; 2.500000;-5.000000;, + -3.500000; 2.500000;-8.000000;, + -0.500000; 2.500000;-8.000000;, + 3.000000; 3.000000;-10.000000;, + 1.000000; 3.000000;-10.000000;, + 1.000000; 5.000000;-10.000000;, + 3.000000; 5.000000;-10.000000;, + 3.000000; 5.000000;-8.000000;, + 3.000000; 3.000000;-8.000000;, + 3.000000; 3.000000;-10.000000;, + 3.000000; 5.000000;-10.000000;, + 1.000000; 5.000000;-8.000000;, + 3.000000; 5.000000;-8.000000;, + 3.000000; 5.000000;-10.000000;, + 1.000000; 5.000000;-10.000000;, + 1.000000; 3.000000;-8.000000;, + 1.000000; 5.000000;-8.000000;, + 1.000000; 5.000000;-10.000000;, + 1.000000; 3.000000;-10.000000;, + 3.000000; 3.000000;-8.000000;, + 1.000000; 3.000000;-8.000000;, + 1.000000; 3.000000;-10.000000;, + 3.000000; 3.000000;-10.000000;, + -3.500000; 2.500000;-5.000000;, + -3.500000; 5.500000;-5.000000;, + -3.500000; 5.500000;-8.000000;, + -3.500000; 2.500000;-8.000000;, + -3.500000; 5.500000;-5.000000;, + -0.500000; 5.500000;-5.000000;, + -0.500000; 5.500000;-8.000000;, + -3.500000; 5.500000;-8.000000;, + -0.500000; 5.500000;-5.000000;, + -0.500000; 2.500000;-5.000000;, + -0.500000; 2.500000;-8.000000;, + -0.500000; 5.500000;-8.000000;, + -0.500000; 2.500000;-8.000000;, + -3.500000; 2.500000;-8.000000;, + -3.500000; 5.500000;-8.000000;, + -0.500000; 5.500000;-8.000000;, + -0.500000; 5.500000;-5.000000;, + -3.500000; 5.500000;-5.000000;, + -3.500000; 2.500000;-5.000000;, + -0.500000; 2.500000;-5.000000;, + -1.000000; 3.000000;-10.000000;, + -3.000000; 3.000000;-10.000000;, + -3.000000; 5.000000;-10.000000;, + -1.000000; 5.000000;-10.000000;, + -1.000000; 5.000000;-8.000000;, + -1.000000; 3.000000;-8.000000;, + -1.000000; 3.000000;-10.000000;, + -1.000000; 5.000000;-10.000000;, + -3.000000; 5.000000;-8.000000;, + -1.000000; 5.000000;-8.000000;, + -1.000000; 5.000000;-10.000000;, + -3.000000; 5.000000;-10.000000;, + -3.000000; 3.000000;-8.000000;, + -3.000000; 5.000000;-8.000000;, + -3.000000; 5.000000;-10.000000;, + -3.000000; 3.000000;-10.000000;, + -1.000000; 3.000000;-8.000000;, + -3.000000; 3.000000;-8.000000;, + -3.000000; 3.000000;-10.000000;, + -1.000000; 3.000000;-10.000000;, + 2.000000; 7.000000; 2.000000;, + -2.000000; 7.000000; 2.000000;, + -2.000000; 3.000000; 2.000000;, + 2.000000; 3.000000; 2.000000;, + 2.000000; 3.000000;-2.000000;, + -2.000000; 3.000000;-2.000000;, + -2.000000; 7.000000;-2.000000;, + 2.000000; 7.000000;-2.000000;, + 2.000000; 7.000000; 2.000000;, + 2.000000; 3.000000; 2.000000;, + 2.000000; 3.000000;-2.000000;, + 2.000000; 7.000000;-2.000000;, + -2.000000; 7.000000; 2.000000;, + 2.000000; 7.000000; 2.000000;, + 2.000000; 7.000000;-2.000000;, + -2.000000; 7.000000;-2.000000;, + -2.000000; 3.000000; 2.000000;, + -2.000000; 7.000000; 2.000000;, + -2.000000; 7.000000;-2.000000;, + -2.000000; 3.000000;-2.000000;, + 2.000000; 3.000000; 2.000000;, + -2.000000; 3.000000; 2.000000;, + -2.000000; 3.000000;-2.000000;, + 2.000000; 3.000000;-2.000000;; + 56; + 4;3,2,1,0;, + 4;7,6,5,4;, + 4;11,10,9,8;, + 4;15,14,13,12;, + 4;19,18,17,16;, + 4;23,22,21,20;, + 4;27,26,25,24;, + 4;31,30,29,28;, + 4;35,34,33,32;, + 4;39,38,37,36;, + 4;43,42,41,40;, + 4;47,46,45,44;, + 4;51,50,49,48;, + 4;55,54,53,52;, + 4;59,58,57,56;, + 4;63,62,61,60;, + 4;67,66,65,64;, + 4;71,70,69,68;, + 4;75,74,73,72;, + 4;79,78,77,76;, + 4;83,82,81,80;, + 4;87,86,85,84;, + 4;91,90,89,88;, + 4;95,94,93,92;, + 4;99,98,97,96;, + 4;103,102,101,100;, + 4;107,106,105,104;, + 4;111,110,109,108;, + 4;115,114,113,112;, + 4;119,118,117,116;, + 4;123,122,121,120;, + 4;127,126,125,124;, + 4;131,130,129,128;, + 4;135,134,133,132;, + 4;139,138,137,136;, + 4;143,142,141,140;, + 4;147,146,145,144;, + 4;151,150,149,148;, + 4;155,154,153,152;, + 4;159,158,157,156;, + 4;163,162,161,160;, + 4;167,166,165,164;, + 4;171,170,169,168;, + 4;175,174,173,172;, + 4;179,178,177,176;, + 4;183,182,181,180;, + 4;187,186,185,184;, + 4;191,190,189,188;, + 4;195,194,193,192;, + 4;199,198,197,196;, + 4;203,202,201,200;, + 4;207,206,205,204;, + 4;211,210,209,208;, + 4;215,214,213,212;, + 4;219,218,217,216;, + 4;223,222,221,220;; + MeshNormals { // mob normals + 56; + 0.000000;-1.000000; 0.000000;, + -1.000000;-0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + -0.000000; 1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000;-0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;; + 56; + 4;0,0,0,0;, + 4;1,1,1,1;, + 4;2,2,2,2;, + 4;3,3,3,3;, + 4;4,4,4,4;, + 4;5,5,5,5;, + 4;6,6,6,6;, + 4;7,7,7,7;, + 4;8,8,8,8;, + 4;9,9,9,9;, + 4;10,10,10,10;, + 4;11,11,11,11;, + 4;12,12,12,12;, + 4;13,13,13,13;, + 4;14,14,14,14;, + 4;15,15,15,15;, + 4;16,16,16,16;, + 4;17,17,17,17;, + 4;18,18,18,18;, + 4;19,19,19,19;, + 4;20,20,20,20;, + 4;21,21,21,21;, + 4;22,22,22,22;, + 4;23,23,23,23;, + 4;24,24,24,24;, + 4;25,25,25,25;, + 4;26,26,26,26;, + 4;27,27,27,27;, + 4;28,28,28,28;, + 4;29,29,29,29;, + 4;30,30,30,30;, + 4;31,31,31,31;, + 4;32,32,32,32;, + 4;33,33,33,33;, + 4;34,34,34,34;, + 4;35,35,35,35;, + 4;36,36,36,36;, + 4;37,37,37,37;, + 4;38,38,38,38;, + 4;39,39,39,39;, + 4;40,40,40,40;, + 4;41,41,41,41;, + 4;42,42,42,42;, + 4;43,43,43,43;, + 4;44,44,44,44;, + 4;45,45,45,45;, + 4;46,46,46,46;, + 4;47,47,47,47;, + 4;48,48,48,48;, + 4;49,49,49,49;, + 4;50,50,50,50;, + 4;51,51,51,51;, + 4;52,52,52,52;, + 4;53,53,53,53;, + 4;54,54,54,54;, + 4;55,55,55,55;; + } // End of mob normals + MeshTextureCoords { // mob UV coordinates + 224; + 1.000000; 0.500000;, + 0.750000; 0.500000;, + 0.750000; 1.000000;, + 1.000000; 1.000000;, + 0.125000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 1.000000;, + 0.125000; 1.000000;, + 0.750000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 1.000000;, + 0.750000; 1.000000;, + 0.500000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 1.000000;, + 0.500000; 1.000000;, + 0.125000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 0.000000;, + 0.125000; 0.000000;, + 0.125000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 0.000000;, + 0.125000; 0.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.500000; 0.250000;, + 0.625000; 0.250000;, + 0.625000; 0.000000;, + 0.500000; 0.000000;, + 0.875000; 0.500000;, + 1.000000; 0.500000;, + 1.000000; 0.250000;, + 0.875000; 0.250000;, + 0.875000; 0.000000;, + 0.750000; 0.000000;, + 0.750000; 0.250000;, + 0.875000; 0.250000;, + 0.875000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 0.250000;, + 0.875000; 0.250000;, + 0.750000; 0.000000;, + 0.875000; 0.000000;, + 0.875000; 0.250000;, + 0.750000; 0.250000;, + 0.625000; 0.250000;, + 0.750000; 0.250000;, + 0.750000; 0.000000;, + 0.625000; 0.000000;; + } // End of mob UV coordinates + XSkinMeshHeader { + 1; + 3; + 6; + } + SkinWeights { + "mob_armature_head"; + 24; + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.100000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.500000, 0.000000, 1.000000;; + } // End of mob_armature_head skin weights + SkinWeights { + "mob_armature_body"; + 24; + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-0.100000, 0.000000, + 0.000000, 0.100000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } // End of mob_armature_body skin weights + SkinWeights { + "mob_armature_fr_leg"; + 44; + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + -0.200000,-0.500000,-0.400000, 1.000000;; + } // End of mob_armature_fr_leg skin weights + SkinWeights { + "mob_armature_rl_leg"; + 44; + 48, + 49, + 50, + 51, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + 0.200000,-0.500000, 0.400000, 1.000000;; + } // End of mob_armature_rl_leg skin weights + SkinWeights { + "mob_armature_fl_leg"; + 44; + 136, + 137, + 138, + 139, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + 0.200000,-0.500000,-0.400000, 1.000000;; + } // End of mob_armature_fl_leg skin weights + SkinWeights { + "mob_armature_rr_leg"; + 44; + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + -0.200000,-0.500000, 0.400000, 1.000000;; + } // End of mob_armature_rr_leg skin weights + } // End of mob mesh + } // End of mob + } // End of mob_armature +} // End of Root +AnimationSet Global { + Animation { + {mob} + AnimationKey { // Rotation + 0; + 81; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 0.100000, 0.100000, 0.100000;;, + 1;3; 0.100000, 0.100000, 0.100000;;, + 2;3; 0.100000, 0.100000, 0.100000;;, + 3;3; 0.100000, 0.100000, 0.100000;;, + 4;3; 0.100000, 0.100000, 0.100000;;, + 5;3; 0.100000, 0.100000, 0.100000;;, + 6;3; 0.100000, 0.100000, 0.100000;;, + 7;3; 0.100000, 0.100000, 0.100000;;, + 8;3; 0.100000, 0.100000, 0.100000;;, + 9;3; 0.100000, 0.100000, 0.100000;;, + 10;3; 0.100000, 0.100000, 0.100000;;, + 11;3; 0.100000, 0.100000, 0.100000;;, + 12;3; 0.100000, 0.100000, 0.100000;;, + 13;3; 0.100000, 0.100000, 0.100000;;, + 14;3; 0.100000, 0.100000, 0.100000;;, + 15;3; 0.100000, 0.100000, 0.100000;;, + 16;3; 0.100000, 0.100000, 0.100000;;, + 17;3; 0.100000, 0.100000, 0.100000;;, + 18;3; 0.100000, 0.100000, 0.100000;;, + 19;3; 0.100000, 0.100000, 0.100000;;, + 20;3; 0.100000, 0.100000, 0.100000;;, + 21;3; 0.100000, 0.100000, 0.100000;;, + 22;3; 0.100000, 0.100000, 0.100000;;, + 23;3; 0.100000, 0.100000, 0.100000;;, + 24;3; 0.100000, 0.100000, 0.100000;;, + 25;3; 0.100000, 0.100000, 0.100000;;, + 26;3; 0.100000, 0.100000, 0.100000;;, + 27;3; 0.100000, 0.100000, 0.100000;;, + 28;3; 0.100000, 0.100000, 0.100000;;, + 29;3; 0.100000, 0.100000, 0.100000;;, + 30;3; 0.100000, 0.100000, 0.100000;;, + 31;3; 0.100000, 0.100000, 0.100000;;, + 32;3; 0.100000, 0.100000, 0.100000;;, + 33;3; 0.100000, 0.100000, 0.100000;;, + 34;3; 0.100000, 0.100000, 0.100000;;, + 35;3; 0.100000, 0.100000, 0.100000;;, + 36;3; 0.100000, 0.100000, 0.100000;;, + 37;3; 0.100000, 0.100000, 0.100000;;, + 38;3; 0.100000, 0.100000, 0.100000;;, + 39;3; 0.100000, 0.100000, 0.100000;;, + 40;3; 0.100000, 0.100000, 0.100000;;, + 41;3; 0.100000, 0.100000, 0.100000;;, + 42;3; 0.100000, 0.100000, 0.100000;;, + 43;3; 0.100000, 0.100000, 0.100000;;, + 44;3; 0.100000, 0.100000, 0.100000;;, + 45;3; 0.100000, 0.100000, 0.100000;;, + 46;3; 0.100000, 0.100000, 0.100000;;, + 47;3; 0.100000, 0.100000, 0.100000;;, + 48;3; 0.100000, 0.100000, 0.100000;;, + 49;3; 0.100000, 0.100000, 0.100000;;, + 50;3; 0.100000, 0.100000, 0.100000;;, + 51;3; 0.100000, 0.100000, 0.100000;;, + 52;3; 0.100000, 0.100000, 0.100000;;, + 53;3; 0.100000, 0.100000, 0.100000;;, + 54;3; 0.100000, 0.100000, 0.100000;;, + 55;3; 0.100000, 0.100000, 0.100000;;, + 56;3; 0.100000, 0.100000, 0.100000;;, + 57;3; 0.100000, 0.100000, 0.100000;;, + 58;3; 0.100000, 0.100000, 0.100000;;, + 59;3; 0.100000, 0.100000, 0.100000;;, + 60;3; 0.100000, 0.100000, 0.100000;;, + 61;3; 0.100000, 0.100000, 0.100000;;, + 62;3; 0.100000, 0.100000, 0.100000;;, + 63;3; 0.100000, 0.100000, 0.100000;;, + 64;3; 0.100000, 0.100000, 0.100000;;, + 65;3; 0.100000, 0.100000, 0.100000;;, + 66;3; 0.100000, 0.100000, 0.100000;;, + 67;3; 0.100000, 0.100000, 0.100000;;, + 68;3; 0.100000, 0.100000, 0.100000;;, + 69;3; 0.100000, 0.100000, 0.100000;;, + 70;3; 0.100000, 0.100000, 0.100000;;, + 71;3; 0.100000, 0.100000, 0.100000;;, + 72;3; 0.100000, 0.100000, 0.100000;;, + 73;3; 0.100000, 0.100000, 0.100000;;, + 74;3; 0.100000, 0.100000, 0.100000;;, + 75;3; 0.100000, 0.100000, 0.100000;;, + 76;3; 0.100000, 0.100000, 0.100000;;, + 77;3; 0.100000, 0.100000, 0.100000;;, + 78;3; 0.100000, 0.100000, 0.100000;;, + 79;3; 0.100000, 0.100000, 0.100000;;, + 80;3; 0.100000, 0.100000, 0.100000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature} + AnimationKey { // Rotation + 0; + 81; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3;10.000000,10.000000,10.000000;;, + 1;3;10.000000,10.000000,10.000000;;, + 2;3;10.000000,10.000000,10.000000;;, + 3;3;10.000000,10.000000,10.000000;;, + 4;3;10.000000,10.000000,10.000000;;, + 5;3;10.000000,10.000000,10.000000;;, + 6;3;10.000000,10.000000,10.000000;;, + 7;3;10.000000,10.000000,10.000000;;, + 8;3;10.000000,10.000000,10.000000;;, + 9;3;10.000000,10.000000,10.000000;;, + 10;3;10.000000,10.000000,10.000000;;, + 11;3;10.000000,10.000000,10.000000;;, + 12;3;10.000000,10.000000,10.000000;;, + 13;3;10.000000,10.000000,10.000000;;, + 14;3;10.000000,10.000000,10.000000;;, + 15;3;10.000000,10.000000,10.000000;;, + 16;3;10.000000,10.000000,10.000000;;, + 17;3;10.000000,10.000000,10.000000;;, + 18;3;10.000000,10.000000,10.000000;;, + 19;3;10.000000,10.000000,10.000000;;, + 20;3;10.000000,10.000000,10.000000;;, + 21;3;10.000000,10.000000,10.000000;;, + 22;3;10.000000,10.000000,10.000000;;, + 23;3;10.000000,10.000000,10.000000;;, + 24;3;10.000000,10.000000,10.000000;;, + 25;3;10.000000,10.000000,10.000000;;, + 26;3;10.000000,10.000000,10.000000;;, + 27;3;10.000000,10.000000,10.000000;;, + 28;3;10.000000,10.000000,10.000000;;, + 29;3;10.000000,10.000000,10.000000;;, + 30;3;10.000000,10.000000,10.000000;;, + 31;3;10.000000,10.000000,10.000000;;, + 32;3;10.000000,10.000000,10.000000;;, + 33;3;10.000000,10.000000,10.000000;;, + 34;3;10.000000,10.000000,10.000000;;, + 35;3;10.000000,10.000000,10.000000;;, + 36;3;10.000000,10.000000,10.000000;;, + 37;3;10.000000,10.000000,10.000000;;, + 38;3;10.000000,10.000000,10.000000;;, + 39;3;10.000000,10.000000,10.000000;;, + 40;3;10.000000,10.000000,10.000000;;, + 41;3;10.000000,10.000000,10.000000;;, + 42;3;10.000000,10.000000,10.000000;;, + 43;3;10.000000,10.000000,10.000000;;, + 44;3;10.000000,10.000000,10.000000;;, + 45;3;10.000000,10.000000,10.000000;;, + 46;3;10.000000,10.000000,10.000000;;, + 47;3;10.000000,10.000000,10.000000;;, + 48;3;10.000000,10.000000,10.000000;;, + 49;3;10.000000,10.000000,10.000000;;, + 50;3;10.000000,10.000000,10.000000;;, + 51;3;10.000000,10.000000,10.000000;;, + 52;3;10.000000,10.000000,10.000000;;, + 53;3;10.000000,10.000000,10.000000;;, + 54;3;10.000000,10.000000,10.000000;;, + 55;3;10.000000,10.000000,10.000000;;, + 56;3;10.000000,10.000000,10.000000;;, + 57;3;10.000000,10.000000,10.000000;;, + 58;3;10.000000,10.000000,10.000000;;, + 59;3;10.000000,10.000000,10.000000;;, + 60;3;10.000000,10.000000,10.000000;;, + 61;3;10.000000,10.000000,10.000000;;, + 62;3;10.000000,10.000000,10.000000;;, + 63;3;10.000000,10.000000,10.000000;;, + 64;3;10.000000,10.000000,10.000000;;, + 65;3;10.000000,10.000000,10.000000;;, + 66;3;10.000000,10.000000,10.000000;;, + 67;3;10.000000,10.000000,10.000000;;, + 68;3;10.000000,10.000000,10.000000;;, + 69;3;10.000000,10.000000,10.000000;;, + 70;3;10.000000,10.000000,10.000000;;, + 71;3;10.000000,10.000000,10.000000;;, + 72;3;10.000000,10.000000,10.000000;;, + 73;3;10.000000,10.000000,10.000000;;, + 74;3;10.000000,10.000000,10.000000;;, + 75;3;10.000000,10.000000,10.000000;;, + 76;3;10.000000,10.000000,10.000000;;, + 77;3;10.000000,10.000000,10.000000;;, + 78;3;10.000000,10.000000,10.000000;;, + 79;3;10.000000,10.000000,10.000000;;, + 80;3;10.000000,10.000000,10.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature_body} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 62;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 63;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 64;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 65;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 66;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 67;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 68;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 69;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 70;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 71;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 72;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 73;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 74;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 75;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 76;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 77;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 78;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 79;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 80;4;-0.707107, 0.707107, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature_head} + AnimationKey { // Rotation + 0; + 81; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-0.999663,-0.003850,-0.000000, 0.000000;;, + 12;4;-0.998650,-0.015436,-0.000000, 0.000000;;, + 13;4;-0.997001,-0.034274,-0.000000, 0.000000;;, + 14;4;-0.994846,-0.058913,-0.000000, 0.000000;;, + 15;4;-0.992404,-0.086825,-0.000000, 0.000000;;, + 16;4;-0.989962,-0.114736,-0.000000, 0.000000;;, + 17;4;-0.987806,-0.139375,-0.000000, 0.000000;;, + 18;4;-0.986158,-0.158212,-0.000000, 0.000000;;, + 19;4;-0.985145,-0.169798,-0.000000, 0.000000;;, + 20;4;-0.984808,-0.173648,-0.000000, 0.000000;;, + 21;4;-0.984907,-0.173618,-0.000000, 0.000000;;, + 22;4;-0.985214,-0.173381,-0.000000, 0.000000;;, + 23;4;-0.985730,-0.172650,-0.000000, 0.000000;;, + 24;4;-0.986438,-0.171068,-0.000000, 0.000000;;, + 25;4;-0.987293,-0.168258,-0.000000, 0.000000;;, + 26;4;-0.988226,-0.163915,-0.000000, 0.000000;;, + 27;4;-0.989163,-0.157887,-0.000000, 0.000000;;, + 28;4;-0.990038,-0.150198,-0.000000, 0.000000;;, + 29;4;-0.990807,-0.141005,-0.000000, 0.000000;;, + 30;4;-0.991445,-0.130526,-0.000000, 0.000000;;, + 31;4;-0.992041,-0.116177,-0.000000, 0.000000;;, + 32;4;-0.992683,-0.095337,-0.000000, 0.000000;;, + 33;4;-0.993354,-0.068711,-0.000000, 0.000000;;, + 34;4;-0.994023,-0.037915,-0.000000, 0.000000;;, + 35;4;-0.994653,-0.005514,-0.000000, 0.000000;;, + 36;4;-0.995204, 0.025354,-0.000000, 0.000000;;, + 37;4;-0.995644, 0.051703,-0.000000, 0.000000;;, + 38;4;-0.995956, 0.071371,-0.000000, 0.000000;;, + 39;4;-0.996137, 0.083256, 0.000000, 0.000000;;, + 40;4;-0.996195, 0.087156, 0.000000, 0.000000;;, + 41;4;-0.995858, 0.087126, 0.007718, 0.000675;;, + 42;4;-0.994909, 0.087043, 0.029456, 0.002577;;, + 43;4;-0.993690, 0.086937, 0.057368, 0.005019;;, + 44;4;-0.992741, 0.086854, 0.079106, 0.006921;;, + 45;4;-0.992404, 0.086824, 0.086824, 0.007596;;, + 46;4;-0.992404, 0.086824, 0.071388, 0.006246;;, + 47;4;-0.992404, 0.086824, 0.027911, 0.002442;;, + 48;4;-0.992404, 0.086824,-0.027911,-0.002442;;, + 49;4;-0.992404, 0.086824,-0.071388,-0.006246;;, + 50;4;-0.992404, 0.086824,-0.086824,-0.007596;;, + 51;4;-0.992618, 0.086854,-0.079106,-0.006921;;, + 52;4;-0.993276, 0.086937,-0.057368,-0.005019;;, + 53;4;-0.994264, 0.087043,-0.029456,-0.002577;;, + 54;4;-0.995313, 0.087126,-0.007718,-0.000675;;, + 55;4;-0.996195, 0.087156, 0.000000,-0.000000;;, + 56;4;-0.997078, 0.079408, 0.000000,-0.000000;;, + 57;4;-0.998131, 0.057587, 0.000000,-0.000000;;, + 58;4;-0.999123, 0.029569, 0.000000,-0.000000;;, + 59;4;-0.999784, 0.007747, 0.000000,-0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-0.999915, 0.000000, 0.003877, 0.000000;;, + 63;4;-0.999677, 0.000000, 0.014798, 0.000000;;, + 64;4;-0.999371, 0.000000, 0.028821, 0.000000;;, + 65;4;-0.999133, 0.000000, 0.039742, 0.000000;;, + 66;4;-0.999048, 0.000000, 0.043619, 0.000000;;, + 67;4;-0.999048, 0.000000, 0.035865, 0.000000;;, + 68;4;-0.999048, 0.000000, 0.014023, 0.000000;;, + 69;4;-0.999048, 0.000000,-0.014023, 0.000000;;, + 70;4;-0.999048, 0.000000,-0.035865, 0.000000;;, + 71;4;-0.999048, 0.000000,-0.043619, 0.000000;;, + 72;4;-0.999133, 0.000000,-0.039742, 0.000000;;, + 73;4;-0.999371, 0.000000,-0.028821, 0.000000;;, + 74;4;-0.999677, 0.000000,-0.014799, 0.000000;;, + 75;4;-0.999915, 0.000000,-0.003877, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.500000, 0.000000;;, + 1;3; 0.000000, 0.500000, 0.000000;;, + 2;3; 0.000000, 0.500000, 0.000000;;, + 3;3; 0.000000, 0.500000, 0.000000;;, + 4;3; 0.000000, 0.500000, 0.000000;;, + 5;3; 0.000000, 0.500000, 0.000000;;, + 6;3; 0.000000, 0.500000, 0.000000;;, + 7;3; 0.000000, 0.500000, 0.000000;;, + 8;3; 0.000000, 0.500000, 0.000000;;, + 9;3; 0.000000, 0.500000, 0.000000;;, + 10;3; 0.000000, 0.500000, 0.000000;;, + 11;3; 0.000000, 0.500000, 0.000000;;, + 12;3; 0.000000, 0.500000, 0.000000;;, + 13;3; 0.000000, 0.500000, 0.000000;;, + 14;3; 0.000000, 0.500000, 0.000000;;, + 15;3; 0.000000, 0.500000, 0.000000;;, + 16;3; 0.000000, 0.500000, 0.000000;;, + 17;3; 0.000000, 0.500000, 0.000000;;, + 18;3; 0.000000, 0.500000, 0.000000;;, + 19;3; 0.000000, 0.500000, 0.000000;;, + 20;3; 0.000000, 0.500000, 0.000000;;, + 21;3; 0.000000, 0.500000, 0.000000;;, + 22;3; 0.000000, 0.500000, 0.000000;;, + 23;3; 0.000000, 0.500000, 0.000000;;, + 24;3; 0.000000, 0.500000, 0.000000;;, + 25;3; 0.000000, 0.500000, 0.000000;;, + 26;3; 0.000000, 0.500000, 0.000000;;, + 27;3; 0.000000, 0.500000, 0.000000;;, + 28;3; 0.000000, 0.500000, 0.000000;;, + 29;3; 0.000000, 0.500000, 0.000000;;, + 30;3; 0.000000, 0.500000, 0.000000;;, + 31;3; 0.000000, 0.500000, 0.000000;;, + 32;3; 0.000000, 0.500000, 0.000000;;, + 33;3; 0.000000, 0.500000, 0.000000;;, + 34;3; 0.000000, 0.500000, 0.000000;;, + 35;3; 0.000000, 0.500000, 0.000000;;, + 36;3; 0.000000, 0.500000, 0.000000;;, + 37;3; 0.000000, 0.500000, 0.000000;;, + 38;3; 0.000000, 0.500000, 0.000000;;, + 39;3; 0.000000, 0.500000, 0.000000;;, + 40;3; 0.000000, 0.500000, 0.000000;;, + 41;3; 0.000000, 0.500000, 0.000000;;, + 42;3; 0.000000, 0.500000, 0.000000;;, + 43;3; 0.000000, 0.500000, 0.000000;;, + 44;3; 0.000000, 0.500000, 0.000000;;, + 45;3; 0.000000, 0.500000, 0.000000;;, + 46;3; 0.000000, 0.500000, 0.000000;;, + 47;3; 0.000000, 0.500000, 0.000000;;, + 48;3; 0.000000, 0.500000, 0.000000;;, + 49;3; 0.000000, 0.500000, 0.000000;;, + 50;3; 0.000000, 0.500000, 0.000000;;, + 51;3; 0.000000, 0.500000, 0.000000;;, + 52;3; 0.000000, 0.500000, 0.000000;;, + 53;3; 0.000000, 0.500000, 0.000000;;, + 54;3; 0.000000, 0.500000, 0.000000;;, + 55;3; 0.000000, 0.500000, 0.000000;;, + 56;3; 0.000000, 0.500000, 0.000000;;, + 57;3; 0.000000, 0.500000, 0.000000;;, + 58;3; 0.000000, 0.500000, 0.000000;;, + 59;3; 0.000000, 0.500000, 0.000000;;, + 60;3; 0.000000, 0.500000, 0.000000;;, + 61;3; 0.000000, 0.500000, 0.000000;;, + 62;3; 0.000000, 0.500000, 0.000000;;, + 63;3; 0.000000, 0.500000, 0.000000;;, + 64;3; 0.000000, 0.500000, 0.000000;;, + 65;3; 0.000000, 0.500000, 0.000000;;, + 66;3; 0.000000, 0.500000, 0.000000;;, + 67;3; 0.000000, 0.500000, 0.000000;;, + 68;3; 0.000000, 0.500000, 0.000000;;, + 69;3; 0.000000, 0.500000, 0.000000;;, + 70;3; 0.000000, 0.500000, 0.000000;;, + 71;3; 0.000000, 0.500000, 0.000000;;, + 72;3; 0.000000, 0.500000, 0.000000;;, + 73;3; 0.000000, 0.500000, 0.000000;;, + 74;3; 0.000000, 0.500000, 0.000000;;, + 75;3; 0.000000, 0.500000, 0.000000;;, + 76;3; 0.000000, 0.500000, 0.000000;;, + 77;3; 0.000000, 0.500000, 0.000000;;, + 78;3; 0.000000, 0.500000, 0.000000;;, + 79;3; 0.000000, 0.500000, 0.000000;;, + 80;3; 0.000000, 0.500000, 0.000000;;; + } + } + Animation { + {mob_armature_fl_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.701389,-0.712346, 0.000000, 0.000000;;, + 63;4;-0.685285,-0.727103, 0.000000, 0.000000;;, + 64;4;-0.664608,-0.746050, 0.000000, 0.000000;;, + 65;4;-0.648505,-0.760806, 0.000000, 0.000000;;, + 66;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 67;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 68;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 69;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 70;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 73;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 74;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 75;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 76;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 77;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 78;4;-0.755089,-0.653743, 0.000000, 0.000000;;, + 79;4;-0.741719,-0.667113, 0.000000, 0.000000;;, + 80;4;-0.724231,-0.684601, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3;-0.200000, 0.400000,-0.500000;;, + 1;3;-0.200000, 0.400000,-0.500000;;, + 2;3;-0.200000, 0.400000,-0.500000;;, + 3;3;-0.200000, 0.400000,-0.500000;;, + 4;3;-0.200000, 0.400000,-0.500000;;, + 5;3;-0.200000, 0.400000,-0.500000;;, + 6;3;-0.200000, 0.400000,-0.500000;;, + 7;3;-0.200000, 0.400000,-0.500000;;, + 8;3;-0.200000, 0.400000,-0.500000;;, + 9;3;-0.200000, 0.400000,-0.500000;;, + 10;3;-0.200000, 0.400000,-0.500000;;, + 11;3;-0.200000, 0.400000,-0.500000;;, + 12;3;-0.200000, 0.400000,-0.500000;;, + 13;3;-0.200000, 0.400000,-0.500000;;, + 14;3;-0.200000, 0.400000,-0.500000;;, + 15;3;-0.200000, 0.400000,-0.500000;;, + 16;3;-0.200000, 0.400000,-0.500000;;, + 17;3;-0.200000, 0.400000,-0.500000;;, + 18;3;-0.200000, 0.400000,-0.500000;;, + 19;3;-0.200000, 0.400000,-0.500000;;, + 20;3;-0.200000, 0.400000,-0.500000;;, + 21;3;-0.200000, 0.400000,-0.500000;;, + 22;3;-0.200000, 0.400000,-0.500000;;, + 23;3;-0.200000, 0.400000,-0.500000;;, + 24;3;-0.200000, 0.400000,-0.500000;;, + 25;3;-0.200000, 0.400000,-0.500000;;, + 26;3;-0.200000, 0.400000,-0.500000;;, + 27;3;-0.200000, 0.400000,-0.500000;;, + 28;3;-0.200000, 0.400000,-0.500000;;, + 29;3;-0.200000, 0.400000,-0.500000;;, + 30;3;-0.200000, 0.400000,-0.500000;;, + 31;3;-0.200000, 0.400000,-0.500000;;, + 32;3;-0.200000, 0.400000,-0.500000;;, + 33;3;-0.200000, 0.400000,-0.500000;;, + 34;3;-0.200000, 0.400000,-0.500000;;, + 35;3;-0.200000, 0.400000,-0.500000;;, + 36;3;-0.200000, 0.400000,-0.500000;;, + 37;3;-0.200000, 0.400000,-0.500000;;, + 38;3;-0.200000, 0.400000,-0.500000;;, + 39;3;-0.200000, 0.400000,-0.500000;;, + 40;3;-0.200000, 0.400000,-0.500000;;, + 41;3;-0.200000, 0.400000,-0.500000;;, + 42;3;-0.200000, 0.400000,-0.500000;;, + 43;3;-0.200000, 0.400000,-0.500000;;, + 44;3;-0.200000, 0.400000,-0.500000;;, + 45;3;-0.200000, 0.400000,-0.500000;;, + 46;3;-0.200000, 0.400000,-0.500000;;, + 47;3;-0.200000, 0.400000,-0.500000;;, + 48;3;-0.200000, 0.400000,-0.500000;;, + 49;3;-0.200000, 0.400000,-0.500000;;, + 50;3;-0.200000, 0.400000,-0.500000;;, + 51;3;-0.200000, 0.400000,-0.500000;;, + 52;3;-0.200000, 0.400000,-0.500000;;, + 53;3;-0.200000, 0.400000,-0.500000;;, + 54;3;-0.200000, 0.400000,-0.500000;;, + 55;3;-0.200000, 0.400000,-0.500000;;, + 56;3;-0.200000, 0.400000,-0.500000;;, + 57;3;-0.200000, 0.400000,-0.500000;;, + 58;3;-0.200000, 0.400000,-0.500000;;, + 59;3;-0.200000, 0.400000,-0.500000;;, + 60;3;-0.200000, 0.400000,-0.500000;;, + 61;3;-0.200000, 0.400000,-0.500000;;, + 62;3;-0.200000, 0.400000,-0.500000;;, + 63;3;-0.200000, 0.400000,-0.500000;;, + 64;3;-0.200000, 0.400000,-0.500000;;, + 65;3;-0.200000, 0.400000,-0.500000;;, + 66;3;-0.200000, 0.400000,-0.500000;;, + 67;3;-0.200000, 0.400000,-0.500000;;, + 68;3;-0.200000, 0.400000,-0.500000;;, + 69;3;-0.200000, 0.400000,-0.500000;;, + 70;3;-0.200000, 0.400000,-0.500000;;, + 71;3;-0.200000, 0.400000,-0.500000;;, + 72;3;-0.200000, 0.400000,-0.500000;;, + 73;3;-0.200000, 0.400000,-0.500000;;, + 74;3;-0.200000, 0.400000,-0.500000;;, + 75;3;-0.200000, 0.400000,-0.500000;;, + 76;3;-0.200000, 0.400000,-0.500000;;, + 77;3;-0.200000, 0.400000,-0.500000;;, + 78;3;-0.200000, 0.400000,-0.500000;;, + 79;3;-0.200000, 0.400000,-0.500000;;, + 80;3;-0.200000, 0.400000,-0.500000;;; + } + } + Animation { + {mob_armature_fr_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.712346,-0.701389, 0.000000, 0.000000;;, + 63;4;-0.727103,-0.685285, 0.000000, 0.000000;;, + 64;4;-0.746050,-0.664608, 0.000000, 0.000000;;, + 65;4;-0.760806,-0.648505, 0.000000, 0.000000;;, + 66;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 67;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 68;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 69;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 70;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 73;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 74;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 75;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 76;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 77;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 78;4;-0.653743,-0.755089, 0.000000, 0.000000;;, + 79;4;-0.667113,-0.741719, 0.000000, 0.000000;;, + 80;4;-0.684601,-0.724231, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.200000, 0.400000,-0.500000;;, + 1;3; 0.200000, 0.400000,-0.500000;;, + 2;3; 0.200000, 0.400000,-0.500000;;, + 3;3; 0.200000, 0.400000,-0.500000;;, + 4;3; 0.200000, 0.400000,-0.500000;;, + 5;3; 0.200000, 0.400000,-0.500000;;, + 6;3; 0.200000, 0.400000,-0.500000;;, + 7;3; 0.200000, 0.400000,-0.500000;;, + 8;3; 0.200000, 0.400000,-0.500000;;, + 9;3; 0.200000, 0.400000,-0.500000;;, + 10;3; 0.200000, 0.400000,-0.500000;;, + 11;3; 0.200000, 0.400000,-0.500000;;, + 12;3; 0.200000, 0.400000,-0.500000;;, + 13;3; 0.200000, 0.400000,-0.500000;;, + 14;3; 0.200000, 0.400000,-0.500000;;, + 15;3; 0.200000, 0.400000,-0.500000;;, + 16;3; 0.200000, 0.400000,-0.500000;;, + 17;3; 0.200000, 0.400000,-0.500000;;, + 18;3; 0.200000, 0.400000,-0.500000;;, + 19;3; 0.200000, 0.400000,-0.500000;;, + 20;3; 0.200000, 0.400000,-0.500000;;, + 21;3; 0.200000, 0.400000,-0.500000;;, + 22;3; 0.200000, 0.400000,-0.500000;;, + 23;3; 0.200000, 0.400000,-0.500000;;, + 24;3; 0.200000, 0.400000,-0.500000;;, + 25;3; 0.200000, 0.400000,-0.500000;;, + 26;3; 0.200000, 0.400000,-0.500000;;, + 27;3; 0.200000, 0.400000,-0.500000;;, + 28;3; 0.200000, 0.400000,-0.500000;;, + 29;3; 0.200000, 0.400000,-0.500000;;, + 30;3; 0.200000, 0.400000,-0.500000;;, + 31;3; 0.200000, 0.400000,-0.500000;;, + 32;3; 0.200000, 0.400000,-0.500000;;, + 33;3; 0.200000, 0.400000,-0.500000;;, + 34;3; 0.200000, 0.400000,-0.500000;;, + 35;3; 0.200000, 0.400000,-0.500000;;, + 36;3; 0.200000, 0.400000,-0.500000;;, + 37;3; 0.200000, 0.400000,-0.500000;;, + 38;3; 0.200000, 0.400000,-0.500000;;, + 39;3; 0.200000, 0.400000,-0.500000;;, + 40;3; 0.200000, 0.400000,-0.500000;;, + 41;3; 0.200000, 0.400000,-0.500000;;, + 42;3; 0.200000, 0.400000,-0.500000;;, + 43;3; 0.200000, 0.400000,-0.500000;;, + 44;3; 0.200000, 0.400000,-0.500000;;, + 45;3; 0.200000, 0.400000,-0.500000;;, + 46;3; 0.200000, 0.400000,-0.500000;;, + 47;3; 0.200000, 0.400000,-0.500000;;, + 48;3; 0.200000, 0.400000,-0.500000;;, + 49;3; 0.200000, 0.400000,-0.500000;;, + 50;3; 0.200000, 0.400000,-0.500000;;, + 51;3; 0.200000, 0.400000,-0.500000;;, + 52;3; 0.200000, 0.400000,-0.500000;;, + 53;3; 0.200000, 0.400000,-0.500000;;, + 54;3; 0.200000, 0.400000,-0.500000;;, + 55;3; 0.200000, 0.400000,-0.500000;;, + 56;3; 0.200000, 0.400000,-0.500000;;, + 57;3; 0.200000, 0.400000,-0.500000;;, + 58;3; 0.200000, 0.400000,-0.500000;;, + 59;3; 0.200000, 0.400000,-0.500000;;, + 60;3; 0.200000, 0.400000,-0.500000;;, + 61;3; 0.200000, 0.400000,-0.500000;;, + 62;3; 0.200000, 0.400000,-0.500000;;, + 63;3; 0.200000, 0.400000,-0.500000;;, + 64;3; 0.200000, 0.400000,-0.500000;;, + 65;3; 0.200000, 0.400000,-0.500000;;, + 66;3; 0.200000, 0.400000,-0.500000;;, + 67;3; 0.200000, 0.400000,-0.500000;;, + 68;3; 0.200000, 0.400000,-0.500000;;, + 69;3; 0.200000, 0.400000,-0.500000;;, + 70;3; 0.200000, 0.400000,-0.500000;;, + 71;3; 0.200000, 0.400000,-0.500000;;, + 72;3; 0.200000, 0.400000,-0.500000;;, + 73;3; 0.200000, 0.400000,-0.500000;;, + 74;3; 0.200000, 0.400000,-0.500000;;, + 75;3; 0.200000, 0.400000,-0.500000;;, + 76;3; 0.200000, 0.400000,-0.500000;;, + 77;3; 0.200000, 0.400000,-0.500000;;, + 78;3; 0.200000, 0.400000,-0.500000;;, + 79;3; 0.200000, 0.400000,-0.500000;;, + 80;3; 0.200000, 0.400000,-0.500000;;; + } + } + Animation { + {mob_armature_rr_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.701389,-0.712346, 0.000000, 0.000000;;, + 63;4;-0.685285,-0.727103, 0.000000, 0.000000;;, + 64;4;-0.664608,-0.746050, 0.000000, 0.000000;;, + 65;4;-0.648505,-0.760806, 0.000000, 0.000000;;, + 66;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 67;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 68;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 69;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 70;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 73;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 74;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 75;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 76;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 77;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 78;4;-0.755089,-0.653743, 0.000000, 0.000000;;, + 79;4;-0.741719,-0.667113, 0.000000, 0.000000;;, + 80;4;-0.724231,-0.684601, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.200000,-0.400000,-0.500000;;, + 1;3; 0.200000,-0.400000,-0.500000;;, + 2;3; 0.200000,-0.400000,-0.500000;;, + 3;3; 0.200000,-0.400000,-0.500000;;, + 4;3; 0.200000,-0.400000,-0.500000;;, + 5;3; 0.200000,-0.400000,-0.500000;;, + 6;3; 0.200000,-0.400000,-0.500000;;, + 7;3; 0.200000,-0.400000,-0.500000;;, + 8;3; 0.200000,-0.400000,-0.500000;;, + 9;3; 0.200000,-0.400000,-0.500000;;, + 10;3; 0.200000,-0.400000,-0.500000;;, + 11;3; 0.200000,-0.400000,-0.500000;;, + 12;3; 0.200000,-0.400000,-0.500000;;, + 13;3; 0.200000,-0.400000,-0.500000;;, + 14;3; 0.200000,-0.400000,-0.500000;;, + 15;3; 0.200000,-0.400000,-0.500000;;, + 16;3; 0.200000,-0.400000,-0.500000;;, + 17;3; 0.200000,-0.400000,-0.500000;;, + 18;3; 0.200000,-0.400000,-0.500000;;, + 19;3; 0.200000,-0.400000,-0.500000;;, + 20;3; 0.200000,-0.400000,-0.500000;;, + 21;3; 0.200000,-0.400000,-0.500000;;, + 22;3; 0.200000,-0.400000,-0.500000;;, + 23;3; 0.200000,-0.400000,-0.500000;;, + 24;3; 0.200000,-0.400000,-0.500000;;, + 25;3; 0.200000,-0.400000,-0.500000;;, + 26;3; 0.200000,-0.400000,-0.500000;;, + 27;3; 0.200000,-0.400000,-0.500000;;, + 28;3; 0.200000,-0.400000,-0.500000;;, + 29;3; 0.200000,-0.400000,-0.500000;;, + 30;3; 0.200000,-0.400000,-0.500000;;, + 31;3; 0.200000,-0.400000,-0.500000;;, + 32;3; 0.200000,-0.400000,-0.500000;;, + 33;3; 0.200000,-0.400000,-0.500000;;, + 34;3; 0.200000,-0.400000,-0.500000;;, + 35;3; 0.200000,-0.400000,-0.500000;;, + 36;3; 0.200000,-0.400000,-0.500000;;, + 37;3; 0.200000,-0.400000,-0.500000;;, + 38;3; 0.200000,-0.400000,-0.500000;;, + 39;3; 0.200000,-0.400000,-0.500000;;, + 40;3; 0.200000,-0.400000,-0.500000;;, + 41;3; 0.200000,-0.400000,-0.500000;;, + 42;3; 0.200000,-0.400000,-0.500000;;, + 43;3; 0.200000,-0.400000,-0.500000;;, + 44;3; 0.200000,-0.400000,-0.500000;;, + 45;3; 0.200000,-0.400000,-0.500000;;, + 46;3; 0.200000,-0.400000,-0.500000;;, + 47;3; 0.200000,-0.400000,-0.500000;;, + 48;3; 0.200000,-0.400000,-0.500000;;, + 49;3; 0.200000,-0.400000,-0.500000;;, + 50;3; 0.200000,-0.400000,-0.500000;;, + 51;3; 0.200000,-0.400000,-0.500000;;, + 52;3; 0.200000,-0.400000,-0.500000;;, + 53;3; 0.200000,-0.400000,-0.500000;;, + 54;3; 0.200000,-0.400000,-0.500000;;, + 55;3; 0.200000,-0.400000,-0.500000;;, + 56;3; 0.200000,-0.400000,-0.500000;;, + 57;3; 0.200000,-0.400000,-0.500000;;, + 58;3; 0.200000,-0.400000,-0.500000;;, + 59;3; 0.200000,-0.400000,-0.500000;;, + 60;3; 0.200000,-0.400000,-0.500000;;, + 61;3; 0.200000,-0.400000,-0.500000;;, + 62;3; 0.200000,-0.400000,-0.500000;;, + 63;3; 0.200000,-0.400000,-0.500000;;, + 64;3; 0.200000,-0.400000,-0.500000;;, + 65;3; 0.200000,-0.400000,-0.500000;;, + 66;3; 0.200000,-0.400000,-0.500000;;, + 67;3; 0.200000,-0.400000,-0.500000;;, + 68;3; 0.200000,-0.400000,-0.500000;;, + 69;3; 0.200000,-0.400000,-0.500000;;, + 70;3; 0.200000,-0.400000,-0.500000;;, + 71;3; 0.200000,-0.400000,-0.500000;;, + 72;3; 0.200000,-0.400000,-0.500000;;, + 73;3; 0.200000,-0.400000,-0.500000;;, + 74;3; 0.200000,-0.400000,-0.500000;;, + 75;3; 0.200000,-0.400000,-0.500000;;, + 76;3; 0.200000,-0.400000,-0.500000;;, + 77;3; 0.200000,-0.400000,-0.500000;;, + 78;3; 0.200000,-0.400000,-0.500000;;, + 79;3; 0.200000,-0.400000,-0.500000;;, + 80;3; 0.200000,-0.400000,-0.500000;;; + } + } + Animation { + {mob_armature_rl_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.712346,-0.701389, 0.000000, 0.000000;;, + 63;4;-0.727103,-0.685285, 0.000000, 0.000000;;, + 64;4;-0.746050,-0.664608, 0.000000, 0.000000;;, + 65;4;-0.760806,-0.648505, 0.000000, 0.000000;;, + 66;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 67;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 68;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 69;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 70;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 73;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 74;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 75;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 76;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 77;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 78;4;-0.653743,-0.755089, 0.000000, 0.000000;;, + 79;4;-0.667113,-0.741719, 0.000000, 0.000000;;, + 80;4;-0.684601,-0.724231, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3;-0.200000,-0.400000,-0.500000;;, + 1;3;-0.200000,-0.400000,-0.500000;;, + 2;3;-0.200000,-0.400000,-0.500000;;, + 3;3;-0.200000,-0.400000,-0.500000;;, + 4;3;-0.200000,-0.400000,-0.500000;;, + 5;3;-0.200000,-0.400000,-0.500000;;, + 6;3;-0.200000,-0.400000,-0.500000;;, + 7;3;-0.200000,-0.400000,-0.500000;;, + 8;3;-0.200000,-0.400000,-0.500000;;, + 9;3;-0.200000,-0.400000,-0.500000;;, + 10;3;-0.200000,-0.400000,-0.500000;;, + 11;3;-0.200000,-0.400000,-0.500000;;, + 12;3;-0.200000,-0.400000,-0.500000;;, + 13;3;-0.200000,-0.400000,-0.500000;;, + 14;3;-0.200000,-0.400000,-0.500000;;, + 15;3;-0.200000,-0.400000,-0.500000;;, + 16;3;-0.200000,-0.400000,-0.500000;;, + 17;3;-0.200000,-0.400000,-0.500000;;, + 18;3;-0.200000,-0.400000,-0.500000;;, + 19;3;-0.200000,-0.400000,-0.500000;;, + 20;3;-0.200000,-0.400000,-0.500000;;, + 21;3;-0.200000,-0.400000,-0.500000;;, + 22;3;-0.200000,-0.400000,-0.500000;;, + 23;3;-0.200000,-0.400000,-0.500000;;, + 24;3;-0.200000,-0.400000,-0.500000;;, + 25;3;-0.200000,-0.400000,-0.500000;;, + 26;3;-0.200000,-0.400000,-0.500000;;, + 27;3;-0.200000,-0.400000,-0.500000;;, + 28;3;-0.200000,-0.400000,-0.500000;;, + 29;3;-0.200000,-0.400000,-0.500000;;, + 30;3;-0.200000,-0.400000,-0.500000;;, + 31;3;-0.200000,-0.400000,-0.500000;;, + 32;3;-0.200000,-0.400000,-0.500000;;, + 33;3;-0.200000,-0.400000,-0.500000;;, + 34;3;-0.200000,-0.400000,-0.500000;;, + 35;3;-0.200000,-0.400000,-0.500000;;, + 36;3;-0.200000,-0.400000,-0.500000;;, + 37;3;-0.200000,-0.400000,-0.500000;;, + 38;3;-0.200000,-0.400000,-0.500000;;, + 39;3;-0.200000,-0.400000,-0.500000;;, + 40;3;-0.200000,-0.400000,-0.500000;;, + 41;3;-0.200000,-0.400000,-0.500000;;, + 42;3;-0.200000,-0.400000,-0.500000;;, + 43;3;-0.200000,-0.400000,-0.500000;;, + 44;3;-0.200000,-0.400000,-0.500000;;, + 45;3;-0.200000,-0.400000,-0.500000;;, + 46;3;-0.200000,-0.400000,-0.500000;;, + 47;3;-0.200000,-0.400000,-0.500000;;, + 48;3;-0.200000,-0.400000,-0.500000;;, + 49;3;-0.200000,-0.400000,-0.500000;;, + 50;3;-0.200000,-0.400000,-0.500000;;, + 51;3;-0.200000,-0.400000,-0.500000;;, + 52;3;-0.200000,-0.400000,-0.500000;;, + 53;3;-0.200000,-0.400000,-0.500000;;, + 54;3;-0.200000,-0.400000,-0.500000;;, + 55;3;-0.200000,-0.400000,-0.500000;;, + 56;3;-0.200000,-0.400000,-0.500000;;, + 57;3;-0.200000,-0.400000,-0.500000;;, + 58;3;-0.200000,-0.400000,-0.500000;;, + 59;3;-0.200000,-0.400000,-0.500000;;, + 60;3;-0.200000,-0.400000,-0.500000;;, + 61;3;-0.200000,-0.400000,-0.500000;;, + 62;3;-0.200000,-0.400000,-0.500000;;, + 63;3;-0.200000,-0.400000,-0.500000;;, + 64;3;-0.200000,-0.400000,-0.500000;;, + 65;3;-0.200000,-0.400000,-0.500000;;, + 66;3;-0.200000,-0.400000,-0.500000;;, + 67;3;-0.200000,-0.400000,-0.500000;;, + 68;3;-0.200000,-0.400000,-0.500000;;, + 69;3;-0.200000,-0.400000,-0.500000;;, + 70;3;-0.200000,-0.400000,-0.500000;;, + 71;3;-0.200000,-0.400000,-0.500000;;, + 72;3;-0.200000,-0.400000,-0.500000;;, + 73;3;-0.200000,-0.400000,-0.500000;;, + 74;3;-0.200000,-0.400000,-0.500000;;, + 75;3;-0.200000,-0.400000,-0.500000;;, + 76;3;-0.200000,-0.400000,-0.500000;;, + 77;3;-0.200000,-0.400000,-0.500000;;, + 78;3;-0.200000,-0.400000,-0.500000;;, + 79;3;-0.200000,-0.400000,-0.500000;;, + 80;3;-0.200000,-0.400000,-0.500000;;; + } + } +} // End of AnimationSet Global diff --git a/mods/mobs/models/mobs_mineturtle.blend b/mods/mobs/models/mobs_mineturtle.blend new file mode 100644 index 0000000..c831e1c Binary files /dev/null and b/mods/mobs/models/mobs_mineturtle.blend differ diff --git a/mods/mobs/models/mobs_mineturtle.x b/mods/mobs/models/mobs_mineturtle.x new file mode 100644 index 0000000..fed2a9f --- /dev/null +++ b/mods/mobs/models/mobs_mineturtle.x @@ -0,0 +1,2733 @@ +xof 0303txt 0032 + +template XSkinMeshHeader { + <3cf169ce-ff7c-44ab-93c0-f78f62d172e2> + WORD nMaxSkinWeightsPerVertex; + WORD nMaxSkinWeightsPerFace; + WORD nBones; +} + +template SkinWeights { + <6f0d123b-bad2-4167-a0d0-80224f25fabb> + STRING transformNodeName; + DWORD nWeights; + array DWORD vertexIndices[nWeights]; + array float weights[nWeights]; + Matrix4x4 matrixOffset; +} + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame mob_armature { + FrameTransformMatrix { + -0.000000, 1.000000, 0.000000, 0.000000, + -1.000000,-0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame mob_armature_body { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000,-1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 4.000000, 1.000000;; + } + } // End of mob_armature_body + Frame mob_armature_head { + FrameTransformMatrix { + -0.000000,-0.000000,-1.000000, 0.000000, + 1.000000,-0.000000,-0.000000, 0.000000, + -0.000000,-1.000000, 0.000000, 0.000000, + 6.000000, 0.000000, 5.000000, 1.000000;; + } + } // End of mob_armature_head + Frame mob_armature_fl_leg { + FrameTransformMatrix { + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + 3.500000, 3.000000, 2.000000, 1.000000;; + } + } // End of mob_armature_fl_leg + Frame mob_armature_fr_leg { + FrameTransformMatrix { + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + 3.500000,-3.000000, 2.000000, 1.000000;; + } + } // End of mob_armature_fr_leg + Frame mob_armature_rr_leg { + FrameTransformMatrix { + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -3.500000,-3.000000, 2.000000, 1.000000;; + } + } // End of mob_armature_rr_leg + Frame mob_armature_rl_leg { + FrameTransformMatrix { + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -3.500000, 3.000000, 2.000000, 1.000000;; + } + } // End of mob_armature_rl_leg + Frame mob_armature_button { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000,-1.000000, 0.000000, 0.000000, + 2.000000, 0.000000, 7.000000, 1.000000;; + } + } // End of mob_armature_button + Frame mob { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // mob mesh + 164; + -5.000000;-4.000000; 6.000000;, + -5.000000; 4.000000; 6.000000;, + -5.000000; 4.000000; 2.000000;, + -5.000000;-4.000000; 2.000000;, + -5.000000; 4.000000; 6.000000;, + 5.000000; 4.000000; 6.000000;, + 5.000000; 4.000000; 2.000000;, + -5.000000; 4.000000; 2.000000;, + 5.000000; 4.000000; 6.000000;, + 5.000000;-4.000000; 6.000000;, + 5.000000;-4.000000; 2.000000;, + 5.000000; 4.000000; 2.000000;, + 5.000000;-4.000000; 6.000000;, + -5.000000;-4.000000; 6.000000;, + -5.000000;-4.000000; 2.000000;, + 5.000000;-4.000000; 2.000000;, + -5.000000;-4.000000; 2.000000;, + -5.000000; 4.000000; 2.000000;, + 5.000000; 4.000000; 2.000000;, + 5.000000;-4.000000; 2.000000;, + 5.000000;-4.000000; 6.000000;, + 5.000000; 4.000000; 6.000000;, + -5.000000; 4.000000; 6.000000;, + -5.000000;-4.000000; 6.000000;, + 4.000000;-2.000000; 7.000000;, + 4.000000; 2.000000; 7.000000;, + 4.000000; 2.000000; 3.000000;, + 4.000000;-2.000000; 3.000000;, + 4.000000; 2.000000; 7.000000;, + 8.000000; 2.000000; 7.000000;, + 8.000000; 2.000000; 3.000000;, + 4.000000; 2.000000; 3.000000;, + 8.000000; 2.000000; 7.000000;, + 8.000000;-2.000000; 7.000000;, + 8.000000;-2.000000; 3.000000;, + 8.000000; 2.000000; 3.000000;, + 8.000000;-2.000000; 7.000000;, + 4.000000;-2.000000; 7.000000;, + 4.000000;-2.000000; 3.000000;, + 8.000000;-2.000000; 3.000000;, + 4.000000;-2.000000; 3.000000;, + 4.000000; 2.000000; 3.000000;, + 8.000000; 2.000000; 3.000000;, + 8.000000;-2.000000; 3.000000;, + 8.000000;-2.000000; 7.000000;, + 8.000000; 2.000000; 7.000000;, + 4.000000; 2.000000; 7.000000;, + 4.000000;-2.000000; 7.000000;, + 2.500000;-3.500000; 2.000000;, + 2.500000;-1.500000; 2.000000;, + 2.500000;-1.500000; 0.000000;, + 2.500000;-3.500000; 0.000000;, + 2.500000;-1.500000; 2.000000;, + 4.500000;-1.500000; 2.000000;, + 4.500000;-1.500000; 0.000000;, + 2.500000;-1.500000; 0.000000;, + 4.500000;-1.500000; 2.000000;, + 4.500000;-3.500000; 2.000000;, + 4.500000;-3.500000; 0.000000;, + 4.500000;-1.500000; 0.000000;, + 4.500000;-3.500000; 2.000000;, + 2.500000;-3.500000; 2.000000;, + 2.500000;-3.500000; 0.000000;, + 4.500000;-3.500000; 0.000000;, + 2.500000;-3.500000; 0.000000;, + 2.500000;-1.500000; 0.000000;, + 4.500000;-1.500000; 0.000000;, + 4.500000;-3.500000; 0.000000;, + 4.500000;-3.500000; 2.000000;, + 4.500000;-1.500000; 2.000000;, + 2.500000;-1.500000; 2.000000;, + 2.500000;-3.500000; 2.000000;, + 2.500000; 1.500000; 2.000000;, + 2.500000; 3.500000; 2.000000;, + 2.500000; 3.500000; 0.000000;, + 2.500000; 1.500000; 0.000000;, + 2.500000; 3.500000; 2.000000;, + 4.500000; 3.500000; 2.000000;, + 4.500000; 3.500000; 0.000000;, + 2.500000; 3.500000; 0.000000;, + 4.500000; 3.500000; 2.000000;, + 4.500000; 1.500000; 2.000000;, + 4.500000; 1.500000; 0.000000;, + 4.500000; 3.500000; 0.000000;, + 4.500000; 1.500000; 2.000000;, + 2.500000; 1.500000; 2.000000;, + 2.500000; 1.500000; 0.000000;, + 4.500000; 1.500000; 0.000000;, + 2.500000; 1.500000; 0.000000;, + 2.500000; 3.500000; 0.000000;, + 4.500000; 3.500000; 0.000000;, + 4.500000; 1.500000; 0.000000;, + 4.500000; 1.500000; 2.000000;, + 4.500000; 3.500000; 2.000000;, + 2.500000; 3.500000; 2.000000;, + 2.500000; 1.500000; 2.000000;, + -4.500000;-3.500000; 2.000000;, + -4.500000;-1.500000; 2.000000;, + -4.500000;-1.500000; 0.000000;, + -4.500000;-3.500000; 0.000000;, + -4.500000;-1.500000; 2.000000;, + -2.500000;-1.500000; 2.000000;, + -2.500000;-1.500000; 0.000000;, + -4.500000;-1.500000; 0.000000;, + -2.500000;-1.500000; 2.000000;, + -2.500000;-3.500000; 2.000000;, + -2.500000;-3.500000; 0.000000;, + -2.500000;-1.500000; 0.000000;, + -2.500000;-3.500000; 2.000000;, + -4.500000;-3.500000; 2.000000;, + -4.500000;-3.500000; 0.000000;, + -2.500000;-3.500000; 0.000000;, + -4.500000;-3.500000; 0.000000;, + -4.500000;-1.500000; 0.000000;, + -2.500000;-1.500000; 0.000000;, + -2.500000;-3.500000; 0.000000;, + -2.500000;-3.500000; 2.000000;, + -2.500000;-1.500000; 2.000000;, + -4.500000;-1.500000; 2.000000;, + -4.500000;-3.500000; 2.000000;, + -4.500000; 1.500000; 2.000000;, + -4.500000; 3.500000; 2.000000;, + -4.500000; 3.500000; 0.000000;, + -4.500000; 1.500000; 0.000000;, + -4.500000; 3.500000; 2.000000;, + -2.500000; 3.500000; 2.000000;, + -2.500000; 3.500000; 0.000000;, + -4.500000; 3.500000; 0.000000;, + -2.500000; 3.500000; 2.000000;, + -2.500000; 1.500000; 2.000000;, + -2.500000; 1.500000; 0.000000;, + -2.500000; 3.500000; 0.000000;, + -2.500000; 1.500000; 2.000000;, + -4.500000; 1.500000; 2.000000;, + -4.500000; 1.500000; 0.000000;, + -2.500000; 1.500000; 0.000000;, + -4.500000; 1.500000; 0.000000;, + -4.500000; 3.500000; 0.000000;, + -2.500000; 3.500000; 0.000000;, + -2.500000; 1.500000; 0.000000;, + -2.500000; 1.500000; 2.000000;, + -2.500000; 3.500000; 2.000000;, + -4.500000; 3.500000; 2.000000;, + -4.500000; 1.500000; 2.000000;, + -2.500000;-2.000000; 7.000000;, + -2.500000; 2.000000; 7.000000;, + -2.500000; 2.000000; 6.000000;, + -2.500000;-2.000000; 6.000000;, + -2.500000; 2.000000; 7.000000;, + 2.500000; 2.000000; 7.000000;, + 2.500000; 2.000000; 6.000000;, + -2.500000; 2.000000; 6.000000;, + 2.500000; 2.000000; 7.000000;, + 2.500000;-2.000000; 7.000000;, + 2.500000;-2.000000; 6.000000;, + 2.500000; 2.000000; 6.000000;, + 2.500000;-2.000000; 7.000000;, + -2.500000;-2.000000; 7.000000;, + -2.500000;-2.000000; 6.000000;, + 2.500000;-2.000000; 6.000000;, + 2.500000;-2.000000; 7.000000;, + 2.500000; 2.000000; 7.000000;, + -2.500000; 2.000000; 7.000000;, + -2.500000;-2.000000; 7.000000;; + 41; + 4;3,2,1,0;, + 4;7,6,5,4;, + 4;11,10,9,8;, + 4;15,14,13,12;, + 4;19,18,17,16;, + 4;23,22,21,20;, + 4;27,26,25,24;, + 4;31,30,29,28;, + 4;35,34,33,32;, + 4;39,38,37,36;, + 4;43,42,41,40;, + 4;47,46,45,44;, + 4;51,50,49,48;, + 4;55,54,53,52;, + 4;59,58,57,56;, + 4;63,62,61,60;, + 4;67,66,65,64;, + 4;71,70,69,68;, + 4;75,74,73,72;, + 4;79,78,77,76;, + 4;83,82,81,80;, + 4;87,86,85,84;, + 4;91,90,89,88;, + 4;95,94,93,92;, + 4;99,98,97,96;, + 4;103,102,101,100;, + 4;107,106,105,104;, + 4;111,110,109,108;, + 4;115,114,113,112;, + 4;119,118,117,116;, + 4;123,122,121,120;, + 4;127,126,125,124;, + 4;131,130,129,128;, + 4;135,134,133,132;, + 4;139,138,137,136;, + 4;143,142,141,140;, + 4;147,146,145,144;, + 4;151,150,149,148;, + 4;155,154,153,152;, + 4;159,158,157,156;, + 4;163,162,161,160;; + MeshNormals { // mob normals + 41; + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000;-1.000000;, + -0.000000; 0.000000; 1.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-1.000000; 0.000000;, + -0.000000; 0.000000; 1.000000;; + 41; + 4;0,0,0,0;, + 4;1,1,1,1;, + 4;2,2,2,2;, + 4;3,3,3,3;, + 4;4,4,4,4;, + 4;5,5,5,5;, + 4;6,6,6,6;, + 4;7,7,7,7;, + 4;8,8,8,8;, + 4;9,9,9,9;, + 4;10,10,10,10;, + 4;11,11,11,11;, + 4;12,12,12,12;, + 4;13,13,13,13;, + 4;14,14,14,14;, + 4;15,15,15,15;, + 4;16,16,16,16;, + 4;17,17,17,17;, + 4;18,18,18,18;, + 4;19,19,19,19;, + 4;20,20,20,20;, + 4;21,21,21,21;, + 4;22,22,22,22;, + 4;23,23,23,23;, + 4;24,24,24,24;, + 4;25,25,25,25;, + 4;26,26,26,26;, + 4;27,27,27,27;, + 4;28,28,28,28;, + 4;29,29,29,29;, + 4;30,30,30,30;, + 4;31,31,31,31;, + 4;32,32,32,32;, + 4;33,33,33,33;, + 4;34,34,34,34;, + 4;35,35,35,35;, + 4;36,36,36,36;, + 4;37,37,37,37;, + 4;38,38,38,38;, + 4;39,39,39,39;, + 4;40,40,40,40;; + } // End of mob normals + MeshTextureCoords { // mob UV coordinates + 164; + 0.750000; 1.000000;, + 1.000000; 1.000000;, + 1.000000; 0.750000;, + 0.750000; 0.750000;, + 0.500000; 1.000000;, + 0.750000; 1.000000;, + 0.750000; 0.750000;, + 0.500000; 0.750000;, + 0.250000; 1.000000;, + 0.500000; 1.000000;, + 0.500000; 0.750000;, + 0.250000; 0.750000;, + 0.500000; 1.000000;, + 0.750000; 1.000000;, + 0.750000; 0.750000;, + 0.500000; 0.750000;, + 0.500000; 0.750000;, + 0.750000; 0.750000;, + 0.750000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 0.750000;, + 0.750000; 0.750000;, + 0.750000; 0.500000;, + 0.500000; 0.500000;, + 0.250000; 0.250000;, + 0.500000; 0.250000;, + 0.500000; 0.000000;, + 0.250000; 0.000000;, + 0.250000; 0.250000;, + 0.500000; 0.250000;, + 0.500000; 0.000000;, + 0.250000; 0.000000;, + 0.000000; 0.000000;, + 0.250000; 0.000000;, + 0.250000; 0.250000;, + 0.000000; 0.250000;, + 0.250000; 0.250000;, + 0.500000; 0.250000;, + 0.500000; 0.000000;, + 0.250000; 0.000000;, + 0.000000; 0.500000;, + 0.250000; 0.500000;, + 0.250000; 0.250000;, + 0.000000; 0.250000;, + 0.250000; 0.250000;, + 0.500000; 0.250000;, + 0.500000; 0.000000;, + 0.250000; 0.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.625000;, + 0.000000; 0.625000;, + 0.000000; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.625000;, + 0.000000; 0.625000;, + 0.000000; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.625000;, + 0.000000; 0.625000;, + 0.000000; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.875000;, + 0.125000; 0.875000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.625000;, + 0.000000; 0.625000;, + 0.000000; 0.625000;, + 0.125000; 0.625000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.562500; 0.687500;, + 0.687500; 0.687500;, + 0.687500; 0.562500;, + 0.562500; 0.562500;, + 0.562500; 0.687500;, + 0.687500; 0.687500;, + 0.687500; 0.562500;, + 0.562500; 0.562500;, + 0.562500; 0.687500;, + 0.687500; 0.687500;, + 0.687500; 0.562500;, + 0.562500; 0.562500;, + 0.562500; 0.687500;, + 0.687500; 0.687500;, + 0.687500; 0.562500;, + 0.562500; 0.562500;, + 0.562500; 0.687500;, + 0.687500; 0.687500;, + 0.687500; 0.562500;, + 0.562500; 0.562500;; + } // End of mob UV coordinates + XSkinMeshHeader { + 1; + 3; + 7; + } + SkinWeights { + "mob_armature_button"; + 20; + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000,-0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -2.000000,-7.000000,-0.000001, 1.000000;; + } // End of mob_armature_button skin weights + SkinWeights { + "mob_armature_rr_leg"; + 24; + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -3.499999, 2.000000,-3.000001, 1.000000;; + } // End of mob_armature_rr_leg skin weights + SkinWeights { + "mob_armature_rl_leg"; + 24; + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + -3.500001, 2.000000, 2.999999, 1.000000;; + } // End of mob_armature_rl_leg skin weights + SkinWeights { + "mob_armature_head"; + 24; + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -0.000000, 1.000000,-0.000000, 0.000000, + -0.000000,-0.000000,-1.000000, 0.000000, + -1.000000,-0.000000, 0.000000, 0.000000, + 5.000001,-6.000000,-0.000000, 1.000000;; + } // End of mob_armature_head skin weights + SkinWeights { + "mob_armature_fr_leg"; + 24; + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + 3.500001, 2.000000,-2.999998, 1.000000;; + } // End of mob_armature_fr_leg skin weights + SkinWeights { + "mob_armature_fl_leg"; + 24; + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + -1.000000, 0.000000,-0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + -0.000000,-1.000000,-0.000000, 0.000000, + 3.499999, 2.000000, 3.000002, 1.000000;; + } // End of mob_armature_fl_leg skin weights + SkinWeights { + "mob_armature_body"; + 24; + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 1.000000,-0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000,-4.000000,-0.000000, 1.000000;; + } // End of mob_armature_body skin weights + } // End of mob mesh + } // End of mob + } // End of mob_armature +} // End of Root +AnimationSet Global { + Animation { + {mob} + AnimationKey { // Rotation + 0; + 61; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature} + AnimationKey { // Rotation + 0; + 61; + 0;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 1;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 2;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 3;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 4;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 5;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 6;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 7;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 8;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 9;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 10;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 11;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 12;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 13;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 14;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 15;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 16;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 17;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 18;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 19;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 20;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 21;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 22;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 23;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 24;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 25;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 26;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 27;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 28;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 29;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 30;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 31;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 32;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 33;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 34;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 35;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 36;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 37;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 38;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 39;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 40;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 41;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 42;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 43;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 44;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 45;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 46;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 47;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 48;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 49;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 50;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 51;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 52;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 53;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 54;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 55;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 56;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 57;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 58;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 59;4;-0.707107, 0.000000, 0.000000, 0.707107;;, + 60;4;-0.707107, 0.000000, 0.000000, 0.707107;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature_body} + AnimationKey { // Rotation + 0; + 61; + 0;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107, 0.707107, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 0.000000, 0.000000, 4.000000;;, + 1;3; 0.000000, 0.000000, 4.000000;;, + 2;3; 0.000000, 0.000000, 4.000000;;, + 3;3; 0.000000, 0.000000, 4.000000;;, + 4;3; 0.000000, 0.000000, 4.000000;;, + 5;3; 0.000000, 0.000000, 4.000000;;, + 6;3; 0.000000, 0.000000, 4.000000;;, + 7;3; 0.000000, 0.000000, 4.000000;;, + 8;3; 0.000000, 0.000000, 4.000000;;, + 9;3; 0.000000, 0.000000, 4.000000;;, + 10;3; 0.000000, 0.000000, 4.000000;;, + 11;3; 0.000000, 0.000000, 4.000000;;, + 12;3; 0.000000, 0.000000, 4.000000;;, + 13;3; 0.000000, 0.000000, 4.000000;;, + 14;3; 0.000000, 0.000000, 4.000000;;, + 15;3; 0.000000, 0.000000, 4.000000;;, + 16;3; 0.000000, 0.000000, 4.000000;;, + 17;3; 0.000000, 0.000000, 4.000000;;, + 18;3; 0.000000, 0.000000, 4.000000;;, + 19;3; 0.000000, 0.000000, 4.000000;;, + 20;3; 0.000000, 0.000000, 4.000000;;, + 21;3; 0.000000, 0.000000, 4.000000;;, + 22;3; 0.000000, 0.000000, 4.000000;;, + 23;3; 0.000000, 0.000000, 4.000000;;, + 24;3; 0.000000, 0.000000, 4.000000;;, + 25;3; 0.000000, 0.000000, 4.000000;;, + 26;3; 0.000000, 0.000000, 4.000000;;, + 27;3; 0.000000, 0.000000, 4.000000;;, + 28;3; 0.000000, 0.000000, 4.000000;;, + 29;3; 0.000000, 0.000000, 4.000000;;, + 30;3; 0.000000, 0.000000, 4.000000;;, + 31;3; 0.000000, 0.000000, 4.000000;;, + 32;3; 0.000000, 0.000000, 4.000000;;, + 33;3; 0.000000, 0.000000, 4.000000;;, + 34;3; 0.000000, 0.000000, 4.000000;;, + 35;3; 0.000000, 0.000000, 4.000000;;, + 36;3; 0.000000, 0.000000, 4.000000;;, + 37;3; 0.000000, 0.000000, 4.000000;;, + 38;3; 0.000000, 0.000000, 4.000000;;, + 39;3; 0.000000, 0.000000, 4.000000;;, + 40;3; 0.000000, 0.000000, 4.000000;;, + 41;3; 0.000000, 0.000000, 4.000000;;, + 42;3; 0.000000, 0.000000, 4.000000;;, + 43;3; 0.000000, 0.000000, 4.000000;;, + 44;3; 0.000000, 0.000000, 4.000000;;, + 45;3; 0.000000, 0.000000, 4.000000;;, + 46;3; 0.000000, 0.000000, 4.000000;;, + 47;3; 0.000000, 0.000000, 4.000000;;, + 48;3; 0.000000, 0.000000, 4.000000;;, + 49;3; 0.000000, 0.000000, 4.000000;;, + 50;3; 0.000000, 0.000000, 4.000000;;, + 51;3; 0.000000, 0.000000, 4.000000;;, + 52;3; 0.000000, 0.000000, 4.000000;;, + 53;3; 0.000000, 0.000000, 4.000000;;, + 54;3; 0.000000, 0.000000, 4.000000;;, + 55;3; 0.000000, 0.000000, 4.000000;;, + 56;3; 0.000000, 0.000000, 4.000000;;, + 57;3; 0.000000, 0.000000, 4.000000;;, + 58;3; 0.000000, 0.000000, 4.000000;;, + 59;3; 0.000000, 0.000000, 4.000000;;, + 60;3; 0.000000, 0.000000, 4.000000;;; + } + } + Animation { + {mob_armature_head} + AnimationKey { // Rotation + 0; + 61; + 0;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 1;4;-0.485355, 0.511237, 0.511237,-0.485355;;, + 2;4;-0.470711, 0.522474, 0.522474,-0.470711;;, + 3;4;-0.456066, 0.533712, 0.533712,-0.456066;;, + 4;4;-0.441421, 0.544949, 0.544949,-0.441421;;, + 5;4;-0.426777, 0.556186, 0.556186,-0.426777;;, + 6;4;-0.412132, 0.567423, 0.567423,-0.412132;;, + 7;4;-0.397487, 0.578661, 0.578661,-0.397487;;, + 8;4;-0.382843, 0.589898, 0.589898,-0.382843;;, + 9;4;-0.368198, 0.601135, 0.601135,-0.368198;;, + 10;4;-0.353553, 0.612372, 0.612372,-0.353553;;, + 11;4;-0.379435, 0.586491, 0.586491,-0.379435;;, + 12;4;-0.405317, 0.560609, 0.560609,-0.405317;;, + 13;4;-0.431199, 0.534727, 0.534727,-0.431199;;, + 14;4;-0.457081, 0.508845, 0.508845,-0.457081;;, + 15;4;-0.482963, 0.482963, 0.482963,-0.482963;;, + 16;4;-0.508845, 0.457081, 0.457081,-0.508845;;, + 17;4;-0.534727, 0.431199, 0.431199,-0.534727;;, + 18;4;-0.560609, 0.405317, 0.405317,-0.560609;;, + 19;4;-0.586491, 0.379435, 0.379435,-0.586491;;, + 20;4;-0.612372, 0.353553, 0.353553,-0.612373;;, + 21;4;-0.601135, 0.368198, 0.368198,-0.601135;;, + 22;4;-0.589898, 0.382843, 0.382843,-0.589898;;, + 23;4;-0.578661, 0.397487, 0.397487,-0.578661;;, + 24;4;-0.567423, 0.412132, 0.412132,-0.567424;;, + 25;4;-0.556186, 0.426777, 0.426777,-0.556186;;, + 26;4;-0.544949, 0.441421, 0.441421,-0.544949;;, + 27;4;-0.533712, 0.456066, 0.456066,-0.533712;;, + 28;4;-0.522474, 0.470711, 0.470711,-0.522475;;, + 29;4;-0.511237, 0.485355, 0.485355,-0.511237;;, + 30;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 31;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 32;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 33;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 34;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 35;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 36;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 37;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 38;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 39;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 40;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 41;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 42;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 43;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 44;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 45;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 46;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 47;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 48;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 49;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 50;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 51;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 52;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 53;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 54;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 55;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 56;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 57;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 58;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 59;4;-0.500000, 0.500000, 0.500000,-0.500000;;, + 60;4;-0.500000, 0.500000, 0.500000,-0.500000;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 6.000000, 0.000000, 5.000000;;, + 1;3; 6.000000, 0.000000, 5.000000;;, + 2;3; 6.000000, 0.000000, 5.000000;;, + 3;3; 6.000000, 0.000000, 5.000000;;, + 4;3; 6.000000, 0.000000, 5.000000;;, + 5;3; 6.000000, 0.000000, 5.000000;;, + 6;3; 6.000000, 0.000000, 5.000000;;, + 7;3; 6.000000, 0.000000, 5.000000;;, + 8;3; 6.000000, 0.000000, 5.000000;;, + 9;3; 6.000000, 0.000000, 5.000000;;, + 10;3; 6.000000, 0.000000, 5.000000;;, + 11;3; 6.000000, 0.000000, 5.000000;;, + 12;3; 6.000000, 0.000000, 5.000000;;, + 13;3; 6.000000, 0.000000, 5.000000;;, + 14;3; 6.000000, 0.000000, 5.000000;;, + 15;3; 6.000000, 0.000000, 5.000000;;, + 16;3; 6.000000, 0.000000, 5.000000;;, + 17;3; 6.000000, 0.000000, 5.000000;;, + 18;3; 6.000000, 0.000000, 5.000000;;, + 19;3; 6.000000, 0.000000, 5.000000;;, + 20;3; 6.000000, 0.000000, 5.000000;;, + 21;3; 6.000000, 0.000000, 5.000000;;, + 22;3; 6.000000, 0.000000, 5.000000;;, + 23;3; 6.000000, 0.000000, 5.000000;;, + 24;3; 6.000000, 0.000000, 5.000000;;, + 25;3; 6.000000, 0.000000, 5.000000;;, + 26;3; 6.000000, 0.000000, 5.000000;;, + 27;3; 6.000000, 0.000000, 5.000000;;, + 28;3; 6.000000, 0.000000, 5.000000;;, + 29;3; 6.000000, 0.000000, 5.000000;;, + 30;3; 6.000000, 0.000000, 5.000000;;, + 31;3; 6.000000, 0.000000, 5.000000;;, + 32;3; 6.000000, 0.000000, 5.000000;;, + 33;3; 6.000000, 0.000000, 5.000000;;, + 34;3; 6.000000, 0.000000, 5.000000;;, + 35;3; 6.000000, 0.000000, 5.000000;;, + 36;3; 6.000000, 0.000000, 5.000000;;, + 37;3; 6.000000, 0.000000, 5.000000;;, + 38;3; 6.000000, 0.000000, 5.000000;;, + 39;3; 6.000000, 0.000000, 5.000000;;, + 40;3; 6.000000, 0.000000, 5.000000;;, + 41;3; 6.000000, 0.000000, 5.000000;;, + 42;3; 6.000000, 0.000000, 5.000000;;, + 43;3; 6.000000, 0.000000, 5.000000;;, + 44;3; 6.000000, 0.000000, 5.000000;;, + 45;3; 6.000000, 0.000000, 5.000000;;, + 46;3; 6.000000, 0.000000, 5.000000;;, + 47;3; 6.000000, 0.000000, 5.000000;;, + 48;3; 6.000000, 0.000000, 5.000000;;, + 49;3; 6.000000, 0.000000, 5.000000;;, + 50;3; 6.000000, 0.000000, 5.000000;;, + 51;3; 6.000000, 0.000000, 5.000000;;, + 52;3; 6.000000, 0.000000, 5.000000;;, + 53;3; 6.000000, 0.000000, 5.000000;;, + 54;3; 6.000000, 0.000000, 5.000000;;, + 55;3; 6.000000, 0.000000, 5.000000;;, + 56;3; 6.000000, 0.000000, 5.000000;;, + 57;3; 6.000000, 0.000000, 5.000000;;, + 58;3; 6.000000, 0.000000, 5.000000;;, + 59;3; 6.000000, 0.000000, 5.000000;;, + 60;3; 6.000000, 0.000000, 5.000000;;; + } + } + Animation { + {mob_armature_fl_leg} + AnimationKey { // Rotation + 0; + 61; + 0;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 1;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 2;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 3;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 4;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 5;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 6;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 7;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 8;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 9;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 10;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 11;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 12;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 13;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 14;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 15;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 16;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 17;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 18;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 19;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 20;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 21;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 22;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 23;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 24;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 25;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 26;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 27;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 28;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 29;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 30;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 31;4;-0.024557, 0.024558, 0.704958,-0.704958;;, + 32;4;-0.049115, 0.049115, 0.702810,-0.702810;;, + 33;4;-0.073673, 0.073673, 0.700661,-0.700661;;, + 34;4;-0.098230, 0.098230, 0.698513,-0.698513;;, + 35;4;-0.122788, 0.122788, 0.696364,-0.696364;;, + 36;4;-0.098230, 0.098230, 0.696364,-0.696364;;, + 37;4;-0.073673, 0.073673, 0.696364,-0.696364;;, + 38;4;-0.049115, 0.049115, 0.696364,-0.696364;;, + 39;4;-0.024557, 0.024558, 0.696364,-0.696364;;, + 40;4; 0.000000, 0.000000, 0.696364,-0.696364;;, + 41;4; 0.024558,-0.024557, 0.696364,-0.696364;;, + 42;4; 0.049115,-0.049115, 0.696364,-0.696364;;, + 43;4; 0.073673,-0.073673, 0.696364,-0.696364;;, + 44;4; 0.098230,-0.098230, 0.696364,-0.696364;;, + 45;4; 0.122788,-0.122788, 0.696364,-0.696364;;, + 46;4; 0.098230,-0.098230, 0.698513,-0.698513;;, + 47;4; 0.073673,-0.073673, 0.700661,-0.700661;;, + 48;4; 0.049115,-0.049115, 0.702810,-0.702810;;, + 49;4; 0.024558,-0.024557, 0.704958,-0.704958;;, + 50;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 51;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 52;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 53;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 54;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 55;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 56;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 57;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 58;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 59;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 60;4; 0.000000, 0.000000, 0.707107,-0.707107;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 3.500000, 3.000000, 2.000000;;, + 1;3; 3.500000, 3.000000, 2.000000;;, + 2;3; 3.500000, 3.000000, 2.000000;;, + 3;3; 3.500000, 3.000000, 2.000000;;, + 4;3; 3.500000, 3.000000, 2.000000;;, + 5;3; 3.500000, 3.000000, 2.000000;;, + 6;3; 3.500000, 3.000000, 2.000000;;, + 7;3; 3.500000, 3.000000, 2.000000;;, + 8;3; 3.500000, 3.000000, 2.000000;;, + 9;3; 3.500000, 3.000000, 2.000000;;, + 10;3; 3.500000, 3.000000, 2.000000;;, + 11;3; 3.500000, 3.000000, 2.000000;;, + 12;3; 3.500000, 3.000000, 2.000000;;, + 13;3; 3.500000, 3.000000, 2.000000;;, + 14;3; 3.500000, 3.000000, 2.000000;;, + 15;3; 3.500000, 3.000000, 2.000000;;, + 16;3; 3.500000, 3.000000, 2.000000;;, + 17;3; 3.500000, 3.000000, 2.000000;;, + 18;3; 3.500000, 3.000000, 2.000000;;, + 19;3; 3.500000, 3.000000, 2.000000;;, + 20;3; 3.500000, 3.000000, 2.000000;;, + 21;3; 3.500000, 3.000000, 2.000000;;, + 22;3; 3.500000, 3.000000, 2.000000;;, + 23;3; 3.500000, 3.000000, 2.000000;;, + 24;3; 3.500000, 3.000000, 2.000000;;, + 25;3; 3.500000, 3.000000, 2.000000;;, + 26;3; 3.500000, 3.000000, 2.000000;;, + 27;3; 3.500000, 3.000000, 2.000000;;, + 28;3; 3.500000, 3.000000, 2.000000;;, + 29;3; 3.500000, 3.000000, 2.000000;;, + 30;3; 3.500000, 3.000000, 2.000000;;, + 31;3; 3.500000, 3.000000, 2.000000;;, + 32;3; 3.500000, 3.000000, 2.000000;;, + 33;3; 3.500000, 3.000000, 2.000000;;, + 34;3; 3.500000, 3.000000, 2.000000;;, + 35;3; 3.500000, 3.000000, 2.000000;;, + 36;3; 3.500000, 3.000000, 2.000000;;, + 37;3; 3.500000, 3.000000, 2.000000;;, + 38;3; 3.500000, 3.000000, 2.000000;;, + 39;3; 3.500000, 3.000000, 2.000000;;, + 40;3; 3.500000, 3.000000, 2.000000;;, + 41;3; 3.500000, 3.000000, 2.000000;;, + 42;3; 3.500000, 3.000000, 2.000000;;, + 43;3; 3.500000, 3.000000, 2.000000;;, + 44;3; 3.500000, 3.000000, 2.000000;;, + 45;3; 3.500000, 3.000000, 2.000000;;, + 46;3; 3.500000, 3.000000, 2.000000;;, + 47;3; 3.500000, 3.000000, 2.000000;;, + 48;3; 3.500000, 3.000000, 2.000000;;, + 49;3; 3.500000, 3.000000, 2.000000;;, + 50;3; 3.500000, 3.000000, 2.000000;;, + 51;3; 3.500000, 3.000000, 2.000000;;, + 52;3; 3.500000, 3.000000, 2.000000;;, + 53;3; 3.500000, 3.000000, 2.000000;;, + 54;3; 3.500000, 3.000000, 2.000000;;, + 55;3; 3.500000, 3.000000, 2.000000;;, + 56;3; 3.500000, 3.000000, 2.000000;;, + 57;3; 3.500000, 3.000000, 2.000000;;, + 58;3; 3.500000, 3.000000, 2.000000;;, + 59;3; 3.500000, 3.000000, 2.000000;;, + 60;3; 3.500000, 3.000000, 2.000000;;; + } + } + Animation { + {mob_armature_fr_leg} + AnimationKey { // Rotation + 0; + 61; + 0;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 1;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 2;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 3;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 4;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 5;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 6;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 7;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 8;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 9;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 10;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 11;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 12;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 13;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 14;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 15;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 16;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 17;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 18;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 19;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 20;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 21;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 22;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 23;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 24;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 25;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 26;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 27;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 28;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 29;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 30;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 31;4; 0.024558,-0.024557, 0.704958,-0.704958;;, + 32;4; 0.049115,-0.049115, 0.702810,-0.702810;;, + 33;4; 0.073673,-0.073673, 0.700661,-0.700661;;, + 34;4; 0.098230,-0.098230, 0.698513,-0.698513;;, + 35;4; 0.122788,-0.122788, 0.696364,-0.696364;;, + 36;4; 0.098230,-0.098230, 0.696364,-0.696364;;, + 37;4; 0.073673,-0.073673, 0.696364,-0.696364;;, + 38;4; 0.049115,-0.049115, 0.696364,-0.696364;;, + 39;4; 0.024558,-0.024557, 0.696364,-0.696364;;, + 40;4; 0.000000, 0.000000, 0.696364,-0.696364;;, + 41;4;-0.024557, 0.024558, 0.696364,-0.696364;;, + 42;4;-0.049115, 0.049115, 0.696364,-0.696364;;, + 43;4;-0.073673, 0.073673, 0.696364,-0.696364;;, + 44;4;-0.098230, 0.098230, 0.696364,-0.696364;;, + 45;4;-0.122788, 0.122788, 0.696364,-0.696364;;, + 46;4;-0.098230, 0.098230, 0.698513,-0.698513;;, + 47;4;-0.073673, 0.073673, 0.700661,-0.700661;;, + 48;4;-0.049115, 0.049115, 0.702810,-0.702810;;, + 49;4;-0.024557, 0.024558, 0.704958,-0.704958;;, + 50;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 51;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 52;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 53;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 54;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 55;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 56;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 57;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 58;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 59;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 60;4; 0.000000, 0.000000, 0.707107,-0.707107;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 3.500000,-3.000000, 2.000000;;, + 1;3; 3.500000,-3.000000, 2.000000;;, + 2;3; 3.500000,-3.000000, 2.000000;;, + 3;3; 3.500000,-3.000000, 2.000000;;, + 4;3; 3.500000,-3.000000, 2.000000;;, + 5;3; 3.500000,-3.000000, 2.000000;;, + 6;3; 3.500000,-3.000000, 2.000000;;, + 7;3; 3.500000,-3.000000, 2.000000;;, + 8;3; 3.500000,-3.000000, 2.000000;;, + 9;3; 3.500000,-3.000000, 2.000000;;, + 10;3; 3.500000,-3.000000, 2.000000;;, + 11;3; 3.500000,-3.000000, 2.000000;;, + 12;3; 3.500000,-3.000000, 2.000000;;, + 13;3; 3.500000,-3.000000, 2.000000;;, + 14;3; 3.500000,-3.000000, 2.000000;;, + 15;3; 3.500000,-3.000000, 2.000000;;, + 16;3; 3.500000,-3.000000, 2.000000;;, + 17;3; 3.500000,-3.000000, 2.000000;;, + 18;3; 3.500000,-3.000000, 2.000000;;, + 19;3; 3.500000,-3.000000, 2.000000;;, + 20;3; 3.500000,-3.000000, 2.000000;;, + 21;3; 3.500000,-3.000000, 2.000000;;, + 22;3; 3.500000,-3.000000, 2.000000;;, + 23;3; 3.500000,-3.000000, 2.000000;;, + 24;3; 3.500000,-3.000000, 2.000000;;, + 25;3; 3.500000,-3.000000, 2.000000;;, + 26;3; 3.500000,-3.000000, 2.000000;;, + 27;3; 3.500000,-3.000000, 2.000000;;, + 28;3; 3.500000,-3.000000, 2.000000;;, + 29;3; 3.500000,-3.000000, 2.000000;;, + 30;3; 3.500000,-3.000000, 2.000000;;, + 31;3; 3.500000,-3.000000, 2.000000;;, + 32;3; 3.500000,-3.000000, 2.000000;;, + 33;3; 3.500000,-3.000000, 2.000000;;, + 34;3; 3.500000,-3.000000, 2.000000;;, + 35;3; 3.500000,-3.000000, 2.000000;;, + 36;3; 3.500000,-3.000000, 2.000000;;, + 37;3; 3.500000,-3.000000, 2.000000;;, + 38;3; 3.500000,-3.000000, 2.000000;;, + 39;3; 3.500000,-3.000000, 2.000000;;, + 40;3; 3.500000,-3.000000, 2.000000;;, + 41;3; 3.500000,-3.000000, 2.000000;;, + 42;3; 3.500000,-3.000000, 2.000000;;, + 43;3; 3.500000,-3.000000, 2.000000;;, + 44;3; 3.500000,-3.000000, 2.000000;;, + 45;3; 3.500000,-3.000000, 2.000000;;, + 46;3; 3.500000,-3.000000, 2.000000;;, + 47;3; 3.500000,-3.000000, 2.000000;;, + 48;3; 3.500000,-3.000000, 2.000000;;, + 49;3; 3.500000,-3.000000, 2.000000;;, + 50;3; 3.500000,-3.000000, 2.000000;;, + 51;3; 3.500000,-3.000000, 2.000000;;, + 52;3; 3.500000,-3.000000, 2.000000;;, + 53;3; 3.500000,-3.000000, 2.000000;;, + 54;3; 3.500000,-3.000000, 2.000000;;, + 55;3; 3.500000,-3.000000, 2.000000;;, + 56;3; 3.500000,-3.000000, 2.000000;;, + 57;3; 3.500000,-3.000000, 2.000000;;, + 58;3; 3.500000,-3.000000, 2.000000;;, + 59;3; 3.500000,-3.000000, 2.000000;;, + 60;3; 3.500000,-3.000000, 2.000000;;; + } + } + Animation { + {mob_armature_rr_leg} + AnimationKey { // Rotation + 0; + 61; + 0;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 1;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 2;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 3;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 4;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 5;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 6;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 7;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 8;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 9;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 10;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 11;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 12;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 13;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 14;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 15;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 16;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 17;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 18;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 19;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 20;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 21;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 22;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 23;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 24;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 25;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 26;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 27;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 28;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 29;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 30;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 31;4;-0.024557, 0.024558, 0.704958,-0.704958;;, + 32;4;-0.049115, 0.049115, 0.702810,-0.702810;;, + 33;4;-0.073673, 0.073673, 0.700661,-0.700661;;, + 34;4;-0.098230, 0.098230, 0.698513,-0.698513;;, + 35;4;-0.122788, 0.122788, 0.696364,-0.696364;;, + 36;4;-0.098230, 0.098230, 0.696364,-0.696364;;, + 37;4;-0.073673, 0.073673, 0.696364,-0.696364;;, + 38;4;-0.049115, 0.049115, 0.696364,-0.696364;;, + 39;4;-0.024557, 0.024558, 0.696364,-0.696364;;, + 40;4; 0.000000, 0.000000, 0.696364,-0.696364;;, + 41;4; 0.024558,-0.024557, 0.696364,-0.696364;;, + 42;4; 0.049115,-0.049115, 0.696364,-0.696364;;, + 43;4; 0.073673,-0.073673, 0.696364,-0.696364;;, + 44;4; 0.098230,-0.098230, 0.696364,-0.696364;;, + 45;4; 0.122788,-0.122788, 0.696364,-0.696364;;, + 46;4; 0.098230,-0.098230, 0.698513,-0.698513;;, + 47;4; 0.073673,-0.073673, 0.700661,-0.700661;;, + 48;4; 0.049115,-0.049115, 0.702810,-0.702810;;, + 49;4; 0.024558,-0.024557, 0.704958,-0.704958;;, + 50;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 51;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 52;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 53;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 54;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 55;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 56;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 57;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 58;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 59;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 60;4; 0.000000, 0.000000, 0.707107,-0.707107;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3;-3.500000,-3.000000, 2.000000;;, + 1;3;-3.500000,-3.000000, 2.000000;;, + 2;3;-3.500000,-3.000000, 2.000000;;, + 3;3;-3.500000,-3.000000, 2.000000;;, + 4;3;-3.500000,-3.000000, 2.000000;;, + 5;3;-3.500000,-3.000000, 2.000000;;, + 6;3;-3.500000,-3.000000, 2.000000;;, + 7;3;-3.500000,-3.000000, 2.000000;;, + 8;3;-3.500000,-3.000000, 2.000000;;, + 9;3;-3.500000,-3.000000, 2.000000;;, + 10;3;-3.500000,-3.000000, 2.000000;;, + 11;3;-3.500000,-3.000000, 2.000000;;, + 12;3;-3.500000,-3.000000, 2.000000;;, + 13;3;-3.500000,-3.000000, 2.000000;;, + 14;3;-3.500000,-3.000000, 2.000000;;, + 15;3;-3.500000,-3.000000, 2.000000;;, + 16;3;-3.500000,-3.000000, 2.000000;;, + 17;3;-3.500000,-3.000000, 2.000000;;, + 18;3;-3.500000,-3.000000, 2.000000;;, + 19;3;-3.500000,-3.000000, 2.000000;;, + 20;3;-3.500000,-3.000000, 2.000000;;, + 21;3;-3.500000,-3.000000, 2.000000;;, + 22;3;-3.500000,-3.000000, 2.000000;;, + 23;3;-3.500000,-3.000000, 2.000000;;, + 24;3;-3.500000,-3.000000, 2.000000;;, + 25;3;-3.500000,-3.000000, 2.000000;;, + 26;3;-3.500000,-3.000000, 2.000000;;, + 27;3;-3.500000,-3.000000, 2.000000;;, + 28;3;-3.500000,-3.000000, 2.000000;;, + 29;3;-3.500000,-3.000000, 2.000000;;, + 30;3;-3.500000,-3.000000, 2.000000;;, + 31;3;-3.500000,-3.000000, 2.000000;;, + 32;3;-3.500000,-3.000000, 2.000000;;, + 33;3;-3.500000,-3.000000, 2.000000;;, + 34;3;-3.500000,-3.000000, 2.000000;;, + 35;3;-3.500000,-3.000000, 2.000000;;, + 36;3;-3.500000,-3.000000, 2.000000;;, + 37;3;-3.500000,-3.000000, 2.000000;;, + 38;3;-3.500000,-3.000000, 2.000000;;, + 39;3;-3.500000,-3.000000, 2.000000;;, + 40;3;-3.500000,-3.000000, 2.000000;;, + 41;3;-3.500000,-3.000000, 2.000000;;, + 42;3;-3.500000,-3.000000, 2.000000;;, + 43;3;-3.500000,-3.000000, 2.000000;;, + 44;3;-3.500000,-3.000000, 2.000000;;, + 45;3;-3.500000,-3.000000, 2.000000;;, + 46;3;-3.500000,-3.000000, 2.000000;;, + 47;3;-3.500000,-3.000000, 2.000000;;, + 48;3;-3.500000,-3.000000, 2.000000;;, + 49;3;-3.500000,-3.000000, 2.000000;;, + 50;3;-3.500000,-3.000000, 2.000000;;, + 51;3;-3.500000,-3.000000, 2.000000;;, + 52;3;-3.500000,-3.000000, 2.000000;;, + 53;3;-3.500000,-3.000000, 2.000000;;, + 54;3;-3.500000,-3.000000, 2.000000;;, + 55;3;-3.500000,-3.000000, 2.000000;;, + 56;3;-3.500000,-3.000000, 2.000000;;, + 57;3;-3.500000,-3.000000, 2.000000;;, + 58;3;-3.500000,-3.000000, 2.000000;;, + 59;3;-3.500000,-3.000000, 2.000000;;, + 60;3;-3.500000,-3.000000, 2.000000;;; + } + } + Animation { + {mob_armature_rl_leg} + AnimationKey { // Rotation + 0; + 61; + 0;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 1;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 2;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 3;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 4;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 5;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 6;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 7;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 8;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 9;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 10;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 11;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 12;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 13;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 14;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 15;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 16;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 17;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 18;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 19;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 20;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 21;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 22;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 23;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 24;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 25;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 26;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 27;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 28;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 29;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 30;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 31;4; 0.024558,-0.024557, 0.704958,-0.704958;;, + 32;4; 0.049115,-0.049115, 0.702810,-0.702810;;, + 33;4; 0.073673,-0.073673, 0.700661,-0.700661;;, + 34;4; 0.098230,-0.098230, 0.698513,-0.698513;;, + 35;4; 0.122788,-0.122788, 0.696364,-0.696364;;, + 36;4; 0.098230,-0.098230, 0.696364,-0.696364;;, + 37;4; 0.073673,-0.073673, 0.696364,-0.696364;;, + 38;4; 0.049115,-0.049115, 0.696364,-0.696364;;, + 39;4; 0.024558,-0.024557, 0.696364,-0.696364;;, + 40;4; 0.000000, 0.000000, 0.696364,-0.696364;;, + 41;4;-0.024557, 0.024558, 0.696364,-0.696364;;, + 42;4;-0.049115, 0.049115, 0.696364,-0.696364;;, + 43;4;-0.073673, 0.073673, 0.696364,-0.696364;;, + 44;4;-0.098230, 0.098230, 0.696364,-0.696364;;, + 45;4;-0.122788, 0.122788, 0.696364,-0.696364;;, + 46;4;-0.098230, 0.098230, 0.698513,-0.698513;;, + 47;4;-0.073673, 0.073673, 0.700661,-0.700661;;, + 48;4;-0.049115, 0.049115, 0.702810,-0.702810;;, + 49;4;-0.024557, 0.024558, 0.704958,-0.704958;;, + 50;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 51;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 52;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 53;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 54;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 55;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 56;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 57;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 58;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 59;4; 0.000000, 0.000000, 0.707107,-0.707107;;, + 60;4; 0.000000, 0.000000, 0.707107,-0.707107;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3;-3.500000, 3.000000, 2.000000;;, + 1;3;-3.500000, 3.000000, 2.000000;;, + 2;3;-3.500000, 3.000000, 2.000000;;, + 3;3;-3.500000, 3.000000, 2.000000;;, + 4;3;-3.500000, 3.000000, 2.000000;;, + 5;3;-3.500000, 3.000000, 2.000000;;, + 6;3;-3.500000, 3.000000, 2.000000;;, + 7;3;-3.500000, 3.000000, 2.000000;;, + 8;3;-3.500000, 3.000000, 2.000000;;, + 9;3;-3.500000, 3.000000, 2.000000;;, + 10;3;-3.500000, 3.000000, 2.000000;;, + 11;3;-3.500000, 3.000000, 2.000000;;, + 12;3;-3.500000, 3.000000, 2.000000;;, + 13;3;-3.500000, 3.000000, 2.000000;;, + 14;3;-3.500000, 3.000000, 2.000000;;, + 15;3;-3.500000, 3.000000, 2.000000;;, + 16;3;-3.500000, 3.000000, 2.000000;;, + 17;3;-3.500000, 3.000000, 2.000000;;, + 18;3;-3.500000, 3.000000, 2.000000;;, + 19;3;-3.500000, 3.000000, 2.000000;;, + 20;3;-3.500000, 3.000000, 2.000000;;, + 21;3;-3.500000, 3.000000, 2.000000;;, + 22;3;-3.500000, 3.000000, 2.000000;;, + 23;3;-3.500000, 3.000000, 2.000000;;, + 24;3;-3.500000, 3.000000, 2.000000;;, + 25;3;-3.500000, 3.000000, 2.000000;;, + 26;3;-3.500000, 3.000000, 2.000000;;, + 27;3;-3.500000, 3.000000, 2.000000;;, + 28;3;-3.500000, 3.000000, 2.000000;;, + 29;3;-3.500000, 3.000000, 2.000000;;, + 30;3;-3.500000, 3.000000, 2.000000;;, + 31;3;-3.500000, 3.000000, 2.000000;;, + 32;3;-3.500000, 3.000000, 2.000000;;, + 33;3;-3.500000, 3.000000, 2.000000;;, + 34;3;-3.500000, 3.000000, 2.000000;;, + 35;3;-3.500000, 3.000000, 2.000000;;, + 36;3;-3.500000, 3.000000, 2.000000;;, + 37;3;-3.500000, 3.000000, 2.000000;;, + 38;3;-3.500000, 3.000000, 2.000000;;, + 39;3;-3.500000, 3.000000, 2.000000;;, + 40;3;-3.500000, 3.000000, 2.000000;;, + 41;3;-3.500000, 3.000000, 2.000000;;, + 42;3;-3.500000, 3.000000, 2.000000;;, + 43;3;-3.500000, 3.000000, 2.000000;;, + 44;3;-3.500000, 3.000000, 2.000000;;, + 45;3;-3.500000, 3.000000, 2.000000;;, + 46;3;-3.500000, 3.000000, 2.000000;;, + 47;3;-3.500000, 3.000000, 2.000000;;, + 48;3;-3.500000, 3.000000, 2.000000;;, + 49;3;-3.500000, 3.000000, 2.000000;;, + 50;3;-3.500000, 3.000000, 2.000000;;, + 51;3;-3.500000, 3.000000, 2.000000;;, + 52;3;-3.500000, 3.000000, 2.000000;;, + 53;3;-3.500000, 3.000000, 2.000000;;, + 54;3;-3.500000, 3.000000, 2.000000;;, + 55;3;-3.500000, 3.000000, 2.000000;;, + 56;3;-3.500000, 3.000000, 2.000000;;, + 57;3;-3.500000, 3.000000, 2.000000;;, + 58;3;-3.500000, 3.000000, 2.000000;;, + 59;3;-3.500000, 3.000000, 2.000000;;, + 60;3;-3.500000, 3.000000, 2.000000;;; + } + } + Animation { + {mob_armature_button} + AnimationKey { // Rotation + 0; + 61; + 0;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107, 0.707107, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 61; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 61; + 0;3; 2.000000, 0.000000, 7.000000;;, + 1;3; 2.000000, 0.000000, 7.000000;;, + 2;3; 2.000000, 0.000000, 7.000000;;, + 3;3; 2.000000, 0.000000, 7.000000;;, + 4;3; 2.000000, 0.000000, 7.000000;;, + 5;3; 2.000000, 0.000000, 7.000000;;, + 6;3; 2.000000, 0.000000, 7.000000;;, + 7;3; 2.000000, 0.000000, 7.000000;;, + 8;3; 2.000000, 0.000000, 7.000000;;, + 9;3; 2.000000, 0.000000, 7.000000;;, + 10;3; 2.000000, 0.000000, 7.000000;;, + 11;3; 2.000000, 0.000000, 7.000000;;, + 12;3; 2.000000, 0.000000, 7.000000;;, + 13;3; 2.000000, 0.000000, 7.000000;;, + 14;3; 2.000000, 0.000000, 7.000000;;, + 15;3; 2.000000, 0.000000, 7.000000;;, + 16;3; 2.000000, 0.000000, 7.000000;;, + 17;3; 2.000000, 0.000000, 7.000000;;, + 18;3; 2.000000, 0.000000, 7.000000;;, + 19;3; 2.000000, 0.000000, 7.000000;;, + 20;3; 2.000000, 0.000000, 7.000000;;, + 21;3; 2.000000, 0.000000, 7.000000;;, + 22;3; 2.000000, 0.000000, 7.000000;;, + 23;3; 2.000000, 0.000000, 7.000000;;, + 24;3; 2.000000, 0.000000, 7.000000;;, + 25;3; 2.000000, 0.000000, 7.000000;;, + 26;3; 2.000000, 0.000000, 7.000000;;, + 27;3; 2.000000, 0.000000, 7.000000;;, + 28;3; 2.000000, 0.000000, 7.000000;;, + 29;3; 2.000000, 0.000000, 7.000000;;, + 30;3; 2.000000, 0.000000, 7.000000;;, + 31;3; 2.000000, 0.000000, 7.000000;;, + 32;3; 2.000000, 0.000000, 7.000000;;, + 33;3; 2.000000, 0.000000, 7.000000;;, + 34;3; 2.000000, 0.000000, 7.000000;;, + 35;3; 2.000000, 0.000000, 7.000000;;, + 36;3; 2.000000, 0.000000, 7.000000;;, + 37;3; 2.000000, 0.000000, 7.000000;;, + 38;3; 2.000000, 0.000000, 7.000000;;, + 39;3; 2.000000, 0.000000, 7.000000;;, + 40;3; 2.000000, 0.000000, 7.000000;;, + 41;3; 2.000000, 0.000000, 7.000000;;, + 42;3; 2.000000, 0.000000, 7.000000;;, + 43;3; 2.000000, 0.000000, 7.000000;;, + 44;3; 2.000000, 0.000000, 7.000000;;, + 45;3; 2.000000, 0.000000, 7.000000;;, + 46;3; 2.000000, 0.000000, 7.000000;;, + 47;3; 2.000000, 0.000000, 7.000000;;, + 48;3; 2.000000, 0.000000, 7.000000;;, + 49;3; 2.000000, 0.000000, 7.000000;;, + 50;3; 2.000000, 0.000000, 7.000000;;, + 51;3; 2.000000, 0.000000, 7.000000;;, + 52;3; 2.000000, 0.000000, 6.777778;;, + 53;3; 2.000000, 0.000000, 6.555555;;, + 54;3; 2.000000,-0.000000, 6.333333;;, + 55;3; 2.000000, 0.000000, 6.111111;;, + 56;3; 2.000000,-0.000000, 5.888889;;, + 57;3; 2.000000,-0.000000, 5.666667;;, + 58;3; 2.000000, 0.000000, 5.444444;;, + 59;3; 2.000000, 0.000000, 5.222222;;, + 60;3; 2.000000, 0.000000, 5.000000;;; + } + } +} // End of AnimationSet Global diff --git a/mods/mobs/models/mobs_npc.b3d b/mods/mobs/models/mobs_npc.b3d new file mode 100644 index 0000000..bc9d927 Binary files /dev/null and b/mods/mobs/models/mobs_npc.b3d differ diff --git a/mods/mobs/models/mobs_sheep.blend b/mods/mobs/models/mobs_sheep.blend new file mode 100644 index 0000000..ef2a116 Binary files /dev/null and b/mods/mobs/models/mobs_sheep.blend differ diff --git a/mods/mobs/models/mobs_sheep.x b/mods/mobs/models/mobs_sheep.x new file mode 100644 index 0000000..c1bba9d --- /dev/null +++ b/mods/mobs/models/mobs_sheep.x @@ -0,0 +1,3284 @@ +xof 0303txt 0032 + +template XSkinMeshHeader { + <3cf169ce-ff7c-44ab-93c0-f78f62d172e2> + WORD nMaxSkinWeightsPerVertex; + WORD nMaxSkinWeightsPerFace; + WORD nBones; +} + +template SkinWeights { + <6f0d123b-bad2-4167-a0d0-80224f25fabb> + STRING transformNodeName; + DWORD nWeights; + array DWORD vertexIndices[nWeights]; + array float weights[nWeights]; + Matrix4x4 matrixOffset; +} + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame mob_armature { + FrameTransformMatrix { + 10.000000, 0.000000, 0.000000, 0.000000, + 0.000000,10.000000, 0.000000, 0.000000, + 0.000000, 0.000000,10.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame mob_armature_body { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000,-1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + } // End of mob_armature_body + Frame mob_armature_head { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.500000, 0.000000, 1.000000;; + } + } // End of mob_armature_head + Frame mob_armature_fl_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.200000, 0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_fl_leg + Frame mob_armature_fr_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.200000, 0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_fr_leg + Frame mob_armature_rr_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.200000,-0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_rr_leg + Frame mob_armature_rl_leg { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + -0.200000,-0.400000,-0.500000, 1.000000;; + } + } // End of mob_armature_rl_leg + Frame mob { + FrameTransformMatrix { + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.100000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // mob mesh + 224; + 4.000000;-6.000000; 1.000000;, + -4.000000;-6.000000; 1.000000;, + -4.000000;-6.000000;-5.000000;, + 4.000000;-6.000000;-5.000000;, + -4.000000;-6.000000; 1.000000;, + -4.000000; 6.000000; 1.000000;, + -4.000000; 6.000000;-5.000000;, + -4.000000;-6.000000;-5.000000;, + -4.000000; 6.000000; 1.000000;, + 4.000000; 6.000000; 1.000000;, + 4.000000; 6.000000;-5.000000;, + -4.000000; 6.000000;-5.000000;, + 4.000000; 6.000000; 1.000000;, + 4.000000;-6.000000; 1.000000;, + 4.000000;-6.000000;-5.000000;, + 4.000000; 6.000000;-5.000000;, + 4.000000;-6.000000;-5.000000;, + -4.000000;-6.000000;-5.000000;, + -4.000000; 6.000000;-5.000000;, + 4.000000; 6.000000;-5.000000;, + 4.000000; 6.000000; 1.000000;, + -4.000000; 6.000000; 1.000000;, + -4.000000;-6.000000; 1.000000;, + 4.000000;-6.000000; 1.000000;, + 3.500000;-5.500000;-5.000000;, + 0.500000;-5.500000;-5.000000;, + 0.500000;-5.500000;-8.000000;, + 3.500000;-5.500000;-8.000000;, + 0.500000;-5.500000;-5.000000;, + 0.500000;-2.500000;-5.000000;, + 0.500000;-2.500000;-8.000000;, + 0.500000;-5.500000;-8.000000;, + 0.500000;-2.500000;-5.000000;, + 3.500000;-2.500000;-5.000000;, + 3.500000;-2.500000;-8.000000;, + 0.500000;-2.500000;-8.000000;, + 3.500000;-2.500000;-5.000000;, + 3.500000;-5.500000;-5.000000;, + 3.500000;-5.500000;-8.000000;, + 3.500000;-2.500000;-8.000000;, + 3.500000;-5.500000;-8.000000;, + 0.500000;-5.500000;-8.000000;, + 0.500000;-2.500000;-8.000000;, + 3.500000;-2.500000;-8.000000;, + 3.500000;-2.500000;-5.000000;, + 0.500000;-2.500000;-5.000000;, + 0.500000;-5.500000;-5.000000;, + 3.500000;-5.500000;-5.000000;, + -0.500000;-5.500000;-5.000000;, + -3.500000;-5.500000;-5.000000;, + -3.500000;-5.500000;-8.000000;, + -0.500000;-5.500000;-8.000000;, + 3.000000;-5.000000;-10.000000;, + 1.000000;-5.000000;-10.000000;, + 1.000000;-3.000000;-10.000000;, + 3.000000;-3.000000;-10.000000;, + 3.000000;-3.000000;-8.000000;, + 3.000000;-5.000000;-8.000000;, + 3.000000;-5.000000;-10.000000;, + 3.000000;-3.000000;-10.000000;, + 1.000000;-3.000000;-8.000000;, + 3.000000;-3.000000;-8.000000;, + 3.000000;-3.000000;-10.000000;, + 1.000000;-3.000000;-10.000000;, + 1.000000;-5.000000;-8.000000;, + 1.000000;-3.000000;-8.000000;, + 1.000000;-3.000000;-10.000000;, + 1.000000;-5.000000;-10.000000;, + 3.000000;-5.000000;-8.000000;, + 1.000000;-5.000000;-8.000000;, + 1.000000;-5.000000;-10.000000;, + 3.000000;-5.000000;-10.000000;, + -3.500000;-5.500000;-5.000000;, + -3.500000;-2.500000;-5.000000;, + -3.500000;-2.500000;-8.000000;, + -3.500000;-5.500000;-8.000000;, + -3.500000;-2.500000;-5.000000;, + -0.500000;-2.500000;-5.000000;, + -0.500000;-2.500000;-8.000000;, + -3.500000;-2.500000;-8.000000;, + -0.500000;-2.500000;-5.000000;, + -0.500000;-5.500000;-5.000000;, + -0.500000;-5.500000;-8.000000;, + -0.500000;-2.500000;-8.000000;, + -0.500000;-5.500000;-8.000000;, + -3.500000;-5.500000;-8.000000;, + -3.500000;-2.500000;-8.000000;, + -0.500000;-2.500000;-8.000000;, + -0.500000;-2.500000;-5.000000;, + -3.500000;-2.500000;-5.000000;, + -3.500000;-5.500000;-5.000000;, + -0.500000;-5.500000;-5.000000;, + -1.000000;-5.000000;-10.000000;, + -3.000000;-5.000000;-10.000000;, + -3.000000;-3.000000;-10.000000;, + -1.000000;-3.000000;-10.000000;, + -1.000000;-3.000000;-8.000000;, + -1.000000;-5.000000;-8.000000;, + -1.000000;-5.000000;-10.000000;, + -1.000000;-3.000000;-10.000000;, + -3.000000;-3.000000;-8.000000;, + -1.000000;-3.000000;-8.000000;, + -1.000000;-3.000000;-10.000000;, + -3.000000;-3.000000;-10.000000;, + -3.000000;-5.000000;-8.000000;, + -3.000000;-3.000000;-8.000000;, + -3.000000;-3.000000;-10.000000;, + -3.000000;-5.000000;-10.000000;, + -1.000000;-5.000000;-8.000000;, + -3.000000;-5.000000;-8.000000;, + -3.000000;-5.000000;-10.000000;, + -1.000000;-5.000000;-10.000000;, + 3.500000; 2.500000;-5.000000;, + 0.500000; 2.500000;-5.000000;, + 0.500000; 2.500000;-8.000000;, + 3.500000; 2.500000;-8.000000;, + 0.500000; 2.500000;-5.000000;, + 0.500000; 5.500000;-5.000000;, + 0.500000; 5.500000;-8.000000;, + 0.500000; 2.500000;-8.000000;, + 0.500000; 5.500000;-5.000000;, + 3.500000; 5.500000;-5.000000;, + 3.500000; 5.500000;-8.000000;, + 0.500000; 5.500000;-8.000000;, + 3.500000; 5.500000;-5.000000;, + 3.500000; 2.500000;-5.000000;, + 3.500000; 2.500000;-8.000000;, + 3.500000; 5.500000;-8.000000;, + 3.500000; 2.500000;-8.000000;, + 0.500000; 2.500000;-8.000000;, + 0.500000; 5.500000;-8.000000;, + 3.500000; 5.500000;-8.000000;, + 3.500000; 5.500000;-5.000000;, + 0.500000; 5.500000;-5.000000;, + 0.500000; 2.500000;-5.000000;, + 3.500000; 2.500000;-5.000000;, + -0.500000; 2.500000;-5.000000;, + -3.500000; 2.500000;-5.000000;, + -3.500000; 2.500000;-8.000000;, + -0.500000; 2.500000;-8.000000;, + 3.000000; 3.000000;-10.000000;, + 1.000000; 3.000000;-10.000000;, + 1.000000; 5.000000;-10.000000;, + 3.000000; 5.000000;-10.000000;, + 3.000000; 5.000000;-8.000000;, + 3.000000; 3.000000;-8.000000;, + 3.000000; 3.000000;-10.000000;, + 3.000000; 5.000000;-10.000000;, + 1.000000; 5.000000;-8.000000;, + 3.000000; 5.000000;-8.000000;, + 3.000000; 5.000000;-10.000000;, + 1.000000; 5.000000;-10.000000;, + 1.000000; 3.000000;-8.000000;, + 1.000000; 5.000000;-8.000000;, + 1.000000; 5.000000;-10.000000;, + 1.000000; 3.000000;-10.000000;, + 3.000000; 3.000000;-8.000000;, + 1.000000; 3.000000;-8.000000;, + 1.000000; 3.000000;-10.000000;, + 3.000000; 3.000000;-10.000000;, + -3.500000; 2.500000;-5.000000;, + -3.500000; 5.500000;-5.000000;, + -3.500000; 5.500000;-8.000000;, + -3.500000; 2.500000;-8.000000;, + -3.500000; 5.500000;-5.000000;, + -0.500000; 5.500000;-5.000000;, + -0.500000; 5.500000;-8.000000;, + -3.500000; 5.500000;-8.000000;, + -0.500000; 5.500000;-5.000000;, + -0.500000; 2.500000;-5.000000;, + -0.500000; 2.500000;-8.000000;, + -0.500000; 5.500000;-8.000000;, + -0.500000; 2.500000;-8.000000;, + -3.500000; 2.500000;-8.000000;, + -3.500000; 5.500000;-8.000000;, + -0.500000; 5.500000;-8.000000;, + -0.500000; 5.500000;-5.000000;, + -3.500000; 5.500000;-5.000000;, + -3.500000; 2.500000;-5.000000;, + -0.500000; 2.500000;-5.000000;, + -1.000000; 3.000000;-10.000000;, + -3.000000; 3.000000;-10.000000;, + -3.000000; 5.000000;-10.000000;, + -1.000000; 5.000000;-10.000000;, + -1.000000; 5.000000;-8.000000;, + -1.000000; 3.000000;-8.000000;, + -1.000000; 3.000000;-10.000000;, + -1.000000; 5.000000;-10.000000;, + -3.000000; 5.000000;-8.000000;, + -1.000000; 5.000000;-8.000000;, + -1.000000; 5.000000;-10.000000;, + -3.000000; 5.000000;-10.000000;, + -3.000000; 3.000000;-8.000000;, + -3.000000; 5.000000;-8.000000;, + -3.000000; 5.000000;-10.000000;, + -3.000000; 3.000000;-10.000000;, + -1.000000; 3.000000;-8.000000;, + -3.000000; 3.000000;-8.000000;, + -3.000000; 3.000000;-10.000000;, + -1.000000; 3.000000;-10.000000;, + 2.000000; 7.000000; 2.000000;, + -2.000000; 7.000000; 2.000000;, + -2.000000; 3.000000; 2.000000;, + 2.000000; 3.000000; 2.000000;, + 2.000000; 3.000000;-2.000000;, + -2.000000; 3.000000;-2.000000;, + -2.000000; 7.000000;-2.000000;, + 2.000000; 7.000000;-2.000000;, + 2.000000; 7.000000; 2.000000;, + 2.000000; 3.000000; 2.000000;, + 2.000000; 3.000000;-2.000000;, + 2.000000; 7.000000;-2.000000;, + -2.000000; 7.000000; 2.000000;, + 2.000000; 7.000000; 2.000000;, + 2.000000; 7.000000;-2.000000;, + -2.000000; 7.000000;-2.000000;, + -2.000000; 3.000000; 2.000000;, + -2.000000; 7.000000; 2.000000;, + -2.000000; 7.000000;-2.000000;, + -2.000000; 3.000000;-2.000000;, + 2.000000; 3.000000; 2.000000;, + -2.000000; 3.000000; 2.000000;, + -2.000000; 3.000000;-2.000000;, + 2.000000; 3.000000;-2.000000;; + 56; + 4;3,2,1,0;, + 4;7,6,5,4;, + 4;11,10,9,8;, + 4;15,14,13,12;, + 4;19,18,17,16;, + 4;23,22,21,20;, + 4;27,26,25,24;, + 4;31,30,29,28;, + 4;35,34,33,32;, + 4;39,38,37,36;, + 4;43,42,41,40;, + 4;47,46,45,44;, + 4;51,50,49,48;, + 4;55,54,53,52;, + 4;59,58,57,56;, + 4;63,62,61,60;, + 4;67,66,65,64;, + 4;71,70,69,68;, + 4;75,74,73,72;, + 4;79,78,77,76;, + 4;83,82,81,80;, + 4;87,86,85,84;, + 4;91,90,89,88;, + 4;95,94,93,92;, + 4;99,98,97,96;, + 4;103,102,101,100;, + 4;107,106,105,104;, + 4;111,110,109,108;, + 4;115,114,113,112;, + 4;119,118,117,116;, + 4;123,122,121,120;, + 4;127,126,125,124;, + 4;131,130,129,128;, + 4;135,134,133,132;, + 4;139,138,137,136;, + 4;143,142,141,140;, + 4;147,146,145,144;, + 4;151,150,149,148;, + 4;155,154,153,152;, + 4;159,158,157,156;, + 4;163,162,161,160;, + 4;167,166,165,164;, + 4;171,170,169,168;, + 4;175,174,173,172;, + 4;179,178,177,176;, + 4;183,182,181,180;, + 4;187,186,185,184;, + 4;191,190,189,188;, + 4;195,194,193,192;, + 4;199,198,197,196;, + 4;203,202,201,200;, + 4;207,206,205,204;, + 4;211,210,209,208;, + 4;215,214,213,212;, + 4;219,218,217,216;, + 4;223,222,221,220;; + MeshNormals { // mob normals + 56; + 0.000000;-1.000000; 0.000000;, + -1.000000;-0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + -0.000000; 1.000000; 0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + -0.000000; 1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000;-0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000;-0.000000;-1.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;, + 0.000000;-0.000000; 1.000000;, + 0.000000;-0.000000;-1.000000;, + 1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000; 0.000000;; + 56; + 4;0,0,0,0;, + 4;1,1,1,1;, + 4;2,2,2,2;, + 4;3,3,3,3;, + 4;4,4,4,4;, + 4;5,5,5,5;, + 4;6,6,6,6;, + 4;7,7,7,7;, + 4;8,8,8,8;, + 4;9,9,9,9;, + 4;10,10,10,10;, + 4;11,11,11,11;, + 4;12,12,12,12;, + 4;13,13,13,13;, + 4;14,14,14,14;, + 4;15,15,15,15;, + 4;16,16,16,16;, + 4;17,17,17,17;, + 4;18,18,18,18;, + 4;19,19,19,19;, + 4;20,20,20,20;, + 4;21,21,21,21;, + 4;22,22,22,22;, + 4;23,23,23,23;, + 4;24,24,24,24;, + 4;25,25,25,25;, + 4;26,26,26,26;, + 4;27,27,27,27;, + 4;28,28,28,28;, + 4;29,29,29,29;, + 4;30,30,30,30;, + 4;31,31,31,31;, + 4;32,32,32,32;, + 4;33,33,33,33;, + 4;34,34,34,34;, + 4;35,35,35,35;, + 4;36,36,36,36;, + 4;37,37,37,37;, + 4;38,38,38,38;, + 4;39,39,39,39;, + 4;40,40,40,40;, + 4;41,41,41,41;, + 4;42,42,42,42;, + 4;43,43,43,43;, + 4;44,44,44,44;, + 4;45,45,45,45;, + 4;46,46,46,46;, + 4;47,47,47,47;, + 4;48,48,48,48;, + 4;49,49,49,49;, + 4;50,50,50,50;, + 4;51,51,51,51;, + 4;52,52,52,52;, + 4;53,53,53,53;, + 4;54,54,54,54;, + 4;55,55,55,55;; + } // End of mob normals + MeshTextureCoords { // mob UV coordinates + 224; + 1.000000; 0.500000;, + 0.750000; 0.500000;, + 0.750000; 1.000000;, + 1.000000; 1.000000;, + 0.125000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 1.000000;, + 0.125000; 1.000000;, + 0.750000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 1.000000;, + 0.750000; 1.000000;, + 0.500000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 1.000000;, + 0.500000; 1.000000;, + 0.125000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 0.000000;, + 0.125000; 0.000000;, + 0.125000; 0.500000;, + 0.500000; 0.500000;, + 0.500000; 0.000000;, + 0.125000; 0.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 0.500000;, + 0.000000; 0.500000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.250000;, + 0.125000; 0.250000;, + 0.125000; 0.000000;, + 0.000000; 0.000000;, + 0.000000; 0.500000;, + 0.125000; 0.500000;, + 0.125000; 0.250000;, + 0.000000; 0.250000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.750000;, + 0.125000; 0.750000;, + 0.125000; 1.000000;, + 0.000000; 1.000000;, + 0.500000; 0.250000;, + 0.625000; 0.250000;, + 0.625000; 0.000000;, + 0.500000; 0.000000;, + 0.875000; 0.500000;, + 1.000000; 0.500000;, + 1.000000; 0.250000;, + 0.875000; 0.250000;, + 0.875000; 0.000000;, + 0.750000; 0.000000;, + 0.750000; 0.250000;, + 0.875000; 0.250000;, + 0.875000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 0.250000;, + 0.875000; 0.250000;, + 0.750000; 0.000000;, + 0.875000; 0.000000;, + 0.875000; 0.250000;, + 0.750000; 0.250000;, + 0.625000; 0.250000;, + 0.750000; 0.250000;, + 0.750000; 0.000000;, + 0.625000; 0.000000;; + } // End of mob UV coordinates + XSkinMeshHeader { + 1; + 3; + 6; + } + SkinWeights { + "mob_armature_rl_leg"; + 44; + 48, + 49, + 50, + 51, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + 0.200000,-0.500000, 0.400000, 1.000000;; + } // End of mob_armature_rl_leg skin weights + SkinWeights { + "mob_armature_rr_leg"; + 44; + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + -0.200000,-0.500000, 0.400000, 1.000000;; + } // End of mob_armature_rr_leg skin weights + SkinWeights { + "mob_armature_head"; + 24; + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.100000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.500000, 0.000000, 1.000000;; + } // End of mob_armature_head skin weights + SkinWeights { + "mob_armature_fr_leg"; + 44; + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + -0.200000,-0.500000,-0.400000, 1.000000;; + } // End of mob_armature_fr_leg skin weights + SkinWeights { + "mob_armature_body"; + 24; + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000,-0.100000, 0.000000, + 0.000000, 0.100000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } // End of mob_armature_body skin weights + SkinWeights { + "mob_armature_fl_leg"; + 44; + 136, + 137, + 138, + 139, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199; + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000, + 1.000000; + 0.100000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.100000, 0.000000, + 0.000000,-0.100000, 0.000000, 0.000000, + 0.200000,-0.500000,-0.400000, 1.000000;; + } // End of mob_armature_fl_leg skin weights + } // End of mob mesh + } // End of mob + } // End of mob_armature +} // End of Root +AnimationSet Global { + Animation { + {mob} + AnimationKey { // Rotation + 0; + 81; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 0.100000, 0.100000, 0.100000;;, + 1;3; 0.100000, 0.100000, 0.100000;;, + 2;3; 0.100000, 0.100000, 0.100000;;, + 3;3; 0.100000, 0.100000, 0.100000;;, + 4;3; 0.100000, 0.100000, 0.100000;;, + 5;3; 0.100000, 0.100000, 0.100000;;, + 6;3; 0.100000, 0.100000, 0.100000;;, + 7;3; 0.100000, 0.100000, 0.100000;;, + 8;3; 0.100000, 0.100000, 0.100000;;, + 9;3; 0.100000, 0.100000, 0.100000;;, + 10;3; 0.100000, 0.100000, 0.100000;;, + 11;3; 0.100000, 0.100000, 0.100000;;, + 12;3; 0.100000, 0.100000, 0.100000;;, + 13;3; 0.100000, 0.100000, 0.100000;;, + 14;3; 0.100000, 0.100000, 0.100000;;, + 15;3; 0.100000, 0.100000, 0.100000;;, + 16;3; 0.100000, 0.100000, 0.100000;;, + 17;3; 0.100000, 0.100000, 0.100000;;, + 18;3; 0.100000, 0.100000, 0.100000;;, + 19;3; 0.100000, 0.100000, 0.100000;;, + 20;3; 0.100000, 0.100000, 0.100000;;, + 21;3; 0.100000, 0.100000, 0.100000;;, + 22;3; 0.100000, 0.100000, 0.100000;;, + 23;3; 0.100000, 0.100000, 0.100000;;, + 24;3; 0.100000, 0.100000, 0.100000;;, + 25;3; 0.100000, 0.100000, 0.100000;;, + 26;3; 0.100000, 0.100000, 0.100000;;, + 27;3; 0.100000, 0.100000, 0.100000;;, + 28;3; 0.100000, 0.100000, 0.100000;;, + 29;3; 0.100000, 0.100000, 0.100000;;, + 30;3; 0.100000, 0.100000, 0.100000;;, + 31;3; 0.100000, 0.100000, 0.100000;;, + 32;3; 0.100000, 0.100000, 0.100000;;, + 33;3; 0.100000, 0.100000, 0.100000;;, + 34;3; 0.100000, 0.100000, 0.100000;;, + 35;3; 0.100000, 0.100000, 0.100000;;, + 36;3; 0.100000, 0.100000, 0.100000;;, + 37;3; 0.100000, 0.100000, 0.100000;;, + 38;3; 0.100000, 0.100000, 0.100000;;, + 39;3; 0.100000, 0.100000, 0.100000;;, + 40;3; 0.100000, 0.100000, 0.100000;;, + 41;3; 0.100000, 0.100000, 0.100000;;, + 42;3; 0.100000, 0.100000, 0.100000;;, + 43;3; 0.100000, 0.100000, 0.100000;;, + 44;3; 0.100000, 0.100000, 0.100000;;, + 45;3; 0.100000, 0.100000, 0.100000;;, + 46;3; 0.100000, 0.100000, 0.100000;;, + 47;3; 0.100000, 0.100000, 0.100000;;, + 48;3; 0.100000, 0.100000, 0.100000;;, + 49;3; 0.100000, 0.100000, 0.100000;;, + 50;3; 0.100000, 0.100000, 0.100000;;, + 51;3; 0.100000, 0.100000, 0.100000;;, + 52;3; 0.100000, 0.100000, 0.100000;;, + 53;3; 0.100000, 0.100000, 0.100000;;, + 54;3; 0.100000, 0.100000, 0.100000;;, + 55;3; 0.100000, 0.100000, 0.100000;;, + 56;3; 0.100000, 0.100000, 0.100000;;, + 57;3; 0.100000, 0.100000, 0.100000;;, + 58;3; 0.100000, 0.100000, 0.100000;;, + 59;3; 0.100000, 0.100000, 0.100000;;, + 60;3; 0.100000, 0.100000, 0.100000;;, + 61;3; 0.100000, 0.100000, 0.100000;;, + 62;3; 0.100000, 0.100000, 0.100000;;, + 63;3; 0.100000, 0.100000, 0.100000;;, + 64;3; 0.100000, 0.100000, 0.100000;;, + 65;3; 0.100000, 0.100000, 0.100000;;, + 66;3; 0.100000, 0.100000, 0.100000;;, + 67;3; 0.100000, 0.100000, 0.100000;;, + 68;3; 0.100000, 0.100000, 0.100000;;, + 69;3; 0.100000, 0.100000, 0.100000;;, + 70;3; 0.100000, 0.100000, 0.100000;;, + 71;3; 0.100000, 0.100000, 0.100000;;, + 72;3; 0.100000, 0.100000, 0.100000;;, + 73;3; 0.100000, 0.100000, 0.100000;;, + 74;3; 0.100000, 0.100000, 0.100000;;, + 75;3; 0.100000, 0.100000, 0.100000;;, + 76;3; 0.100000, 0.100000, 0.100000;;, + 77;3; 0.100000, 0.100000, 0.100000;;, + 78;3; 0.100000, 0.100000, 0.100000;;, + 79;3; 0.100000, 0.100000, 0.100000;;, + 80;3; 0.100000, 0.100000, 0.100000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature} + AnimationKey { // Rotation + 0; + 81; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 12;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 13;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 14;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 15;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 16;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 17;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 18;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 19;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 20;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 21;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 22;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 23;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 24;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 25;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 26;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 27;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 28;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 29;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 30;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 31;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 32;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 33;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 34;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 35;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 36;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 37;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 38;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 39;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 40;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 41;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 42;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 43;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 44;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 45;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 46;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 47;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 48;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 49;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 50;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 51;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 52;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 53;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 54;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 55;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 56;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 57;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 58;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 59;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 63;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 64;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 65;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 66;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 67;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 68;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 69;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 70;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 71;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 72;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 73;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 74;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 75;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3;10.000000,10.000000,10.000000;;, + 1;3;10.000000,10.000000,10.000000;;, + 2;3;10.000000,10.000000,10.000000;;, + 3;3;10.000000,10.000000,10.000000;;, + 4;3;10.000000,10.000000,10.000000;;, + 5;3;10.000000,10.000000,10.000000;;, + 6;3;10.000000,10.000000,10.000000;;, + 7;3;10.000000,10.000000,10.000000;;, + 8;3;10.000000,10.000000,10.000000;;, + 9;3;10.000000,10.000000,10.000000;;, + 10;3;10.000000,10.000000,10.000000;;, + 11;3;10.000000,10.000000,10.000000;;, + 12;3;10.000000,10.000000,10.000000;;, + 13;3;10.000000,10.000000,10.000000;;, + 14;3;10.000000,10.000000,10.000000;;, + 15;3;10.000000,10.000000,10.000000;;, + 16;3;10.000000,10.000000,10.000000;;, + 17;3;10.000000,10.000000,10.000000;;, + 18;3;10.000000,10.000000,10.000000;;, + 19;3;10.000000,10.000000,10.000000;;, + 20;3;10.000000,10.000000,10.000000;;, + 21;3;10.000000,10.000000,10.000000;;, + 22;3;10.000000,10.000000,10.000000;;, + 23;3;10.000000,10.000000,10.000000;;, + 24;3;10.000000,10.000000,10.000000;;, + 25;3;10.000000,10.000000,10.000000;;, + 26;3;10.000000,10.000000,10.000000;;, + 27;3;10.000000,10.000000,10.000000;;, + 28;3;10.000000,10.000000,10.000000;;, + 29;3;10.000000,10.000000,10.000000;;, + 30;3;10.000000,10.000000,10.000000;;, + 31;3;10.000000,10.000000,10.000000;;, + 32;3;10.000000,10.000000,10.000000;;, + 33;3;10.000000,10.000000,10.000000;;, + 34;3;10.000000,10.000000,10.000000;;, + 35;3;10.000000,10.000000,10.000000;;, + 36;3;10.000000,10.000000,10.000000;;, + 37;3;10.000000,10.000000,10.000000;;, + 38;3;10.000000,10.000000,10.000000;;, + 39;3;10.000000,10.000000,10.000000;;, + 40;3;10.000000,10.000000,10.000000;;, + 41;3;10.000000,10.000000,10.000000;;, + 42;3;10.000000,10.000000,10.000000;;, + 43;3;10.000000,10.000000,10.000000;;, + 44;3;10.000000,10.000000,10.000000;;, + 45;3;10.000000,10.000000,10.000000;;, + 46;3;10.000000,10.000000,10.000000;;, + 47;3;10.000000,10.000000,10.000000;;, + 48;3;10.000000,10.000000,10.000000;;, + 49;3;10.000000,10.000000,10.000000;;, + 50;3;10.000000,10.000000,10.000000;;, + 51;3;10.000000,10.000000,10.000000;;, + 52;3;10.000000,10.000000,10.000000;;, + 53;3;10.000000,10.000000,10.000000;;, + 54;3;10.000000,10.000000,10.000000;;, + 55;3;10.000000,10.000000,10.000000;;, + 56;3;10.000000,10.000000,10.000000;;, + 57;3;10.000000,10.000000,10.000000;;, + 58;3;10.000000,10.000000,10.000000;;, + 59;3;10.000000,10.000000,10.000000;;, + 60;3;10.000000,10.000000,10.000000;;, + 61;3;10.000000,10.000000,10.000000;;, + 62;3;10.000000,10.000000,10.000000;;, + 63;3;10.000000,10.000000,10.000000;;, + 64;3;10.000000,10.000000,10.000000;;, + 65;3;10.000000,10.000000,10.000000;;, + 66;3;10.000000,10.000000,10.000000;;, + 67;3;10.000000,10.000000,10.000000;;, + 68;3;10.000000,10.000000,10.000000;;, + 69;3;10.000000,10.000000,10.000000;;, + 70;3;10.000000,10.000000,10.000000;;, + 71;3;10.000000,10.000000,10.000000;;, + 72;3;10.000000,10.000000,10.000000;;, + 73;3;10.000000,10.000000,10.000000;;, + 74;3;10.000000,10.000000,10.000000;;, + 75;3;10.000000,10.000000,10.000000;;, + 76;3;10.000000,10.000000,10.000000;;, + 77;3;10.000000,10.000000,10.000000;;, + 78;3;10.000000,10.000000,10.000000;;, + 79;3;10.000000,10.000000,10.000000;;, + 80;3;10.000000,10.000000,10.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature_body} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 62;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 63;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 64;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 65;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 66;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 67;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 68;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 69;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 70;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 71;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 72;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 73;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 74;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 75;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 76;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 77;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 78;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 79;4;-0.707107, 0.707107, 0.000000, 0.000000;;, + 80;4;-0.707107, 0.707107, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.000000, 0.000000;;, + 1;3; 0.000000, 0.000000, 0.000000;;, + 2;3; 0.000000, 0.000000, 0.000000;;, + 3;3; 0.000000, 0.000000, 0.000000;;, + 4;3; 0.000000, 0.000000, 0.000000;;, + 5;3; 0.000000, 0.000000, 0.000000;;, + 6;3; 0.000000, 0.000000, 0.000000;;, + 7;3; 0.000000, 0.000000, 0.000000;;, + 8;3; 0.000000, 0.000000, 0.000000;;, + 9;3; 0.000000, 0.000000, 0.000000;;, + 10;3; 0.000000, 0.000000, 0.000000;;, + 11;3; 0.000000, 0.000000, 0.000000;;, + 12;3; 0.000000, 0.000000, 0.000000;;, + 13;3; 0.000000, 0.000000, 0.000000;;, + 14;3; 0.000000, 0.000000, 0.000000;;, + 15;3; 0.000000, 0.000000, 0.000000;;, + 16;3; 0.000000, 0.000000, 0.000000;;, + 17;3; 0.000000, 0.000000, 0.000000;;, + 18;3; 0.000000, 0.000000, 0.000000;;, + 19;3; 0.000000, 0.000000, 0.000000;;, + 20;3; 0.000000, 0.000000, 0.000000;;, + 21;3; 0.000000, 0.000000, 0.000000;;, + 22;3; 0.000000, 0.000000, 0.000000;;, + 23;3; 0.000000, 0.000000, 0.000000;;, + 24;3; 0.000000, 0.000000, 0.000000;;, + 25;3; 0.000000, 0.000000, 0.000000;;, + 26;3; 0.000000, 0.000000, 0.000000;;, + 27;3; 0.000000, 0.000000, 0.000000;;, + 28;3; 0.000000, 0.000000, 0.000000;;, + 29;3; 0.000000, 0.000000, 0.000000;;, + 30;3; 0.000000, 0.000000, 0.000000;;, + 31;3; 0.000000, 0.000000, 0.000000;;, + 32;3; 0.000000, 0.000000, 0.000000;;, + 33;3; 0.000000, 0.000000, 0.000000;;, + 34;3; 0.000000, 0.000000, 0.000000;;, + 35;3; 0.000000, 0.000000, 0.000000;;, + 36;3; 0.000000, 0.000000, 0.000000;;, + 37;3; 0.000000, 0.000000, 0.000000;;, + 38;3; 0.000000, 0.000000, 0.000000;;, + 39;3; 0.000000, 0.000000, 0.000000;;, + 40;3; 0.000000, 0.000000, 0.000000;;, + 41;3; 0.000000, 0.000000, 0.000000;;, + 42;3; 0.000000, 0.000000, 0.000000;;, + 43;3; 0.000000, 0.000000, 0.000000;;, + 44;3; 0.000000, 0.000000, 0.000000;;, + 45;3; 0.000000, 0.000000, 0.000000;;, + 46;3; 0.000000, 0.000000, 0.000000;;, + 47;3; 0.000000, 0.000000, 0.000000;;, + 48;3; 0.000000, 0.000000, 0.000000;;, + 49;3; 0.000000, 0.000000, 0.000000;;, + 50;3; 0.000000, 0.000000, 0.000000;;, + 51;3; 0.000000, 0.000000, 0.000000;;, + 52;3; 0.000000, 0.000000, 0.000000;;, + 53;3; 0.000000, 0.000000, 0.000000;;, + 54;3; 0.000000, 0.000000, 0.000000;;, + 55;3; 0.000000, 0.000000, 0.000000;;, + 56;3; 0.000000, 0.000000, 0.000000;;, + 57;3; 0.000000, 0.000000, 0.000000;;, + 58;3; 0.000000, 0.000000, 0.000000;;, + 59;3; 0.000000, 0.000000, 0.000000;;, + 60;3; 0.000000, 0.000000, 0.000000;;, + 61;3; 0.000000, 0.000000, 0.000000;;, + 62;3; 0.000000, 0.000000, 0.000000;;, + 63;3; 0.000000, 0.000000, 0.000000;;, + 64;3; 0.000000, 0.000000, 0.000000;;, + 65;3; 0.000000, 0.000000, 0.000000;;, + 66;3; 0.000000, 0.000000, 0.000000;;, + 67;3; 0.000000, 0.000000, 0.000000;;, + 68;3; 0.000000, 0.000000, 0.000000;;, + 69;3; 0.000000, 0.000000, 0.000000;;, + 70;3; 0.000000, 0.000000, 0.000000;;, + 71;3; 0.000000, 0.000000, 0.000000;;, + 72;3; 0.000000, 0.000000, 0.000000;;, + 73;3; 0.000000, 0.000000, 0.000000;;, + 74;3; 0.000000, 0.000000, 0.000000;;, + 75;3; 0.000000, 0.000000, 0.000000;;, + 76;3; 0.000000, 0.000000, 0.000000;;, + 77;3; 0.000000, 0.000000, 0.000000;;, + 78;3; 0.000000, 0.000000, 0.000000;;, + 79;3; 0.000000, 0.000000, 0.000000;;, + 80;3; 0.000000, 0.000000, 0.000000;;; + } + } + Animation { + {mob_armature_head} + AnimationKey { // Rotation + 0; + 81; + 0;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 1;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 2;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 3;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 4;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 5;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 6;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 7;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 8;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 9;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 10;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 11;4;-0.999663,-0.003850,-0.000000, 0.000000;;, + 12;4;-0.998650,-0.015436,-0.000000, 0.000000;;, + 13;4;-0.997001,-0.034274,-0.000000, 0.000000;;, + 14;4;-0.994846,-0.058913,-0.000000, 0.000000;;, + 15;4;-0.992404,-0.086825,-0.000000, 0.000000;;, + 16;4;-0.989962,-0.114736,-0.000000, 0.000000;;, + 17;4;-0.987806,-0.139375,-0.000000, 0.000000;;, + 18;4;-0.986158,-0.158212,-0.000000, 0.000000;;, + 19;4;-0.985145,-0.169798,-0.000000, 0.000000;;, + 20;4;-0.984808,-0.173648,-0.000000, 0.000000;;, + 21;4;-0.984907,-0.173618,-0.000000, 0.000000;;, + 22;4;-0.985214,-0.173381,-0.000000, 0.000000;;, + 23;4;-0.985730,-0.172650,-0.000000, 0.000000;;, + 24;4;-0.986438,-0.171068,-0.000000, 0.000000;;, + 25;4;-0.987293,-0.168258,-0.000000, 0.000000;;, + 26;4;-0.988226,-0.163915,-0.000000, 0.000000;;, + 27;4;-0.989163,-0.157887,-0.000000, 0.000000;;, + 28;4;-0.990038,-0.150198,-0.000000, 0.000000;;, + 29;4;-0.990807,-0.141005,-0.000000, 0.000000;;, + 30;4;-0.991445,-0.130526,-0.000000, 0.000000;;, + 31;4;-0.992041,-0.116177,-0.000000, 0.000000;;, + 32;4;-0.992683,-0.095337,-0.000000, 0.000000;;, + 33;4;-0.993354,-0.068711,-0.000000, 0.000000;;, + 34;4;-0.994023,-0.037915,-0.000000, 0.000000;;, + 35;4;-0.994653,-0.005514,-0.000000, 0.000000;;, + 36;4;-0.995204, 0.025354,-0.000000, 0.000000;;, + 37;4;-0.995644, 0.051703,-0.000000, 0.000000;;, + 38;4;-0.995956, 0.071371,-0.000000, 0.000000;;, + 39;4;-0.996137, 0.083256, 0.000000, 0.000000;;, + 40;4;-0.996195, 0.087156, 0.000000, 0.000000;;, + 41;4;-0.995858, 0.087126, 0.007718, 0.000675;;, + 42;4;-0.994909, 0.087043, 0.029456, 0.002577;;, + 43;4;-0.993690, 0.086937, 0.057368, 0.005019;;, + 44;4;-0.992741, 0.086854, 0.079106, 0.006921;;, + 45;4;-0.992404, 0.086824, 0.086824, 0.007596;;, + 46;4;-0.992404, 0.086824, 0.071388, 0.006246;;, + 47;4;-0.992404, 0.086824, 0.027911, 0.002442;;, + 48;4;-0.992404, 0.086824,-0.027911,-0.002442;;, + 49;4;-0.992404, 0.086824,-0.071388,-0.006246;;, + 50;4;-0.992404, 0.086824,-0.086824,-0.007596;;, + 51;4;-0.992618, 0.086854,-0.079106,-0.006921;;, + 52;4;-0.993276, 0.086937,-0.057368,-0.005019;;, + 53;4;-0.994264, 0.087043,-0.029456,-0.002577;;, + 54;4;-0.995313, 0.087126,-0.007718,-0.000675;;, + 55;4;-0.996195, 0.087156, 0.000000,-0.000000;;, + 56;4;-0.997078, 0.079408, 0.000000,-0.000000;;, + 57;4;-0.998131, 0.057587, 0.000000,-0.000000;;, + 58;4;-0.999123, 0.029569, 0.000000,-0.000000;;, + 59;4;-0.999784, 0.007747, 0.000000,-0.000000;;, + 60;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 61;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 62;4;-0.999915, 0.000000, 0.003877, 0.000000;;, + 63;4;-0.999677, 0.000000, 0.014798, 0.000000;;, + 64;4;-0.999371, 0.000000, 0.028821, 0.000000;;, + 65;4;-0.999133, 0.000000, 0.039742, 0.000000;;, + 66;4;-0.999048, 0.000000, 0.043619, 0.000000;;, + 67;4;-0.999048, 0.000000, 0.035865, 0.000000;;, + 68;4;-0.999048, 0.000000, 0.014023, 0.000000;;, + 69;4;-0.999048, 0.000000,-0.014023, 0.000000;;, + 70;4;-0.999048, 0.000000,-0.035865, 0.000000;;, + 71;4;-0.999048, 0.000000,-0.043619, 0.000000;;, + 72;4;-0.999133, 0.000000,-0.039742, 0.000000;;, + 73;4;-0.999371, 0.000000,-0.028821, 0.000000;;, + 74;4;-0.999677, 0.000000,-0.014799, 0.000000;;, + 75;4;-0.999915, 0.000000,-0.003877, 0.000000;;, + 76;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 77;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 78;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 79;4;-1.000000, 0.000000, 0.000000, 0.000000;;, + 80;4;-1.000000, 0.000000, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.000000, 0.500000, 0.000000;;, + 1;3; 0.000000, 0.500000, 0.000000;;, + 2;3; 0.000000, 0.500000, 0.000000;;, + 3;3; 0.000000, 0.500000, 0.000000;;, + 4;3; 0.000000, 0.500000, 0.000000;;, + 5;3; 0.000000, 0.500000, 0.000000;;, + 6;3; 0.000000, 0.500000, 0.000000;;, + 7;3; 0.000000, 0.500000, 0.000000;;, + 8;3; 0.000000, 0.500000, 0.000000;;, + 9;3; 0.000000, 0.500000, 0.000000;;, + 10;3; 0.000000, 0.500000, 0.000000;;, + 11;3; 0.000000, 0.500000, 0.000000;;, + 12;3; 0.000000, 0.500000, 0.000000;;, + 13;3; 0.000000, 0.500000, 0.000000;;, + 14;3; 0.000000, 0.500000, 0.000000;;, + 15;3; 0.000000, 0.500000, 0.000000;;, + 16;3; 0.000000, 0.500000, 0.000000;;, + 17;3; 0.000000, 0.500000, 0.000000;;, + 18;3; 0.000000, 0.500000, 0.000000;;, + 19;3; 0.000000, 0.500000, 0.000000;;, + 20;3; 0.000000, 0.500000, 0.000000;;, + 21;3; 0.000000, 0.500000, 0.000000;;, + 22;3; 0.000000, 0.500000, 0.000000;;, + 23;3; 0.000000, 0.500000, 0.000000;;, + 24;3; 0.000000, 0.500000, 0.000000;;, + 25;3; 0.000000, 0.500000, 0.000000;;, + 26;3; 0.000000, 0.500000, 0.000000;;, + 27;3; 0.000000, 0.500000, 0.000000;;, + 28;3; 0.000000, 0.500000, 0.000000;;, + 29;3; 0.000000, 0.500000, 0.000000;;, + 30;3; 0.000000, 0.500000, 0.000000;;, + 31;3; 0.000000, 0.500000, 0.000000;;, + 32;3; 0.000000, 0.500000, 0.000000;;, + 33;3; 0.000000, 0.500000, 0.000000;;, + 34;3; 0.000000, 0.500000, 0.000000;;, + 35;3; 0.000000, 0.500000, 0.000000;;, + 36;3; 0.000000, 0.500000, 0.000000;;, + 37;3; 0.000000, 0.500000, 0.000000;;, + 38;3; 0.000000, 0.500000, 0.000000;;, + 39;3; 0.000000, 0.500000, 0.000000;;, + 40;3; 0.000000, 0.500000, 0.000000;;, + 41;3; 0.000000, 0.500000, 0.000000;;, + 42;3; 0.000000, 0.500000, 0.000000;;, + 43;3; 0.000000, 0.500000, 0.000000;;, + 44;3; 0.000000, 0.500000, 0.000000;;, + 45;3; 0.000000, 0.500000, 0.000000;;, + 46;3; 0.000000, 0.500000, 0.000000;;, + 47;3; 0.000000, 0.500000, 0.000000;;, + 48;3; 0.000000, 0.500000, 0.000000;;, + 49;3; 0.000000, 0.500000, 0.000000;;, + 50;3; 0.000000, 0.500000, 0.000000;;, + 51;3; 0.000000, 0.500000, 0.000000;;, + 52;3; 0.000000, 0.500000, 0.000000;;, + 53;3; 0.000000, 0.500000, 0.000000;;, + 54;3; 0.000000, 0.500000, 0.000000;;, + 55;3; 0.000000, 0.500000, 0.000000;;, + 56;3; 0.000000, 0.500000, 0.000000;;, + 57;3; 0.000000, 0.500000, 0.000000;;, + 58;3; 0.000000, 0.500000, 0.000000;;, + 59;3; 0.000000, 0.500000, 0.000000;;, + 60;3; 0.000000, 0.500000, 0.000000;;, + 61;3; 0.000000, 0.500000, 0.000000;;, + 62;3; 0.000000, 0.500000, 0.000000;;, + 63;3; 0.000000, 0.500000, 0.000000;;, + 64;3; 0.000000, 0.500000, 0.000000;;, + 65;3; 0.000000, 0.500000, 0.000000;;, + 66;3; 0.000000, 0.500000, 0.000000;;, + 67;3; 0.000000, 0.500000, 0.000000;;, + 68;3; 0.000000, 0.500000, 0.000000;;, + 69;3; 0.000000, 0.500000, 0.000000;;, + 70;3; 0.000000, 0.500000, 0.000000;;, + 71;3; 0.000000, 0.500000, 0.000000;;, + 72;3; 0.000000, 0.500000, 0.000000;;, + 73;3; 0.000000, 0.500000, 0.000000;;, + 74;3; 0.000000, 0.500000, 0.000000;;, + 75;3; 0.000000, 0.500000, 0.000000;;, + 76;3; 0.000000, 0.500000, 0.000000;;, + 77;3; 0.000000, 0.500000, 0.000000;;, + 78;3; 0.000000, 0.500000, 0.000000;;, + 79;3; 0.000000, 0.500000, 0.000000;;, + 80;3; 0.000000, 0.500000, 0.000000;;; + } + } + Animation { + {mob_armature_fl_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.701389,-0.712346, 0.000000, 0.000000;;, + 63;4;-0.685285,-0.727103, 0.000000, 0.000000;;, + 64;4;-0.664608,-0.746050, 0.000000, 0.000000;;, + 65;4;-0.648505,-0.760806, 0.000000, 0.000000;;, + 66;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 67;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 68;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 69;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 70;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 73;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 74;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 75;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 76;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 77;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 78;4;-0.755089,-0.653743, 0.000000, 0.000000;;, + 79;4;-0.741719,-0.667113, 0.000000, 0.000000;;, + 80;4;-0.724231,-0.684601, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3;-0.200000, 0.400000,-0.500000;;, + 1;3;-0.200000, 0.400000,-0.500000;;, + 2;3;-0.200000, 0.400000,-0.500000;;, + 3;3;-0.200000, 0.400000,-0.500000;;, + 4;3;-0.200000, 0.400000,-0.500000;;, + 5;3;-0.200000, 0.400000,-0.500000;;, + 6;3;-0.200000, 0.400000,-0.500000;;, + 7;3;-0.200000, 0.400000,-0.500000;;, + 8;3;-0.200000, 0.400000,-0.500000;;, + 9;3;-0.200000, 0.400000,-0.500000;;, + 10;3;-0.200000, 0.400000,-0.500000;;, + 11;3;-0.200000, 0.400000,-0.500000;;, + 12;3;-0.200000, 0.400000,-0.500000;;, + 13;3;-0.200000, 0.400000,-0.500000;;, + 14;3;-0.200000, 0.400000,-0.500000;;, + 15;3;-0.200000, 0.400000,-0.500000;;, + 16;3;-0.200000, 0.400000,-0.500000;;, + 17;3;-0.200000, 0.400000,-0.500000;;, + 18;3;-0.200000, 0.400000,-0.500000;;, + 19;3;-0.200000, 0.400000,-0.500000;;, + 20;3;-0.200000, 0.400000,-0.500000;;, + 21;3;-0.200000, 0.400000,-0.500000;;, + 22;3;-0.200000, 0.400000,-0.500000;;, + 23;3;-0.200000, 0.400000,-0.500000;;, + 24;3;-0.200000, 0.400000,-0.500000;;, + 25;3;-0.200000, 0.400000,-0.500000;;, + 26;3;-0.200000, 0.400000,-0.500000;;, + 27;3;-0.200000, 0.400000,-0.500000;;, + 28;3;-0.200000, 0.400000,-0.500000;;, + 29;3;-0.200000, 0.400000,-0.500000;;, + 30;3;-0.200000, 0.400000,-0.500000;;, + 31;3;-0.200000, 0.400000,-0.500000;;, + 32;3;-0.200000, 0.400000,-0.500000;;, + 33;3;-0.200000, 0.400000,-0.500000;;, + 34;3;-0.200000, 0.400000,-0.500000;;, + 35;3;-0.200000, 0.400000,-0.500000;;, + 36;3;-0.200000, 0.400000,-0.500000;;, + 37;3;-0.200000, 0.400000,-0.500000;;, + 38;3;-0.200000, 0.400000,-0.500000;;, + 39;3;-0.200000, 0.400000,-0.500000;;, + 40;3;-0.200000, 0.400000,-0.500000;;, + 41;3;-0.200000, 0.400000,-0.500000;;, + 42;3;-0.200000, 0.400000,-0.500000;;, + 43;3;-0.200000, 0.400000,-0.500000;;, + 44;3;-0.200000, 0.400000,-0.500000;;, + 45;3;-0.200000, 0.400000,-0.500000;;, + 46;3;-0.200000, 0.400000,-0.500000;;, + 47;3;-0.200000, 0.400000,-0.500000;;, + 48;3;-0.200000, 0.400000,-0.500000;;, + 49;3;-0.200000, 0.400000,-0.500000;;, + 50;3;-0.200000, 0.400000,-0.500000;;, + 51;3;-0.200000, 0.400000,-0.500000;;, + 52;3;-0.200000, 0.400000,-0.500000;;, + 53;3;-0.200000, 0.400000,-0.500000;;, + 54;3;-0.200000, 0.400000,-0.500000;;, + 55;3;-0.200000, 0.400000,-0.500000;;, + 56;3;-0.200000, 0.400000,-0.500000;;, + 57;3;-0.200000, 0.400000,-0.500000;;, + 58;3;-0.200000, 0.400000,-0.500000;;, + 59;3;-0.200000, 0.400000,-0.500000;;, + 60;3;-0.200000, 0.400000,-0.500000;;, + 61;3;-0.200000, 0.400000,-0.500000;;, + 62;3;-0.200000, 0.400000,-0.500000;;, + 63;3;-0.200000, 0.400000,-0.500000;;, + 64;3;-0.200000, 0.400000,-0.500000;;, + 65;3;-0.200000, 0.400000,-0.500000;;, + 66;3;-0.200000, 0.400000,-0.500000;;, + 67;3;-0.200000, 0.400000,-0.500000;;, + 68;3;-0.200000, 0.400000,-0.500000;;, + 69;3;-0.200000, 0.400000,-0.500000;;, + 70;3;-0.200000, 0.400000,-0.500000;;, + 71;3;-0.200000, 0.400000,-0.500000;;, + 72;3;-0.200000, 0.400000,-0.500000;;, + 73;3;-0.200000, 0.400000,-0.500000;;, + 74;3;-0.200000, 0.400000,-0.500000;;, + 75;3;-0.200000, 0.400000,-0.500000;;, + 76;3;-0.200000, 0.400000,-0.500000;;, + 77;3;-0.200000, 0.400000,-0.500000;;, + 78;3;-0.200000, 0.400000,-0.500000;;, + 79;3;-0.200000, 0.400000,-0.500000;;, + 80;3;-0.200000, 0.400000,-0.500000;;; + } + } + Animation { + {mob_armature_fr_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.712346,-0.701389, 0.000000, 0.000000;;, + 63;4;-0.727103,-0.685285, 0.000000, 0.000000;;, + 64;4;-0.746050,-0.664608, 0.000000, 0.000000;;, + 65;4;-0.760806,-0.648505, 0.000000, 0.000000;;, + 66;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 67;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 68;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 69;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 70;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 73;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 74;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 75;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 76;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 77;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 78;4;-0.653743,-0.755089, 0.000000, 0.000000;;, + 79;4;-0.667113,-0.741719, 0.000000, 0.000000;;, + 80;4;-0.684601,-0.724231, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.200000, 0.400000,-0.500000;;, + 1;3; 0.200000, 0.400000,-0.500000;;, + 2;3; 0.200000, 0.400000,-0.500000;;, + 3;3; 0.200000, 0.400000,-0.500000;;, + 4;3; 0.200000, 0.400000,-0.500000;;, + 5;3; 0.200000, 0.400000,-0.500000;;, + 6;3; 0.200000, 0.400000,-0.500000;;, + 7;3; 0.200000, 0.400000,-0.500000;;, + 8;3; 0.200000, 0.400000,-0.500000;;, + 9;3; 0.200000, 0.400000,-0.500000;;, + 10;3; 0.200000, 0.400000,-0.500000;;, + 11;3; 0.200000, 0.400000,-0.500000;;, + 12;3; 0.200000, 0.400000,-0.500000;;, + 13;3; 0.200000, 0.400000,-0.500000;;, + 14;3; 0.200000, 0.400000,-0.500000;;, + 15;3; 0.200000, 0.400000,-0.500000;;, + 16;3; 0.200000, 0.400000,-0.500000;;, + 17;3; 0.200000, 0.400000,-0.500000;;, + 18;3; 0.200000, 0.400000,-0.500000;;, + 19;3; 0.200000, 0.400000,-0.500000;;, + 20;3; 0.200000, 0.400000,-0.500000;;, + 21;3; 0.200000, 0.400000,-0.500000;;, + 22;3; 0.200000, 0.400000,-0.500000;;, + 23;3; 0.200000, 0.400000,-0.500000;;, + 24;3; 0.200000, 0.400000,-0.500000;;, + 25;3; 0.200000, 0.400000,-0.500000;;, + 26;3; 0.200000, 0.400000,-0.500000;;, + 27;3; 0.200000, 0.400000,-0.500000;;, + 28;3; 0.200000, 0.400000,-0.500000;;, + 29;3; 0.200000, 0.400000,-0.500000;;, + 30;3; 0.200000, 0.400000,-0.500000;;, + 31;3; 0.200000, 0.400000,-0.500000;;, + 32;3; 0.200000, 0.400000,-0.500000;;, + 33;3; 0.200000, 0.400000,-0.500000;;, + 34;3; 0.200000, 0.400000,-0.500000;;, + 35;3; 0.200000, 0.400000,-0.500000;;, + 36;3; 0.200000, 0.400000,-0.500000;;, + 37;3; 0.200000, 0.400000,-0.500000;;, + 38;3; 0.200000, 0.400000,-0.500000;;, + 39;3; 0.200000, 0.400000,-0.500000;;, + 40;3; 0.200000, 0.400000,-0.500000;;, + 41;3; 0.200000, 0.400000,-0.500000;;, + 42;3; 0.200000, 0.400000,-0.500000;;, + 43;3; 0.200000, 0.400000,-0.500000;;, + 44;3; 0.200000, 0.400000,-0.500000;;, + 45;3; 0.200000, 0.400000,-0.500000;;, + 46;3; 0.200000, 0.400000,-0.500000;;, + 47;3; 0.200000, 0.400000,-0.500000;;, + 48;3; 0.200000, 0.400000,-0.500000;;, + 49;3; 0.200000, 0.400000,-0.500000;;, + 50;3; 0.200000, 0.400000,-0.500000;;, + 51;3; 0.200000, 0.400000,-0.500000;;, + 52;3; 0.200000, 0.400000,-0.500000;;, + 53;3; 0.200000, 0.400000,-0.500000;;, + 54;3; 0.200000, 0.400000,-0.500000;;, + 55;3; 0.200000, 0.400000,-0.500000;;, + 56;3; 0.200000, 0.400000,-0.500000;;, + 57;3; 0.200000, 0.400000,-0.500000;;, + 58;3; 0.200000, 0.400000,-0.500000;;, + 59;3; 0.200000, 0.400000,-0.500000;;, + 60;3; 0.200000, 0.400000,-0.500000;;, + 61;3; 0.200000, 0.400000,-0.500000;;, + 62;3; 0.200000, 0.400000,-0.500000;;, + 63;3; 0.200000, 0.400000,-0.500000;;, + 64;3; 0.200000, 0.400000,-0.500000;;, + 65;3; 0.200000, 0.400000,-0.500000;;, + 66;3; 0.200000, 0.400000,-0.500000;;, + 67;3; 0.200000, 0.400000,-0.500000;;, + 68;3; 0.200000, 0.400000,-0.500000;;, + 69;3; 0.200000, 0.400000,-0.500000;;, + 70;3; 0.200000, 0.400000,-0.500000;;, + 71;3; 0.200000, 0.400000,-0.500000;;, + 72;3; 0.200000, 0.400000,-0.500000;;, + 73;3; 0.200000, 0.400000,-0.500000;;, + 74;3; 0.200000, 0.400000,-0.500000;;, + 75;3; 0.200000, 0.400000,-0.500000;;, + 76;3; 0.200000, 0.400000,-0.500000;;, + 77;3; 0.200000, 0.400000,-0.500000;;, + 78;3; 0.200000, 0.400000,-0.500000;;, + 79;3; 0.200000, 0.400000,-0.500000;;, + 80;3; 0.200000, 0.400000,-0.500000;;; + } + } + Animation { + {mob_armature_rr_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.701389,-0.712346, 0.000000, 0.000000;;, + 63;4;-0.685285,-0.727103, 0.000000, 0.000000;;, + 64;4;-0.664608,-0.746050, 0.000000, 0.000000;;, + 65;4;-0.648505,-0.760806, 0.000000, 0.000000;;, + 66;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 67;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 68;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 69;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 70;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 73;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 74;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 75;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 76;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 77;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 78;4;-0.755089,-0.653743, 0.000000, 0.000000;;, + 79;4;-0.741719,-0.667113, 0.000000, 0.000000;;, + 80;4;-0.724231,-0.684601, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3; 0.200000,-0.400000,-0.500000;;, + 1;3; 0.200000,-0.400000,-0.500000;;, + 2;3; 0.200000,-0.400000,-0.500000;;, + 3;3; 0.200000,-0.400000,-0.500000;;, + 4;3; 0.200000,-0.400000,-0.500000;;, + 5;3; 0.200000,-0.400000,-0.500000;;, + 6;3; 0.200000,-0.400000,-0.500000;;, + 7;3; 0.200000,-0.400000,-0.500000;;, + 8;3; 0.200000,-0.400000,-0.500000;;, + 9;3; 0.200000,-0.400000,-0.500000;;, + 10;3; 0.200000,-0.400000,-0.500000;;, + 11;3; 0.200000,-0.400000,-0.500000;;, + 12;3; 0.200000,-0.400000,-0.500000;;, + 13;3; 0.200000,-0.400000,-0.500000;;, + 14;3; 0.200000,-0.400000,-0.500000;;, + 15;3; 0.200000,-0.400000,-0.500000;;, + 16;3; 0.200000,-0.400000,-0.500000;;, + 17;3; 0.200000,-0.400000,-0.500000;;, + 18;3; 0.200000,-0.400000,-0.500000;;, + 19;3; 0.200000,-0.400000,-0.500000;;, + 20;3; 0.200000,-0.400000,-0.500000;;, + 21;3; 0.200000,-0.400000,-0.500000;;, + 22;3; 0.200000,-0.400000,-0.500000;;, + 23;3; 0.200000,-0.400000,-0.500000;;, + 24;3; 0.200000,-0.400000,-0.500000;;, + 25;3; 0.200000,-0.400000,-0.500000;;, + 26;3; 0.200000,-0.400000,-0.500000;;, + 27;3; 0.200000,-0.400000,-0.500000;;, + 28;3; 0.200000,-0.400000,-0.500000;;, + 29;3; 0.200000,-0.400000,-0.500000;;, + 30;3; 0.200000,-0.400000,-0.500000;;, + 31;3; 0.200000,-0.400000,-0.500000;;, + 32;3; 0.200000,-0.400000,-0.500000;;, + 33;3; 0.200000,-0.400000,-0.500000;;, + 34;3; 0.200000,-0.400000,-0.500000;;, + 35;3; 0.200000,-0.400000,-0.500000;;, + 36;3; 0.200000,-0.400000,-0.500000;;, + 37;3; 0.200000,-0.400000,-0.500000;;, + 38;3; 0.200000,-0.400000,-0.500000;;, + 39;3; 0.200000,-0.400000,-0.500000;;, + 40;3; 0.200000,-0.400000,-0.500000;;, + 41;3; 0.200000,-0.400000,-0.500000;;, + 42;3; 0.200000,-0.400000,-0.500000;;, + 43;3; 0.200000,-0.400000,-0.500000;;, + 44;3; 0.200000,-0.400000,-0.500000;;, + 45;3; 0.200000,-0.400000,-0.500000;;, + 46;3; 0.200000,-0.400000,-0.500000;;, + 47;3; 0.200000,-0.400000,-0.500000;;, + 48;3; 0.200000,-0.400000,-0.500000;;, + 49;3; 0.200000,-0.400000,-0.500000;;, + 50;3; 0.200000,-0.400000,-0.500000;;, + 51;3; 0.200000,-0.400000,-0.500000;;, + 52;3; 0.200000,-0.400000,-0.500000;;, + 53;3; 0.200000,-0.400000,-0.500000;;, + 54;3; 0.200000,-0.400000,-0.500000;;, + 55;3; 0.200000,-0.400000,-0.500000;;, + 56;3; 0.200000,-0.400000,-0.500000;;, + 57;3; 0.200000,-0.400000,-0.500000;;, + 58;3; 0.200000,-0.400000,-0.500000;;, + 59;3; 0.200000,-0.400000,-0.500000;;, + 60;3; 0.200000,-0.400000,-0.500000;;, + 61;3; 0.200000,-0.400000,-0.500000;;, + 62;3; 0.200000,-0.400000,-0.500000;;, + 63;3; 0.200000,-0.400000,-0.500000;;, + 64;3; 0.200000,-0.400000,-0.500000;;, + 65;3; 0.200000,-0.400000,-0.500000;;, + 66;3; 0.200000,-0.400000,-0.500000;;, + 67;3; 0.200000,-0.400000,-0.500000;;, + 68;3; 0.200000,-0.400000,-0.500000;;, + 69;3; 0.200000,-0.400000,-0.500000;;, + 70;3; 0.200000,-0.400000,-0.500000;;, + 71;3; 0.200000,-0.400000,-0.500000;;, + 72;3; 0.200000,-0.400000,-0.500000;;, + 73;3; 0.200000,-0.400000,-0.500000;;, + 74;3; 0.200000,-0.400000,-0.500000;;, + 75;3; 0.200000,-0.400000,-0.500000;;, + 76;3; 0.200000,-0.400000,-0.500000;;, + 77;3; 0.200000,-0.400000,-0.500000;;, + 78;3; 0.200000,-0.400000,-0.500000;;, + 79;3; 0.200000,-0.400000,-0.500000;;, + 80;3; 0.200000,-0.400000,-0.500000;;; + } + } + Animation { + {mob_armature_rl_leg} + AnimationKey { // Rotation + 0; + 81; + 0;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 1;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 2;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 3;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 4;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 5;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 6;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 7;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 8;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 9;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 10;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 11;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 12;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 13;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 14;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 15;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 16;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 17;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 18;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 19;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 20;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 21;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 22;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 23;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 24;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 25;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 26;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 27;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 28;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 29;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 30;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 31;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 32;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 33;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 34;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 35;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 36;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 37;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 38;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 39;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 40;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 41;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 42;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 43;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 44;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 45;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 46;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 47;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 48;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 49;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 50;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 51;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 52;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 53;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 54;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 55;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 56;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 57;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 58;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 59;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 60;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 61;4;-0.707107,-0.707107, 0.000000, 0.000000;;, + 62;4;-0.712346,-0.701389, 0.000000, 0.000000;;, + 63;4;-0.727103,-0.685285, 0.000000, 0.000000;;, + 64;4;-0.746050,-0.664608, 0.000000, 0.000000;;, + 65;4;-0.760806,-0.648505, 0.000000, 0.000000;;, + 66;4;-0.766044,-0.642788, 0.000000, 0.000000;;, + 67;4;-0.763312,-0.645520, 0.000000, 0.000000;;, + 68;4;-0.755088,-0.653744, 0.000000, 0.000000;;, + 69;4;-0.741717,-0.667115, 0.000000, 0.000000;;, + 70;4;-0.724228,-0.684604, 0.000000, 0.000000;;, + 71;4;-0.704416,-0.704416, 0.000000, 0.000000;;, + 72;4;-0.684604,-0.724228, 0.000000, 0.000000;;, + 73;4;-0.667115,-0.741717, 0.000000, 0.000000;;, + 74;4;-0.653744,-0.755088, 0.000000, 0.000000;;, + 75;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 76;4;-0.642788,-0.766044, 0.000000, 0.000000;;, + 77;4;-0.645520,-0.763312, 0.000000, 0.000000;;, + 78;4;-0.653743,-0.755089, 0.000000, 0.000000;;, + 79;4;-0.667113,-0.741719, 0.000000, 0.000000;;, + 80;4;-0.684601,-0.724231, 0.000000, 0.000000;;; + } + AnimationKey { // Scale + 1; + 81; + 0;3; 1.000000, 1.000000, 1.000000;;, + 1;3; 1.000000, 1.000000, 1.000000;;, + 2;3; 1.000000, 1.000000, 1.000000;;, + 3;3; 1.000000, 1.000000, 1.000000;;, + 4;3; 1.000000, 1.000000, 1.000000;;, + 5;3; 1.000000, 1.000000, 1.000000;;, + 6;3; 1.000000, 1.000000, 1.000000;;, + 7;3; 1.000000, 1.000000, 1.000000;;, + 8;3; 1.000000, 1.000000, 1.000000;;, + 9;3; 1.000000, 1.000000, 1.000000;;, + 10;3; 1.000000, 1.000000, 1.000000;;, + 11;3; 1.000000, 1.000000, 1.000000;;, + 12;3; 1.000000, 1.000000, 1.000000;;, + 13;3; 1.000000, 1.000000, 1.000000;;, + 14;3; 1.000000, 1.000000, 1.000000;;, + 15;3; 1.000000, 1.000000, 1.000000;;, + 16;3; 1.000000, 1.000000, 1.000000;;, + 17;3; 1.000000, 1.000000, 1.000000;;, + 18;3; 1.000000, 1.000000, 1.000000;;, + 19;3; 1.000000, 1.000000, 1.000000;;, + 20;3; 1.000000, 1.000000, 1.000000;;, + 21;3; 1.000000, 1.000000, 1.000000;;, + 22;3; 1.000000, 1.000000, 1.000000;;, + 23;3; 1.000000, 1.000000, 1.000000;;, + 24;3; 1.000000, 1.000000, 1.000000;;, + 25;3; 1.000000, 1.000000, 1.000000;;, + 26;3; 1.000000, 1.000000, 1.000000;;, + 27;3; 1.000000, 1.000000, 1.000000;;, + 28;3; 1.000000, 1.000000, 1.000000;;, + 29;3; 1.000000, 1.000000, 1.000000;;, + 30;3; 1.000000, 1.000000, 1.000000;;, + 31;3; 1.000000, 1.000000, 1.000000;;, + 32;3; 1.000000, 1.000000, 1.000000;;, + 33;3; 1.000000, 1.000000, 1.000000;;, + 34;3; 1.000000, 1.000000, 1.000000;;, + 35;3; 1.000000, 1.000000, 1.000000;;, + 36;3; 1.000000, 1.000000, 1.000000;;, + 37;3; 1.000000, 1.000000, 1.000000;;, + 38;3; 1.000000, 1.000000, 1.000000;;, + 39;3; 1.000000, 1.000000, 1.000000;;, + 40;3; 1.000000, 1.000000, 1.000000;;, + 41;3; 1.000000, 1.000000, 1.000000;;, + 42;3; 1.000000, 1.000000, 1.000000;;, + 43;3; 1.000000, 1.000000, 1.000000;;, + 44;3; 1.000000, 1.000000, 1.000000;;, + 45;3; 1.000000, 1.000000, 1.000000;;, + 46;3; 1.000000, 1.000000, 1.000000;;, + 47;3; 1.000000, 1.000000, 1.000000;;, + 48;3; 1.000000, 1.000000, 1.000000;;, + 49;3; 1.000000, 1.000000, 1.000000;;, + 50;3; 1.000000, 1.000000, 1.000000;;, + 51;3; 1.000000, 1.000000, 1.000000;;, + 52;3; 1.000000, 1.000000, 1.000000;;, + 53;3; 1.000000, 1.000000, 1.000000;;, + 54;3; 1.000000, 1.000000, 1.000000;;, + 55;3; 1.000000, 1.000000, 1.000000;;, + 56;3; 1.000000, 1.000000, 1.000000;;, + 57;3; 1.000000, 1.000000, 1.000000;;, + 58;3; 1.000000, 1.000000, 1.000000;;, + 59;3; 1.000000, 1.000000, 1.000000;;, + 60;3; 1.000000, 1.000000, 1.000000;;, + 61;3; 1.000000, 1.000000, 1.000000;;, + 62;3; 1.000000, 1.000000, 1.000000;;, + 63;3; 1.000000, 1.000000, 1.000000;;, + 64;3; 1.000000, 1.000000, 1.000000;;, + 65;3; 1.000000, 1.000000, 1.000000;;, + 66;3; 1.000000, 1.000000, 1.000000;;, + 67;3; 1.000000, 1.000000, 1.000000;;, + 68;3; 1.000000, 1.000000, 1.000000;;, + 69;3; 1.000000, 1.000000, 1.000000;;, + 70;3; 1.000000, 1.000000, 1.000000;;, + 71;3; 1.000000, 1.000000, 1.000000;;, + 72;3; 1.000000, 1.000000, 1.000000;;, + 73;3; 1.000000, 1.000000, 1.000000;;, + 74;3; 1.000000, 1.000000, 1.000000;;, + 75;3; 1.000000, 1.000000, 1.000000;;, + 76;3; 1.000000, 1.000000, 1.000000;;, + 77;3; 1.000000, 1.000000, 1.000000;;, + 78;3; 1.000000, 1.000000, 1.000000;;, + 79;3; 1.000000, 1.000000, 1.000000;;, + 80;3; 1.000000, 1.000000, 1.000000;;; + } + AnimationKey { // Position + 2; + 81; + 0;3;-0.200000,-0.400000,-0.500000;;, + 1;3;-0.200000,-0.400000,-0.500000;;, + 2;3;-0.200000,-0.400000,-0.500000;;, + 3;3;-0.200000,-0.400000,-0.500000;;, + 4;3;-0.200000,-0.400000,-0.500000;;, + 5;3;-0.200000,-0.400000,-0.500000;;, + 6;3;-0.200000,-0.400000,-0.500000;;, + 7;3;-0.200000,-0.400000,-0.500000;;, + 8;3;-0.200000,-0.400000,-0.500000;;, + 9;3;-0.200000,-0.400000,-0.500000;;, + 10;3;-0.200000,-0.400000,-0.500000;;, + 11;3;-0.200000,-0.400000,-0.500000;;, + 12;3;-0.200000,-0.400000,-0.500000;;, + 13;3;-0.200000,-0.400000,-0.500000;;, + 14;3;-0.200000,-0.400000,-0.500000;;, + 15;3;-0.200000,-0.400000,-0.500000;;, + 16;3;-0.200000,-0.400000,-0.500000;;, + 17;3;-0.200000,-0.400000,-0.500000;;, + 18;3;-0.200000,-0.400000,-0.500000;;, + 19;3;-0.200000,-0.400000,-0.500000;;, + 20;3;-0.200000,-0.400000,-0.500000;;, + 21;3;-0.200000,-0.400000,-0.500000;;, + 22;3;-0.200000,-0.400000,-0.500000;;, + 23;3;-0.200000,-0.400000,-0.500000;;, + 24;3;-0.200000,-0.400000,-0.500000;;, + 25;3;-0.200000,-0.400000,-0.500000;;, + 26;3;-0.200000,-0.400000,-0.500000;;, + 27;3;-0.200000,-0.400000,-0.500000;;, + 28;3;-0.200000,-0.400000,-0.500000;;, + 29;3;-0.200000,-0.400000,-0.500000;;, + 30;3;-0.200000,-0.400000,-0.500000;;, + 31;3;-0.200000,-0.400000,-0.500000;;, + 32;3;-0.200000,-0.400000,-0.500000;;, + 33;3;-0.200000,-0.400000,-0.500000;;, + 34;3;-0.200000,-0.400000,-0.500000;;, + 35;3;-0.200000,-0.400000,-0.500000;;, + 36;3;-0.200000,-0.400000,-0.500000;;, + 37;3;-0.200000,-0.400000,-0.500000;;, + 38;3;-0.200000,-0.400000,-0.500000;;, + 39;3;-0.200000,-0.400000,-0.500000;;, + 40;3;-0.200000,-0.400000,-0.500000;;, + 41;3;-0.200000,-0.400000,-0.500000;;, + 42;3;-0.200000,-0.400000,-0.500000;;, + 43;3;-0.200000,-0.400000,-0.500000;;, + 44;3;-0.200000,-0.400000,-0.500000;;, + 45;3;-0.200000,-0.400000,-0.500000;;, + 46;3;-0.200000,-0.400000,-0.500000;;, + 47;3;-0.200000,-0.400000,-0.500000;;, + 48;3;-0.200000,-0.400000,-0.500000;;, + 49;3;-0.200000,-0.400000,-0.500000;;, + 50;3;-0.200000,-0.400000,-0.500000;;, + 51;3;-0.200000,-0.400000,-0.500000;;, + 52;3;-0.200000,-0.400000,-0.500000;;, + 53;3;-0.200000,-0.400000,-0.500000;;, + 54;3;-0.200000,-0.400000,-0.500000;;, + 55;3;-0.200000,-0.400000,-0.500000;;, + 56;3;-0.200000,-0.400000,-0.500000;;, + 57;3;-0.200000,-0.400000,-0.500000;;, + 58;3;-0.200000,-0.400000,-0.500000;;, + 59;3;-0.200000,-0.400000,-0.500000;;, + 60;3;-0.200000,-0.400000,-0.500000;;, + 61;3;-0.200000,-0.400000,-0.500000;;, + 62;3;-0.200000,-0.400000,-0.500000;;, + 63;3;-0.200000,-0.400000,-0.500000;;, + 64;3;-0.200000,-0.400000,-0.500000;;, + 65;3;-0.200000,-0.400000,-0.500000;;, + 66;3;-0.200000,-0.400000,-0.500000;;, + 67;3;-0.200000,-0.400000,-0.500000;;, + 68;3;-0.200000,-0.400000,-0.500000;;, + 69;3;-0.200000,-0.400000,-0.500000;;, + 70;3;-0.200000,-0.400000,-0.500000;;, + 71;3;-0.200000,-0.400000,-0.500000;;, + 72;3;-0.200000,-0.400000,-0.500000;;, + 73;3;-0.200000,-0.400000,-0.500000;;, + 74;3;-0.200000,-0.400000,-0.500000;;, + 75;3;-0.200000,-0.400000,-0.500000;;, + 76;3;-0.200000,-0.400000,-0.500000;;, + 77;3;-0.200000,-0.400000,-0.500000;;, + 78;3;-0.200000,-0.400000,-0.500000;;, + 79;3;-0.200000,-0.400000,-0.500000;;, + 80;3;-0.200000,-0.400000,-0.500000;;; + } + } +} // End of AnimationSet Global diff --git a/mods/mobs/npc.lua b/mods/mobs/npc.lua new file mode 100644 index 0000000..3d39200 --- /dev/null +++ b/mods/mobs/npc.lua @@ -0,0 +1,124 @@ +-- Npc by TenPlus1 +-- Modded by Kaadmy + +local npc_types = { + "farmer", + "tavernkeeper", + "blacksmith", + "butcher", +} + +for _, npc_type in pairs(npc_types) do + mobs:register_mob( + "mobs:npc_" .. npc_type, + { + type = "npc", + passive = false, + collides_with_objects = false, + damage = 3, + attack_type = "dogfight", + attacks_monsters = true, + hp_min = 10, + hp_max = 20, + armor = 80, + collisionbox = {-0.35,-1.0,-0.35, 0.35,0.8,0.35}, + visual = "mesh", + mesh = "mobs_npc.b3d", + drawtype = "front", + textures = { + {"mobs_npc1.png"}, + {"mobs_npc2.png"}, + }, + makes_footstep_sound = true, + sounds = {}, + walk_velocity = 2, + run_velocity = 3, + jump = true, + walk_chance = 50, + drops = { + {name = "default:planks_oak", + chance = 1, min = 1, max = 3}, + {name = "default:apple", + chance = 2, min = 1, max = 2}, + {name = "default:axe_stone", + chance = 5, min = 1, max = 1}, + }, + water_damage = 0, + lava_damage = 2, + light_damage = 0, + follow = "gold:gold", + view_range = 15, + owner = "", + order = "stand", + animation = { + speed_normal = 30, + speed_run = 30, + stand_start = 0, + stand_end = 79, + walk_start = 168, + walk_end = 187, + run_start = 168, + run_end = 187, + punch_start = 200, + punch_end = 219, + }, + on_spawn = function(self) + self.npc_type = npc_type + end, + on_rightclick = function(self, clicker) + local item = clicker:get_wielded_item() + local name = clicker:get_player_name() + + -- feed to heal npc + if item:get_name() == "mobs:meat" or item:get_name() == "mobs:pork" or item:get_name() == "farming:bread" then + + local hp = self.object:get_hp() + -- return if full health + if hp >= self.hp_max then + minetest.chat_send_player(name, "Villager is no longer hungry.") + return + end + + hp = hp + 4 + if hp > self.hp_max then hp = self.hp_max end + self.object:set_hp(hp) + + -- take item + if not minetest.setting_getbool("creative_mode") then + item:take_item() + clicker:set_wielded_item(item) + end + + -- right clicking trades, sneak+rightclick if owner changes order + -- trading is done in the gold mod + else + -- if owner switch between follow and stand + if clicker:get_player_control().sneak then + if self.owner and self.owner == clicker:get_player_name() then + if self.order == "follow" then + self.order = "stand" + else + self.order = "follow" + end + end + else +-- if not self.npc_type then +-- self.npc_type = util.choice_element(npc_types, gold.pr) +-- end + + if not self.npc_trade then + self.npc_trade = util.choice_element(gold.trades[self.npc_type], gold.pr) + end + + gold.trade(self.npc_trade, self.npc_type, clicker) + end + end + + mobs:feed_tame(self, clicker, 8, false) + -- mobs:capture_mob(self, clicker, 20, 5, 10, false, nil) + end, + }) + + --mobs:register_spawn("mobs:npc", {"default:dirt_with_grass"}, 20, 0, 7000, 1, 31000) + mobs:register_egg("mobs:npc_" .. npc_type, "NPC", "default_brick.png^mobs_egg.png") +end \ No newline at end of file diff --git a/mods/mobs/sheep.lua b/mods/mobs/sheep.lua new file mode 100644 index 0000000..187240b --- /dev/null +++ b/mods/mobs/sheep.lua @@ -0,0 +1,114 @@ +-- Sheep by PilzAdam; tweaked for Pixture by Kaadmy + +mobs:register_mob( + "mobs:sheep", + { + type = "animal", + passive = true, + hp_min = 6, + hp_max = 14, + armor = 200, + collisionbox = {-0.4, -1, -0.4, 0.4, 0.1, 0.4}, + visual = "mesh", + mesh = "mobs_sheep.x", + visual_size = {x = 1, y = 1}, + textures = { + {"mobs_sheep.png"}, + }, + gotten_texture = {"mobs_sheep_shaved.png"}, +-- gotten_mesh = "mobs_sheep.x", + makes_footstep_sound = true, + sounds = { + random = "mobs_sheep", + }, + walk_velocity = 1, + walk_chance = 150, + jump = true, + jump_height = 5, + drops = { + {name = "mobs:meat_raw", + chance = 1, min = 2, max = 4}, + {name = "mobs:wool", + chance = 1, min = 1, max = 2}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 25, + stand_start = 0, + stand_end = 60, + walk_start = 61, + walk_end = 80, + }, + follow = "farming:wheat", + view_range = 5, + replace_rate = 50, + replace_what = {"default:grass", "default:tall_grass", "farming:wheat_3", "farming:wheat_4"}, + replace_with = "air", + replace_offset = -1, + on_replace = function(self, pos) + minetest.set_node(pos, {name = self.replace_with}) + if mobs:feed_tame(self, self.follow, 8, true) then + if self.gotten == false then + self.object:set_properties( + { + textures = {"mobs_sheep.png"}, + mesh = "mobs_sheep.x", + }) + end + end + end, + on_rightclick = function(self, clicker) + --are we feeding? + if mobs:feed_tame(self, clicker, 8, true) then + --if full grow fuzz + if self.gotten == false then + self.object:set_properties( + { + textures = {"mobs_sheep.png"}, + mesh = "mobs_sheep.x", + }) + end + return + end + + local item = clicker:get_wielded_item() + local itemname = item:get_name() + + --are we giving a haircut> + if itemname == "mobs:shears" then + if self.gotten == false and self.child == false then + self.gotten = true -- shaved + local pos = self.object:getpos() + pos.y = pos.y + 0.5 + local obj = minetest.add_item(pos, ItemStack("mobs:wool")) + if obj then + obj:setvelocity( + { + x = math.random(-1,1), + y = 5, + z = math.random(-1,1) + }) + end + item:add_wear(650) -- 100 uses + clicker:set_wielded_item(item) + self.object:set_properties( + { + textures = {"mobs_sheep_shaved.png"}, + mesh = "mobs_sheep.x", + }) + end + return + end + + local name = clicker:get_player_name() + + --are we capturing? + mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) + end + }) + +mobs:register_egg("mobs:sheep", "Sheep", "mobs_sheep_inventory.png") +mobs:register_spawn("mobs:sheep", {"default:dirt_with_grass"}, 20, 10, 15000, 1, 31000) \ No newline at end of file diff --git a/mods/mobs/sounds/default_punch.ogg b/mods/mobs/sounds/default_punch.ogg new file mode 100644 index 0000000..28a500b Binary files /dev/null and b/mods/mobs/sounds/default_punch.ogg differ diff --git a/mods/mobs/sounds/mobs_boar.ogg b/mods/mobs/sounds/mobs_boar.ogg new file mode 100644 index 0000000..e7c7591 Binary files /dev/null and b/mods/mobs/sounds/mobs_boar.ogg differ diff --git a/mods/mobs/sounds/mobs_boar_angry.ogg b/mods/mobs/sounds/mobs_boar_angry.ogg new file mode 100644 index 0000000..2a4f47b Binary files /dev/null and b/mods/mobs/sounds/mobs_boar_angry.ogg differ diff --git a/mods/mobs/sounds/mobs_mineturtle.ogg b/mods/mobs/sounds/mobs_mineturtle.ogg new file mode 100644 index 0000000..46f939c Binary files /dev/null and b/mods/mobs/sounds/mobs_mineturtle.ogg differ diff --git a/mods/mobs/sounds/mobs_rat.ogg b/mods/mobs/sounds/mobs_rat.ogg new file mode 100644 index 0000000..0e99267 Binary files /dev/null and b/mods/mobs/sounds/mobs_rat.ogg differ diff --git a/mods/mobs/sounds/mobs_sheep.ogg b/mods/mobs/sounds/mobs_sheep.ogg new file mode 100644 index 0000000..54f62cd Binary files /dev/null and b/mods/mobs/sounds/mobs_sheep.ogg differ diff --git a/mods/mobs/textures/mobs_blood.png b/mods/mobs/textures/mobs_blood.png new file mode 100644 index 0000000..6c2a40d Binary files /dev/null and b/mods/mobs/textures/mobs_blood.png differ diff --git a/mods/mobs/textures/mobs_blood.xcf b/mods/mobs/textures/mobs_blood.xcf new file mode 100644 index 0000000..9ac43c6 Binary files /dev/null and b/mods/mobs/textures/mobs_blood.xcf differ diff --git a/mods/mobs/textures/mobs_boar.png b/mods/mobs/textures/mobs_boar.png new file mode 100644 index 0000000..8cf10f9 Binary files /dev/null and b/mods/mobs/textures/mobs_boar.png differ diff --git a/mods/mobs/textures/mobs_boar.xcf b/mods/mobs/textures/mobs_boar.xcf new file mode 100644 index 0000000..4a1a5fd Binary files /dev/null and b/mods/mobs/textures/mobs_boar.xcf differ diff --git a/mods/mobs/textures/mobs_boar_inventory.png b/mods/mobs/textures/mobs_boar_inventory.png new file mode 100644 index 0000000..46a291d Binary files /dev/null and b/mods/mobs/textures/mobs_boar_inventory.png differ diff --git a/mods/mobs/textures/mobs_boar_inventory.xcf b/mods/mobs/textures/mobs_boar_inventory.xcf new file mode 100644 index 0000000..6c992d8 Binary files /dev/null and b/mods/mobs/textures/mobs_boar_inventory.xcf differ diff --git a/mods/mobs/textures/mobs_egg.png b/mods/mobs/textures/mobs_egg.png new file mode 100644 index 0000000..05d9615 Binary files /dev/null and b/mods/mobs/textures/mobs_egg.png differ diff --git a/mods/mobs/textures/mobs_egg.xcf b/mods/mobs/textures/mobs_egg.xcf new file mode 100644 index 0000000..fca19bd Binary files /dev/null and b/mods/mobs/textures/mobs_egg.xcf differ diff --git a/mods/mobs/textures/mobs_egg_hires.png b/mods/mobs/textures/mobs_egg_hires.png new file mode 100644 index 0000000..eecef8a Binary files /dev/null and b/mods/mobs/textures/mobs_egg_hires.png differ diff --git a/mods/mobs/textures/mobs_egg_hires.xcf b/mods/mobs/textures/mobs_egg_hires.xcf new file mode 100644 index 0000000..b2a1719 Binary files /dev/null and b/mods/mobs/textures/mobs_egg_hires.xcf differ diff --git a/mods/mobs/textures/mobs_flame.png b/mods/mobs/textures/mobs_flame.png new file mode 100644 index 0000000..05df449 Binary files /dev/null and b/mods/mobs/textures/mobs_flame.png differ diff --git a/mods/mobs/textures/mobs_flame.xcf b/mods/mobs/textures/mobs_flame.xcf new file mode 100644 index 0000000..e207428 Binary files /dev/null and b/mods/mobs/textures/mobs_flame.xcf differ diff --git a/mods/mobs/textures/mobs_lasso.png b/mods/mobs/textures/mobs_lasso.png new file mode 100644 index 0000000..cdd5d31 Binary files /dev/null and b/mods/mobs/textures/mobs_lasso.png differ diff --git a/mods/mobs/textures/mobs_lasso.xcf b/mods/mobs/textures/mobs_lasso.xcf new file mode 100644 index 0000000..41f9fc5 Binary files /dev/null and b/mods/mobs/textures/mobs_lasso.xcf differ diff --git a/mods/mobs/textures/mobs_meat_cooked.png b/mods/mobs/textures/mobs_meat_cooked.png new file mode 100644 index 0000000..cba665c Binary files /dev/null and b/mods/mobs/textures/mobs_meat_cooked.png differ diff --git a/mods/mobs/textures/mobs_meat_cooked.xcf b/mods/mobs/textures/mobs_meat_cooked.xcf new file mode 100644 index 0000000..297fc1a Binary files /dev/null and b/mods/mobs/textures/mobs_meat_cooked.xcf differ diff --git a/mods/mobs/textures/mobs_meat_raw.png b/mods/mobs/textures/mobs_meat_raw.png new file mode 100644 index 0000000..66fc7a6 Binary files /dev/null and b/mods/mobs/textures/mobs_meat_raw.png differ diff --git a/mods/mobs/textures/mobs_meat_raw.xcf b/mods/mobs/textures/mobs_meat_raw.xcf new file mode 100644 index 0000000..30fbacc Binary files /dev/null and b/mods/mobs/textures/mobs_meat_raw.xcf differ diff --git a/mods/mobs/textures/mobs_mineturtle.png b/mods/mobs/textures/mobs_mineturtle.png new file mode 100644 index 0000000..2d79426 Binary files /dev/null and b/mods/mobs/textures/mobs_mineturtle.png differ diff --git a/mods/mobs/textures/mobs_mineturtle.xcf b/mods/mobs/textures/mobs_mineturtle.xcf new file mode 100644 index 0000000..dabe596 Binary files /dev/null and b/mods/mobs/textures/mobs_mineturtle.xcf differ diff --git a/mods/mobs/textures/mobs_mineturtle_inventory.png b/mods/mobs/textures/mobs_mineturtle_inventory.png new file mode 100644 index 0000000..87de8f3 Binary files /dev/null and b/mods/mobs/textures/mobs_mineturtle_inventory.png differ diff --git a/mods/mobs/textures/mobs_mineturtle_inventory.xcf b/mods/mobs/textures/mobs_mineturtle_inventory.xcf new file mode 100644 index 0000000..747ee27 Binary files /dev/null and b/mods/mobs/textures/mobs_mineturtle_inventory.xcf differ diff --git a/mods/mobs/textures/mobs_net.png b/mods/mobs/textures/mobs_net.png new file mode 100644 index 0000000..621df74 Binary files /dev/null and b/mods/mobs/textures/mobs_net.png differ diff --git a/mods/mobs/textures/mobs_net.xcf b/mods/mobs/textures/mobs_net.xcf new file mode 100644 index 0000000..b328c84 Binary files /dev/null and b/mods/mobs/textures/mobs_net.xcf differ diff --git a/mods/mobs/textures/mobs_npc1.png b/mods/mobs/textures/mobs_npc1.png new file mode 100644 index 0000000..cd6d1d1 Binary files /dev/null and b/mods/mobs/textures/mobs_npc1.png differ diff --git a/mods/mobs/textures/mobs_npc1.xcf b/mods/mobs/textures/mobs_npc1.xcf new file mode 100644 index 0000000..2860c55 Binary files /dev/null and b/mods/mobs/textures/mobs_npc1.xcf differ diff --git a/mods/mobs/textures/mobs_npc2.png b/mods/mobs/textures/mobs_npc2.png new file mode 100644 index 0000000..a1e4046 Binary files /dev/null and b/mods/mobs/textures/mobs_npc2.png differ diff --git a/mods/mobs/textures/mobs_npc2.xcf b/mods/mobs/textures/mobs_npc2.xcf new file mode 100644 index 0000000..b877950 Binary files /dev/null and b/mods/mobs/textures/mobs_npc2.xcf differ diff --git a/mods/mobs/textures/mobs_pork_cooked.png b/mods/mobs/textures/mobs_pork_cooked.png new file mode 100644 index 0000000..237fe90 Binary files /dev/null and b/mods/mobs/textures/mobs_pork_cooked.png differ diff --git a/mods/mobs/textures/mobs_pork_cooked.xcf b/mods/mobs/textures/mobs_pork_cooked.xcf new file mode 100644 index 0000000..8d495db Binary files /dev/null and b/mods/mobs/textures/mobs_pork_cooked.xcf differ diff --git a/mods/mobs/textures/mobs_pork_raw.png b/mods/mobs/textures/mobs_pork_raw.png new file mode 100644 index 0000000..4ac1a0e Binary files /dev/null and b/mods/mobs/textures/mobs_pork_raw.png differ diff --git a/mods/mobs/textures/mobs_pork_raw.xcf b/mods/mobs/textures/mobs_pork_raw.xcf new file mode 100644 index 0000000..20992a0 Binary files /dev/null and b/mods/mobs/textures/mobs_pork_raw.xcf differ diff --git a/mods/mobs/textures/mobs_shears.png b/mods/mobs/textures/mobs_shears.png new file mode 100644 index 0000000..b0bf83f Binary files /dev/null and b/mods/mobs/textures/mobs_shears.png differ diff --git a/mods/mobs/textures/mobs_shears.xcf b/mods/mobs/textures/mobs_shears.xcf new file mode 100644 index 0000000..461c7fc Binary files /dev/null and b/mods/mobs/textures/mobs_shears.xcf differ diff --git a/mods/mobs/textures/mobs_sheep.png b/mods/mobs/textures/mobs_sheep.png new file mode 100644 index 0000000..c608705 Binary files /dev/null and b/mods/mobs/textures/mobs_sheep.png differ diff --git a/mods/mobs/textures/mobs_sheep.xcf b/mods/mobs/textures/mobs_sheep.xcf new file mode 100644 index 0000000..3fd8dd0 Binary files /dev/null and b/mods/mobs/textures/mobs_sheep.xcf differ diff --git a/mods/mobs/textures/mobs_sheep_inventory.png b/mods/mobs/textures/mobs_sheep_inventory.png new file mode 100644 index 0000000..c0b3653 Binary files /dev/null and b/mods/mobs/textures/mobs_sheep_inventory.png differ diff --git a/mods/mobs/textures/mobs_sheep_inventory.xcf b/mods/mobs/textures/mobs_sheep_inventory.xcf new file mode 100644 index 0000000..e8c5b57 Binary files /dev/null and b/mods/mobs/textures/mobs_sheep_inventory.xcf differ diff --git a/mods/mobs/textures/mobs_sheep_shaved.png b/mods/mobs/textures/mobs_sheep_shaved.png new file mode 100644 index 0000000..65b9f1d Binary files /dev/null and b/mods/mobs/textures/mobs_sheep_shaved.png differ diff --git a/mods/mobs/textures/mobs_sheep_shaved.xcf b/mods/mobs/textures/mobs_sheep_shaved.xcf new file mode 100644 index 0000000..cba20d2 Binary files /dev/null and b/mods/mobs/textures/mobs_sheep_shaved.xcf differ diff --git a/mods/mobs/textures/mobs_wool.png b/mods/mobs/textures/mobs_wool.png new file mode 100644 index 0000000..b8e3156 Binary files /dev/null and b/mods/mobs/textures/mobs_wool.png differ diff --git a/mods/mobs/textures/mobs_wool.xcf b/mods/mobs/textures/mobs_wool.xcf new file mode 100644 index 0000000..4b66d59 Binary files /dev/null and b/mods/mobs/textures/mobs_wool.xcf differ diff --git a/mods/mobs/textures/mobs_zombie.png b/mods/mobs/textures/mobs_zombie.png new file mode 100644 index 0000000..8d8a1af Binary files /dev/null and b/mods/mobs/textures/mobs_zombie.png differ diff --git a/mods/mobs/textures/mobs_zombie.xcf b/mods/mobs/textures/mobs_zombie.xcf new file mode 100644 index 0000000..aeeffc6 Binary files /dev/null and b/mods/mobs/textures/mobs_zombie.xcf differ diff --git a/mods/music/README.txt b/mods/music/README.txt new file mode 100644 index 0000000..f3588e0 --- /dev/null +++ b/mods/music/README.txt @@ -0,0 +1,9 @@ +Music player mod +================ +By Kaadmy, for Pixture + +Music license: + music_catsong: Dan Knoflicek(CC0) + music_wonderful_nightmare.ogg: SpiderDave(CC0) + +Source License: MIT diff --git a/mods/music/depends.txt b/mods/music/depends.txt new file mode 100644 index 0000000..3759e93 --- /dev/null +++ b/mods/music/depends.txt @@ -0,0 +1 @@ +util diff --git a/mods/music/init.lua b/mods/music/init.lua new file mode 100644 index 0000000..f306b75 --- /dev/null +++ b/mods/music/init.lua @@ -0,0 +1,175 @@ +-- +-- Music player mod +-- By Kaadmy, for Pixture +-- + +music = {} + +music.players = {} -- music players + +if minetest.setting_getbool("music_enable") then + function music.stop(pos) + local dp = dump(pos) + + local meta = minetest.get_meta(pos) + meta:set_string("infotext", "Music player(Off)") + meta:set_int("music_player_enabled", 0) + + if music.players[dp] ~= nil then + minetest.sound_stop(music.players[dp]["handle"]) + music.players[dp] = nil + end + end + + function music.start(pos) + local dp = dump(pos) + + local meta = minetest.get_meta(pos) + meta:set_string("infotext", "Music player(On)") + meta:set_int("music_player_enabled", 1) + + if music.players[dp] == nil then + music.players[dp] = { + ["handle"] = minetest.sound_play( + "music_catsong", + { + pos = pos, + gain = 0.5, + }), + ["timer"] = 0, + ["pos"] = pos, + } + else + music.players[dp]["timer"] = 0 + minetest.sound_stop(music.players[dp]["handle"]) + music.players[dp]["handle"] = minetest.sound_play( + "music_catsong", + { + pos = pos, + gain = 0.5, + }) + end + end + + function music.update(pos) + local dp = dump(pos) + + if music.players[dp] ~= nil then + local node = minetest.get_node(pos) + + if node.name ~= "music:player" then + music.stop(pos) + + return + end + + if music.players[dp]["timer"] > 28 then + music.start(pos) + end + end + end + + function music.toggle(pos) + local dp = dump(pos) + + if music.players[dp] == nil then + music.start(pos) + else + music.stop(pos) + end + end + + minetest.register_node( + "music:player", + { + description = "Music player", + + tiles = {"music_top.png", "music_bottom.png", "music_side.png"}, + + inventory_image = "music_inventory.png", + wield_image = "music_inventory.png", + + paramtype = "light", + + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-4/16, -0.5, -4/16, 4/16, -0.5 + (4/16), 4/16} + }, + + on_construct = function(pos) + music.start(pos) + end, + + after_destruct = function(pos) + music.stop(pos) + end, + + on_rightclick = function(pos) + music.toggle(pos) + end, + + groups = {oddly_breakable_by_hand = 3} + }) + + function step(dtime) + for dp, _ in pairs(music.players) do + music.players[dp]["timer"] = music.players[dp]["timer"] + dtime + + music.update(music.players[dp]["pos"]) + end + end + + minetest.register_globalstep(step) + + minetest.register_abm( + { + nodenames = {"music:player"}, + chance = 1, + interval = 1, + action = function(pos, node) + if music.players[dump(pos)] == nil then + local meta = minetest.get_meta(pos) + if meta:get_int("music_player_enabled") == 1 then + music.start(pos) + end + end + end + }) +else + minetest.register_node( + "music:player", + { + description = "Music player", + + tiles = {"music_top.png", "music_bottom.png", "music_side.png"}, + + inventory_image = "music_inventory.png", + wield_image = "music_inventory.png", + + paramtype = "light", + + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-4/16, -0.5, -4/16, 4/16, -0.5 + (4/16), 4/16} + }, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + + meta:set_string("infotext", "Music player(Disabled by server)") + end, + + groups = {oddly_breakable_by_hand = 3} + }) +end + +minetest.register_craft( + { + output = "music:player", + recipe = { + {"group:planks", "group:planks", "group:planks"}, + {"group:planks", "default:ingot_steel", "group:planks"}, + } + }) \ No newline at end of file diff --git a/mods/music/sounds/music_catsong.ogg b/mods/music/sounds/music_catsong.ogg new file mode 100644 index 0000000..d897cac Binary files /dev/null and b/mods/music/sounds/music_catsong.ogg differ diff --git a/mods/music/sounds/music_wonderful_nightmare.ogg b/mods/music/sounds/music_wonderful_nightmare.ogg new file mode 100644 index 0000000..1c0d86d Binary files /dev/null and b/mods/music/sounds/music_wonderful_nightmare.ogg differ diff --git a/mods/music/textures/music_bottom.png b/mods/music/textures/music_bottom.png new file mode 100644 index 0000000..9d816ea Binary files /dev/null and b/mods/music/textures/music_bottom.png differ diff --git a/mods/music/textures/music_bottom.xcf b/mods/music/textures/music_bottom.xcf new file mode 100644 index 0000000..aef263e Binary files /dev/null and b/mods/music/textures/music_bottom.xcf differ diff --git a/mods/music/textures/music_inventory.png b/mods/music/textures/music_inventory.png new file mode 100644 index 0000000..aec142c Binary files /dev/null and b/mods/music/textures/music_inventory.png differ diff --git a/mods/music/textures/music_inventory.xcf b/mods/music/textures/music_inventory.xcf new file mode 100644 index 0000000..658edf9 Binary files /dev/null and b/mods/music/textures/music_inventory.xcf differ diff --git a/mods/music/textures/music_side.png b/mods/music/textures/music_side.png new file mode 100644 index 0000000..744c48d Binary files /dev/null and b/mods/music/textures/music_side.png differ diff --git a/mods/music/textures/music_side.xcf b/mods/music/textures/music_side.xcf new file mode 100644 index 0000000..f23e4c4 Binary files /dev/null and b/mods/music/textures/music_side.xcf differ diff --git a/mods/music/textures/music_top.png b/mods/music/textures/music_top.png new file mode 100644 index 0000000..6922ee0 Binary files /dev/null and b/mods/music/textures/music_top.png differ diff --git a/mods/music/textures/music_top.xcf b/mods/music/textures/music_top.xcf new file mode 100644 index 0000000..53adc85 Binary files /dev/null and b/mods/music/textures/music_top.xcf differ diff --git a/mods/nav/README.txt b/mods/nav/README.txt new file mode 100644 index 0000000..bd8cadb --- /dev/null +++ b/mods/nav/README.txt @@ -0,0 +1,8 @@ +Navigation mod +============== +By Kaadmy, for Pixture + +Navigation, compass and waypoint API + +Asset license: CC0 +Source license: MIT diff --git a/mods/nav/compass.lua b/mods/nav/compass.lua new file mode 100644 index 0000000..d148735 --- /dev/null +++ b/mods/nav/compass.lua @@ -0,0 +1,129 @@ +-- Compass handling + +minetest.register_craftitem( + "nav:compass_0", + { + description = "Compass(East)", + + inventory_image = "nav_compass_0.png^[transformR90", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_1", + { + description = "Compass(North-East)", + + inventory_image = "nav_compass_1.png^[transformR90", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_2", + { + description = "Compass(North)", + + inventory_image = "nav_compass_0.png", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_3", + { + description = "Compass(North-West)", + + inventory_image = "nav_compass_1.png", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_4", + { + description = "Compass(West)", + + inventory_image = "nav_compass_0.png^[transformR270", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_5", + { + description = "Compass(South-West)", + + inventory_image = "nav_compass_1.png^[transformR270", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_6", + { + description = "Compass(South)", + + inventory_image = "nav_compass_0.png^[transformR180", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_craftitem( + "nav:compass_7", + { + description = "Compass(South-East)", + + inventory_image = "nav_compass_1.png^[transformR180", + + groups = {nav_compass = 1}, + stack_max = 1, + }) + +minetest.register_alias("nav:compass", "nav:compass_3") + +minetest.register_craft( + { + output = "nav:compass_2", + recipe = { + {"", "default:ingot_carbonsteel", ""}, + {"default:ingot_steel", "default:stick", "default:ingot_steel"}, + {"", "default:ingot_steel", ""}, + } + }) + +function step(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local inv = player:get_inventory() + + local yaw = player:get_look_yaw() + local dir = math.floor(((yaw / math.pi) * 4) + 0.5) + + if dir < 0 then + dir = dir + 8 + end + + if dir >= 8 then + dir = 0 + end + + for i = 1, 8 do + local itemstack = inv:get_stack("main", i) + local item = minetest.registered_items[itemstack:get_name()] + + if item.groups.nav_compass then + inv:set_stack("main", i, ItemStack("nav:compass_"..dir)) + end + end + end +end + +minetest.register_globalstep(step) diff --git a/mods/nav/depends.txt b/mods/nav/depends.txt new file mode 100644 index 0000000..b7cc57f --- /dev/null +++ b/mods/nav/depends.txt @@ -0,0 +1,2 @@ +default +util diff --git a/mods/nav/init.lua b/mods/nav/init.lua new file mode 100644 index 0000000..2952a3c --- /dev/null +++ b/mods/nav/init.lua @@ -0,0 +1,9 @@ +-- +-- Nav mod +-- By Kaadmy, for Pixture +-- + +nav = {} + +dofile(minetest.get_modpath("nav").."/map.lua") +dofile(minetest.get_modpath("nav").."/compass.lua") diff --git a/mods/nav/map.lua b/mods/nav/map.lua new file mode 100644 index 0000000..a6c9107 --- /dev/null +++ b/mods/nav/map.lua @@ -0,0 +1,165 @@ +-- Map handling + +nav.map_radius = 64 + +nav.waypoints = {} + +local form_nav = default.ui.get_page("core") +default.ui.register_page("nav_nav", form_nav) + +local open_formspecs = {} + +local timer = 10 +local update_time = 0.25 + +function nav.add_waypoint(pos, name, label, isinfo, type) + nav.waypoints[name] = {pos = pos, label = label, isinfo = isinfo or false, type = type} +end + +function nav.remove_waypoint(name) + nav.waypoints[name] = nil +end + +function nav.get_waypoints_in_square(pos, radius) + local wpts = {} + + for name, data in pairs(nav.waypoints) do + local wp = data.pos + + if wp.x > pos.x-radius and wp.x < pos.x+radius and wp.z > pos.z-radius and wp.z < pos.z+radius then + table.insert(wpts, name) + end + end + + return wpts +end + +local function get_formspec_waypoint(x, y, name, label, isinfo) + local img = "nav_waypoint.png" + if isinfo then + img = "nav_info.png" + end + + local form = "" + + form = form .. "image_button["..(x-0.72)..","..(y-0.53)..";0.5,0.5;"..img..";"..name..";;false;false;"..img.."]" + form = form .. "tooltip["..name..";"..minetest.formspec_escape(label).."]" + + return form +end + +function nav.show_map(player) + local name = player:get_player_name() + local pos = player:getpos() + + local form = default.ui.get_page("nav_nav") + + form = form .. "field[-1,-1;0,0;nav_map_tracker;;]" + + form = form .. "label[0.25,0.25;"..minetest.formspec_escape(name).." ("..math.floor(pos.x+0.5)..", "..math.floor(pos.y)..", "..math.floor(pos.z+0.5)..")]" + + form = form .. "image[0.5,3;6,6;nav_background.png]" + + local wpts = nav.get_waypoints_in_square(pos, nav.map_radius) + for _, wptname in pairs(wpts) do + local wpt = nav.waypoints[wptname] + + local isinfo = wpt.isinfo + if wptname == "player_" .. name then + isinfo = true + end + + form = form .. get_formspec_waypoint( + 3.5+(((wpt.pos.x-pos.x)/nav.map_radius)*3), + 6+(((pos.z-wpt.pos.z)/nav.map_radius)*3), + wptname, + wpt.label, + isinfo) + end + + form = form .. "image[5.5,3;1,1;nav_map_compass.png]" + + form = form .. "label[6.25,6.6;"..nav.map_radius.."m]" + form = form .. "image[5.5,5.5;3,3;"..minetest.formspec_escape("nav_legend.png^[transformFX").."]" + + minetest.show_formspec(name, "nav_map", form) +end + +minetest.register_craftitem( + "nav:map", + { + description = "Map", + inventory_image = "nav_inventory.png", + wield_image = "nav_inventory.png", + stack_max = 1, + on_use = function(itemstack, player, pointed_thing) + open_formspecs[player:get_player_name()] = true + nav.show_map(player) + end, + }) + +local function recieve_fields(player, form_name, fields) + if form_name == "nav_map" then + if fields.quit or fields.nav_map_tracker then + open_formspecs[player:get_player_name()] = false + end + end +end + +local function on_joinplayer(player) + local name = player:get_player_name() + + minetest.after( + 1.0, + function() + nav.add_waypoint(player:getpos(), "player_"..name, name, false, "player") + end) +end + +local function on_leaveplayer(player) + local name = player:get_player_name() + + nav.remove_waypoint("player_"..name) +end + +local function step(dtime) + timer = timer + dtime + + if timer > update_time then + local players = {} + + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + + players[name] = player + + if open_formspecs[name] == true then + nav.show_map(player) + end + end + + for wptname, wpt in pairs(nav.waypoints) do + if wpt.type == "player" then + wpt.pos = players[wpt.label]:getpos() + end + end + + timer = 0 + end +end + +minetest.register_craft( + { + output = "nav:map", + recipe = { + {"default:stick", "default:stick", "default:stick"}, + {"default:paper", "default:paper", "default:paper"}, + {"default:stick", "default:stick", "default:stick"}, + } + }) + + +minetest.register_on_joinplayer(on_joinplayer) +minetest.register_on_leaveplayer(on_leaveplayer) +minetest.register_globalstep(step) +minetest.register_on_player_receive_fields(recieve_fields) \ No newline at end of file diff --git a/mods/nav/textures/nav_background.png b/mods/nav/textures/nav_background.png new file mode 100644 index 0000000..d15331c Binary files /dev/null and b/mods/nav/textures/nav_background.png differ diff --git a/mods/nav/textures/nav_background.xcf b/mods/nav/textures/nav_background.xcf new file mode 100644 index 0000000..15fb2f7 Binary files /dev/null and b/mods/nav/textures/nav_background.xcf differ diff --git a/mods/nav/textures/nav_compass_0.png b/mods/nav/textures/nav_compass_0.png new file mode 100644 index 0000000..721b1c5 Binary files /dev/null and b/mods/nav/textures/nav_compass_0.png differ diff --git a/mods/nav/textures/nav_compass_0.xcf b/mods/nav/textures/nav_compass_0.xcf new file mode 100644 index 0000000..68732d0 Binary files /dev/null and b/mods/nav/textures/nav_compass_0.xcf differ diff --git a/mods/nav/textures/nav_compass_1.png b/mods/nav/textures/nav_compass_1.png new file mode 100644 index 0000000..7ffa05f Binary files /dev/null and b/mods/nav/textures/nav_compass_1.png differ diff --git a/mods/nav/textures/nav_compass_1.xcf b/mods/nav/textures/nav_compass_1.xcf new file mode 100644 index 0000000..d6105be Binary files /dev/null and b/mods/nav/textures/nav_compass_1.xcf differ diff --git a/mods/nav/textures/nav_info.png b/mods/nav/textures/nav_info.png new file mode 100644 index 0000000..aa51a5c Binary files /dev/null and b/mods/nav/textures/nav_info.png differ diff --git a/mods/nav/textures/nav_info.xcf b/mods/nav/textures/nav_info.xcf new file mode 100644 index 0000000..46d0e5a Binary files /dev/null and b/mods/nav/textures/nav_info.xcf differ diff --git a/mods/nav/textures/nav_inventory.png b/mods/nav/textures/nav_inventory.png new file mode 100644 index 0000000..0c483d2 Binary files /dev/null and b/mods/nav/textures/nav_inventory.png differ diff --git a/mods/nav/textures/nav_inventory.xcf b/mods/nav/textures/nav_inventory.xcf new file mode 100644 index 0000000..8e1b09f Binary files /dev/null and b/mods/nav/textures/nav_inventory.xcf differ diff --git a/mods/nav/textures/nav_legend.png b/mods/nav/textures/nav_legend.png new file mode 100644 index 0000000..3ed3d9c Binary files /dev/null and b/mods/nav/textures/nav_legend.png differ diff --git a/mods/nav/textures/nav_legend.xcf b/mods/nav/textures/nav_legend.xcf new file mode 100644 index 0000000..dd1d545 Binary files /dev/null and b/mods/nav/textures/nav_legend.xcf differ diff --git a/mods/nav/textures/nav_map_compass.png b/mods/nav/textures/nav_map_compass.png new file mode 100644 index 0000000..a18a518 Binary files /dev/null and b/mods/nav/textures/nav_map_compass.png differ diff --git a/mods/nav/textures/nav_map_compass.xcf b/mods/nav/textures/nav_map_compass.xcf new file mode 100644 index 0000000..c54c50d Binary files /dev/null and b/mods/nav/textures/nav_map_compass.xcf differ diff --git a/mods/nav/textures/nav_waypoint.png b/mods/nav/textures/nav_waypoint.png new file mode 100644 index 0000000..8a62d1b Binary files /dev/null and b/mods/nav/textures/nav_waypoint.png differ diff --git a/mods/nav/textures/nav_waypoint.xcf b/mods/nav/textures/nav_waypoint.xcf new file mode 100644 index 0000000..8958349 Binary files /dev/null and b/mods/nav/textures/nav_waypoint.xcf differ diff --git a/mods/tnt/README.txt b/mods/tnt/README.txt new file mode 100644 index 0000000..3ad9ee4 --- /dev/null +++ b/mods/tnt/README.txt @@ -0,0 +1,10 @@ +TNT mod +======= +By PilzAdam and ShadowNinja +Tweaked by Kaadmy, for Pixture + +Adds explodable TNT +Place a block of TNT, then click on it with a torch + +Source license: CC0(original WTFPL) +Sound license: CC0(original WTFPL) diff --git a/mods/tnt/depends.txt b/mods/tnt/depends.txt new file mode 100644 index 0000000..3a7daa1 --- /dev/null +++ b/mods/tnt/depends.txt @@ -0,0 +1,2 @@ +default + diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua new file mode 100644 index 0000000..b87739c --- /dev/null +++ b/mods/tnt/init.lua @@ -0,0 +1,260 @@ +-- Default to enabled in singleplayer and disabled in multiplayer +local singleplayer = minetest.is_singleplayer() +local setting = minetest.setting_getbool("tnt_enable") + +if (not singleplayer and setting ~= true) or (singleplayer and setting == false) then + return +end + +-- loss probabilities array (one in X will be lost) +local loss_prob = {} + +loss_prob["default:cobble"] = 3 +loss_prob["default:dirt"] = 4 + +local radius = tonumber(minetest.setting_get("tnt_radius") or 3) + +-- Fill a list with data for content IDs, after all nodes are registered +local cid_data = {} +minetest.after( + 0, + function() + for name, def in pairs(minetest.registered_nodes) do + cid_data[minetest.get_content_id(name)] = { + name = name, + drops = def.drops, + on_blast = def.on_blast, + } + end + end) + +local function rand_pos(center, pos, radius) + pos.x = center.x + math.random(-radius, radius) + pos.z = center.z + math.random(-radius, radius) +end + +local function eject_drops(drops, pos, radius) + local drop_pos = vector.new(pos) + for _, item in pairs(drops) do + local count = item:get_count() + local max = item:get_stack_max() + if count > max then + item:set_count(max) + end + while count > 0 do + if count < max then + item:set_count(count) + end + rand_pos(pos, drop_pos, radius) + local obj = minetest.add_item(drop_pos, item) + if obj then + obj:get_luaentity().collect = true + obj:setacceleration({x=0, y=-10, z=0}) + obj:setvelocity({x=math.random(-3, 3), y=10, + z=math.random(-3, 3)}) + end + count = count - max + end + end +end + +local function add_drop(drops, item) + item = ItemStack(item) + local name = item:get_name() + if loss_prob[name] ~= nil and math.random(1, loss_prob[name]) == 1 then + return + end + + local drop = drops[name] + if drop == nil then + drops[name] = item + else + drop:set_count(drop:get_count() + item:get_count()) + end +end + +local function destroy(drops, pos, cid) + if minetest.is_protected(pos, "") then + return + end + local def = cid_data[cid] + if def and def.on_blast then + def.on_blast(vector.new(pos), 1) + return + end + + minetest.remove_node(pos) + if def then + local node_drops = minetest.get_node_drops(def.name, "") + for _, item in ipairs(node_drops) do + add_drop(drops, item) + end + end +end + + +local function calc_velocity(pos1, pos2, old_vel, power) + local vel = vector.direction(pos1, pos2) + vel = vector.normalize(vel) + vel = vector.multiply(vel, power) + + -- Divide by distance + local dist = vector.distance(pos1, pos2) + dist = math.max(dist, 1) + vel = vector.divide(vel, dist) + + -- Add old velocity + vel = vector.add(vel, old_vel) + return vel +end + +local function entity_physics(pos, radius) + -- Make the damage radius larger than the destruction radius + radius = radius * 2 + local objs = minetest.get_objects_inside_radius(pos, radius) + for _, obj in pairs(objs) do + local obj_pos = obj:getpos() + local obj_vel = obj:getvelocity() + local dist = math.max(1, vector.distance(pos, obj_pos)) + + if obj_vel ~= nil then + obj:setvelocity(calc_velocity(pos, obj_pos, + obj_vel, radius * 10)) + end + + local damage = (4 / dist) * radius + obj:set_hp(obj:get_hp() - damage) + end +end + +local function add_effects(pos, radius) + minetest.add_particlespawner( + { + amount = 128, + time = 1, + minpos = vector.subtract(pos, radius / 2), + maxpos = vector.add(pos, radius / 2), + minvel = {x=-20, y=-20, z=-20}, + maxvel = {x=20, y=20, z=20}, + minacc = vector.new(), + maxacc = vector.new(), + minexptime = 0.2, + maxexptime = 1, + minsize = 16, + maxsize = 24, + texture = "tnt_smoke.png", + }) +end + +local function burn(pos) + local name = minetest.get_node(pos).name + if name == "tnt:tnt" then + minetest.sound_play("tnt_ignite", {pos=pos}) + minetest.set_node(pos, {name="tnt:tnt_burning"}) + minetest.get_node_timer(pos):start(1) + end +end + +local function explode(pos, radius) + local pos = vector.round(pos) + local vm = VoxelManip() + local pr = PseudoRandom(os.time()) + local p1 = vector.subtract(pos, radius) + local p2 = vector.add(pos, radius) + local minp, maxp = vm:read_from_map(p1, p2) + local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) + local data = vm:get_data() + + local drops = {} + local p = {} + + local c_air = minetest.get_content_id("air") + + for z = -radius, radius do + for y = -radius, radius do + local vi = a:index(pos.x + (-radius), pos.y + y, pos.z + z) + for x = -radius, radius do + if (x * x) + (y * y) + (z * z) <= + (radius * radius) + pr:next(-radius, radius) then + local cid = data[vi] + p.x = pos.x + x + p.y = pos.y + y + p.z = pos.z + z + if cid ~= c_air then + destroy(drops, p, cid) + end + end + vi = vi + 1 +end +end +end + +return drops +end + + +local function boom(pos) + minetest.sound_play("tnt_explode", {pos=pos, gain=1.5, max_hear_distance=2*64}) + minetest.set_node(pos, {name="air"}) + minetest.get_node_timer(pos):start(0.5) + + local drops = explode(pos, radius) + entity_physics(pos, radius) + eject_drops(drops, pos, radius) + add_effects(pos, radius) +end + +minetest.register_node( + "tnt:tnt", + { + description = "TNT", + tiles = {"tnt_top.png", "tnt_bottom.png", "tnt_sides.png"}, + is_ground_content = false, + groups = {dig_immediate=2, mesecon=2}, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, puncher) + if puncher:get_wielded_item():get_name() == "default:torch" then + minetest.sound_play("tnt_ignite", {pos=pos}) + minetest.set_node(pos, {name="tnt:tnt_burning"}) + minetest.get_node_timer(pos):start(4) + end + end, + on_blast = function(pos, intensity) + burn(pos) + end, + mesecons = {effector = {action_on = boom}}, + }) + +minetest.register_node( + "tnt:tnt_burning", + { + tiles = { + { + name = "tnt_top_burning.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1, + } + }, + "tnt_bottom.png", "tnt_sides.png"}, + light_source = 5, + drop = "", + sounds = default.node_sound_wood_defaults(), + on_timer = boom, + -- unaffected by explosions + on_blast = function() end, + }) + +minetest.register_craft( + { + output = "tnt:tnt", + recipe = { + {"", "group:planks", ""}, + {"group:planks", "default:torch", "group:planks"}, + {"", "group:planks", ""} + } + }) + +default.log("mod:tnt", "loaded") \ No newline at end of file diff --git a/mods/tnt/sounds/tnt_explode.ogg b/mods/tnt/sounds/tnt_explode.ogg new file mode 100644 index 0000000..a414ea0 Binary files /dev/null and b/mods/tnt/sounds/tnt_explode.ogg differ diff --git a/mods/tnt/sounds/tnt_gunpowder_burning.ogg b/mods/tnt/sounds/tnt_gunpowder_burning.ogg new file mode 100644 index 0000000..5c5bfaf Binary files /dev/null and b/mods/tnt/sounds/tnt_gunpowder_burning.ogg differ diff --git a/mods/tnt/sounds/tnt_ignite.ogg b/mods/tnt/sounds/tnt_ignite.ogg new file mode 100644 index 0000000..199f206 Binary files /dev/null and b/mods/tnt/sounds/tnt_ignite.ogg differ diff --git a/mods/tnt/textures/tnt_bottom.png b/mods/tnt/textures/tnt_bottom.png new file mode 100644 index 0000000..8b43913 Binary files /dev/null and b/mods/tnt/textures/tnt_bottom.png differ diff --git a/mods/tnt/textures/tnt_bottom.xcf b/mods/tnt/textures/tnt_bottom.xcf new file mode 100644 index 0000000..fd0169d Binary files /dev/null and b/mods/tnt/textures/tnt_bottom.xcf differ diff --git a/mods/tnt/textures/tnt_sides.png b/mods/tnt/textures/tnt_sides.png new file mode 100644 index 0000000..fdaaa2e Binary files /dev/null and b/mods/tnt/textures/tnt_sides.png differ diff --git a/mods/tnt/textures/tnt_sides.xcf b/mods/tnt/textures/tnt_sides.xcf new file mode 100644 index 0000000..6f51a3e Binary files /dev/null and b/mods/tnt/textures/tnt_sides.xcf differ diff --git a/mods/tnt/textures/tnt_smoke.png b/mods/tnt/textures/tnt_smoke.png new file mode 100644 index 0000000..9cffdde Binary files /dev/null and b/mods/tnt/textures/tnt_smoke.png differ diff --git a/mods/tnt/textures/tnt_smoke.xcf b/mods/tnt/textures/tnt_smoke.xcf new file mode 100644 index 0000000..090f7be Binary files /dev/null and b/mods/tnt/textures/tnt_smoke.xcf differ diff --git a/mods/tnt/textures/tnt_top.png b/mods/tnt/textures/tnt_top.png new file mode 100644 index 0000000..ee5a22a Binary files /dev/null and b/mods/tnt/textures/tnt_top.png differ diff --git a/mods/tnt/textures/tnt_top.xcf b/mods/tnt/textures/tnt_top.xcf new file mode 100644 index 0000000..1e67d7a Binary files /dev/null and b/mods/tnt/textures/tnt_top.xcf differ diff --git a/mods/tnt/textures/tnt_top_burning.png b/mods/tnt/textures/tnt_top_burning.png new file mode 100644 index 0000000..4a91cce Binary files /dev/null and b/mods/tnt/textures/tnt_top_burning.png differ diff --git a/mods/tnt/textures/tnt_top_burning.xcf b/mods/tnt/textures/tnt_top_burning.xcf new file mode 100644 index 0000000..c6322b0 Binary files /dev/null and b/mods/tnt/textures/tnt_top_burning.xcf differ diff --git a/mods/util/README.txt b/mods/util/README.txt new file mode 100644 index 0000000..5ab6fea --- /dev/null +++ b/mods/util/README.txt @@ -0,0 +1,5 @@ +Utility mod +=========== +By Kaadmy, for Pixture + +Source license: MIT diff --git a/mods/util/init.lua b/mods/util/init.lua new file mode 100644 index 0000000..5d4de34 --- /dev/null +++ b/mods/util/init.lua @@ -0,0 +1,160 @@ +-- +-- Utility functions +-- + +util = {} + +function util.sort_pos(pos1, pos2) + -- function taken from worldedit + -- ensure that pos2 has greater coords than pos1 + pos1 = {x=pos1.x, y=pos1.y, z=pos1.z} + pos2 = {x=pos2.x, y=pos2.y, z=pos2.z} + if pos1.x > pos2.x then + pos2.x, pos1.x = pos1.x, pos2.x + end + if pos1.y > pos2.y then + pos2.y, pos1.y = pos1.y, pos2.y + end + if pos1.z > pos2.z then + pos2.z, pos1.z = pos1.z, pos2.z + end + return pos1, pos2 +end + +function util.fixlight(pos1, pos2) + -- function taken from worldedit + -- repair most lighting in a block + local pos1, pos2 = util.sort_pos(pos1, pos2) + + --make area stay loaded + + local manip = minetest.get_voxel_manip() + manip:read_from_map(pos1, pos2) + + local nodes = minetest.find_nodes_in_area(pos1, pos2, "air") + local dig_node = minetest.dig_node + for _, pos in ipairs(nodes) do + dig_node(pos) + end + + return #nodes +end + +function util.nodefunc(pos1, pos2, name, func) + -- function based off fixlight + -- call a function for every node of a single type + local pos1, pos2 = util.sort_pos(pos1, pos2) + + local manip = minetest.get_voxel_manip() + manip:read_from_map(pos1, pos2) + + local nodes = minetest.find_nodes_in_area(pos1, pos2, name) + for _, pos in ipairs(nodes) do + func(pos) + end +end + +function util.getvoxelmanip(pos1, pos2) + -- function based off fixlight + -- return a voxel manipulator + local pos1, pos2 = util.sort_pos(pos1, pos2) + + local manip = minetest.get_voxel_manip() + manip:read_from_map(pos1, pos2) + + return manip +end + +function util.remove_area(pos1, pos2) + -- function based off fixlight + -- call a function for every node of a single type + local pos1, pos2 = util.sort_pos(pos1, pos2) + + local manip = minetest.get_voxel_manip() + manip:read_from_map(pos1, pos2) + + for i = pos1.x, pos2.x-1 do + for j = pos1.y, pos2.y-1 do + for k = pos1.z, pos2.z-1 do + minetest.remove_node({x = i, y = j, z = k}) + end + end + end +end + +function util.areafunc(pos1, pos2, func) + -- function based off fixlight + -- call a function for every node of a single type + local pos1, pos2 = util.sort_pos(pos1, pos2) + + local manip = minetest.get_voxel_manip() + manip:read_from_map(pos1, pos2) + + for i = pos1.x, pos2.x-1 do + for j = pos1.y, pos2.y-1 do + for k = pos1.z, pos2.z-1 do + func(pos) + end + end + end +end + +function util.reconstruct(pos1, pos2) + -- function based off fixlight + -- force a re-construction of the nodes in an area, for fixing missing metadata in schematics + local pos1, pos2 = util.sort_pos(pos1, pos2) + + local manip = minetest.get_voxel_manip() + manip:read_from_map(pos1, pos2) + + -- fix chests + local nodes = minetest.find_nodes_in_area(pos1, pos2, "default:chest") + for _, pos in ipairs(nodes) do + local node = minetest.registered_nodes[minetest.get_node(pos).name] + + node.on_construct(pos) + end + local nodes = minetest.find_nodes_in_area(pos1, pos2, "music:player") + for _, pos in ipairs(nodes) do + local node = minetest.registered_nodes[minetest.get_node(pos).name] + + node.on_construct(pos) + end + + -- fix furnaces + local nodes = minetest.find_nodes_in_area(pos1, pos2, "default:furnace") + for _, pos in ipairs(nodes) do + local node = minetest.registered_nodes[minetest.get_node(pos).name] + + node.on_construct(pos) + end +end + +function util.choice(tab, pr) + -- return a random index of the given table + + local choices = {} + + for n, _ in pairs(tab) do + table.insert(choices, n) + end + + if #choices <= 0 then return end + + return choices[pr:next(1, #choices)] +end + +function util.choice_element(tab, pr) + -- return a random element of the given table + + local choices = {} + + for _,n in pairs(tab) do + table.insert(choices, n) + end + + if #choices <= 0 then return end + + return choices[pr:next(1, #choices)] +end + diff --git a/mods/village/README.txt b/mods/village/README.txt new file mode 100644 index 0000000..31c312b --- /dev/null +++ b/mods/village/README.txt @@ -0,0 +1,6 @@ +Villages mod +============ +By Kaadmy, for Pixture + +Asset license: CC0 +Source license: MIT diff --git a/mods/village/depends.txt b/mods/village/depends.txt new file mode 100644 index 0000000..2652f55 --- /dev/null +++ b/mods/village/depends.txt @@ -0,0 +1,3 @@ +default +util +mobs diff --git a/mods/village/generate.lua b/mods/village/generate.lua new file mode 100644 index 0000000..9703a72 --- /dev/null +++ b/mods/village/generate.lua @@ -0,0 +1,318 @@ +-- +-- Single village generation +-- + +local mp = minetest.get_modpath("village") + +village.villages = {} + +village.chunkdefs = {} + +village.chunkdefs["livestock_pen"] = { + entities = { + ["mobs:sheep"] = 3, + ["mobs:boar"] = 1, + }, +} +village.chunkdefs["lamppost"] = { -- not road because of road height limit of 1 nodes + entity_chance = 2, + entities = { + ["mobs:npc_farmer"] = 1, + ["mobs:npc_tavernkeeper"] = 1, + }, +} +village.chunkdefs["well"] = { + entities = { + ["mobs:npc_farmer"] = 1, + ["mobs:npc_tavernkeeper"] = 2, + }, +} +village.chunkdefs["house"] = { + entity_chance = 2, + entities = { + ["mobs:npc_farmer"] = 1, + ["mobs:npc_butcher"] = 1, + }, +} +village.chunkdefs["tavern"] = { + entity_chance = 2, + entities = { + ["mobs:npc_tavernkeeper"] = 1, + ["mobs:npc_butcher"] = 2, + ["mobs:npc_blacksmith"] = 1, + }, +} + +village.chunkdefs["forge"] = { + entity_chance = 2, + entities = { + ["mobs:npc_blacksmith"] = 1, + }, +} +village.chunkdefs["orchard"] = { + entity_chance = 3, + entities = { + ["mobs:npc_farmer"] = 1, + }, +} +village.chunkdefs["farm"] = { + entity_chance = 2, + entities = { + ["mobs:npc_farmer"] = 1, + }, +} +village.chunkdefs["farm_papyrus"] = { + entity_chance = 3, + entities = { + ["mobs:npc_farmer"] = 1, + ["mobs:npc_tavernkeeper"] = 1, + }, +} + +village.chunktypes = { + "house", "house", "house", "house", + "tavern", "tavern", + "forge", "forge", + "farm", "farm", + "farm_papyrus", + "livestock_pen", + "orchard", +} + +function village.get_area_height(minp, maxp) + local minp, maxp = util.sort_pos(minp, maxp) + + local avg = 0 + local amt = 0 + + for y = minp.y, maxp.y-1 do + for x = minp.x, maxp.x-1 do + for z = minp.z, maxp.z-1 do + if minetest.get_node({x = x, y = y, z = z}).name == "air" or minetest.get_node({x = x, y = y, z = z}).name == "ignore" then + avg = avg + y + amt = amt + 1 + end + end + end + end + + avg = avg / amt + + return avg +end + +function village.spawn_chunk(pos, orient, replace, pr, chunktype, nofill) + util.getvoxelmanip(pos, {x = pos.x+12, y = pos.y+16, z = pos.z+12}) + + if nofill ~= true then + minetest.place_schematic( + {x = pos.x, y = pos.y-8, z = pos.z}, + mp.."/schematics/village_filler.mts", + "0", + {}, + true + ) + end + + minetest.place_schematic( + pos, + mp.."/schematics/village_"..chunktype..".mts", + orient, + replace, + true + ) + + util.reconstruct(pos, {x = pos.x+12, y = pos.y+16, z = pos.z+12}) + util.fixlight(pos, {x = pos.x+12, y = pos.y+16, z = pos.z+12}) + util.nodefunc( + pos, + {x = pos.x+12, y = pos.y+16, z = pos.z+12}, + "default:chest", + function(pos) + village.goodies.fill(pos, chunktype, pr, "main", 3) + end) + util.nodefunc( + pos, + {x = pos.x+12, y = pos.y+16, z = pos.z+12}, + "music:player", + function(pos) + if pr:next(1, 2) > 1 then + minetest.remove_node(pos) + end + end) + + local chunkdef = village.chunkdefs[chunktype] + if chunkdef ~= nil then + if chunkdef.entities ~= nil then + if chunkdef.entity_chance ~= nil and pr:next(1, chunkdef.entity_chance) == 1 then + util.nodefunc( + pos, + {x = pos.x+12, y = pos.y+16, z = pos.z+12}, + "village:entity_spawner", + function(pos) + minetest.remove_node(pos) + end) + return + end + + local ent_spawns = {} + + util.nodefunc( + pos, + {x = pos.x+12, y = pos.y+16, z = pos.z+12}, + "village:entity_spawner", + function(pos) + table.insert(ent_spawns, pos) + minetest.remove_node(pos) + end) + + if #ent_spawns > 0 then + for ent, amt in pairs(chunkdef.entities) do + for j = 0, pr:next(0, amt) do + local spawn = util.choice_element(ent_spawns, pr) + spawn.y = spawn.y + 1.6 + if spawn ~= nil then + minetest.add_entity(spawn, ent) + end + end + end + end + end + end + + if chunktype == "forge" then + util.nodefunc( + pos, + {x = pos.x+12, y = pos.y+16, z = pos.z+12}, + "default:furnace", + function(pos) + village.goodies.fill(pos, "FURNACE_SRC", pr, "src", 1) + village.goodies.fill(pos, "FURNACE_DST", pr, "dst", 1) + village.goodies.fill(pos, "FURNACE_FUEL", pr, "fuel", 1) + end) + end +end + +function village.spawn_road(pos, houses, built, roads, depth, pr) + for i=1,4 do + local nextpos = {x = pos.x, y = pos.y, z = pos.z} + local orient = "random" + + if i == 1 then + orient = "0" + nextpos.z = nextpos.z - 12 + elseif i == 2 then + orient = "90" + nextpos.x = nextpos.x - 12 + elseif i == 3 then + orient = "180" + nextpos.z = nextpos.z + 12 + else + orient = "270" + nextpos.x = nextpos.x + 12 + end + + if built[dump(nextpos)] == nil then + built[dump(nextpos)] = true + if depth <= 0 or pr:next(1, 8) < 6 then + houses[dump(nextpos)] = {pos = nextpos, front = pos} + + local structure = util.choice_element(village.chunktypes, pr) + village.spawn_chunk(nextpos, orient, {}, pr, structure) + else + roads[dump(nextpos)] = {pos = nextpos} + village.spawn_road(nextpos, houses, built, roads, depth - 1, pr) + end + end + end +end + +function village.spawn_village(pos, pr) + local name = village.name.generate(pr) + + local depth = pr:next(village.min_size, village.max_size) + + village.villages[name] = { + pos = pos, + } + + village.spawn_chunk(pos, "0", {}, pr, "well") + + local houses = {} + local built = {} + local roads = {} + + built[dump(pos)] = true + + village.spawn_road(pos, houses, built, roads, depth, pr) + + local function connects(pos, nextpos) + if houses[dump(nextpos)] ~= nil then + if vector.equals(houses[dump(nextpos)].front, pos) then + return true + end + end + + if roads[dump(nextpos)] ~= nil then + return true + end + + if vector.equals(pos, nextpos) then + return true + end + end + + for _,road in pairs(roads) do + local replaces = { + ["default:planks"] = "default:dirt_with_grass", -- north + ["default:cobble"] = "default:dirt_with_grass", -- east + ["default:planks_oak"] = "default:dirt_with_grass", -- south + ["default:planks_birch"] = "default:dirt_with_grass" -- west + } + + local amt_connections = 0 + + for i = 1, 4 do + local nextpos = {x = road.pos.x, y = road.pos.y, z = road.pos.z} + + if i == 1 then + amt_connections = amt_connections + 1 + nextpos.z = nextpos.z + 12 + if connects(road.pos, nextpos) then + replaces["default:planks"] = "default:heated_dirt_path" + end + elseif i == 2 then + amt_connections = amt_connections + 1 + nextpos.x = nextpos.x + 12 + if connects(road.pos, nextpos) then + replaces["default:cobble"] = "default:heated_dirt_path" + end + elseif i == 3 then + amt_connections = amt_connections + 1 + nextpos.z = nextpos.z - 12 + if connects(road.pos, nextpos) then + replaces["default:planks_oak"] = "default:heated_dirt_path" + end + else + amt_connections = amt_connections + 1 + nextpos.x = nextpos.x - 12 + if connects(road.pos, nextpos) then + replaces["default:planks_birch"] = "default:heated_dirt_path" + end + end + + end + + village.spawn_chunk(road.pos, "0", replaces, pr, "road") + if amt_connections >= 2 then + village.spawn_chunk( + {x = road.pos.x, y = road.pos.y+1, z = road.pos.z}, + "0", + {}, + pr, + "lamppost", + true + ) + end + end +end \ No newline at end of file diff --git a/mods/village/goodies.lua b/mods/village/goodies.lua new file mode 100644 index 0000000..c492cbf --- /dev/null +++ b/mods/village/goodies.lua @@ -0,0 +1,82 @@ +-- +-- Goodies for filling inventories with! +-- Should work with any node with inventory metadata given the correct parameters +-- + +village.goodies = {} + +village.goodies.max_stack = 8 +village.goodies.max_items = 20 + +village.goodies.types = {} +-- custom types +village.goodies.types["FURNACE_SRC"] = { + ["default:lump_iron"] = 3, + ["default:dust_carbonsteel"] = 8, + ["farming:flour"] = 5, +} +village.goodies.types["FURNACE_FUEL"] = { + ["default:lump_coal"] = 2, + ["default:planks_oak"] = 4, + ["default:planks_birch"] = 5, +} +village.goodies.types["FURNACE_DST"] = { + ["default:ingot_steel"] = 5, + ["default:ingot_carbonsteel"] = 12, + ["farming:bread"] = 8, +} + +-- chunk types +village.goodies.types["forge"] = { + ["default:ingot_steel"] = 10, + ["default:lump_coal"] = 4, + ["default:lump_iron"] = 6, + ["default:dust_carbonsteel"] = 18, + ["default:pick_stone"] = 9, + ["default:tree_oak"] = 2, +} +village.goodies.types["tavern"] = { + ["bed:bed"] = 8, + ["default:bucket"] = 20, + ["mobs:meat"] = 5, + ["mobs:pork"] = 9, + ["default:ladder"] = 9, +} +village.goodies.types["house"] = { + ["default:stick"] = 2, + ["farming:bread"] = 6, + ["farming:cotton_1"] = 9, + ["farming:wheat_1"] = 6, + ["default:axe_stone"] = 13, + ["default:apple"] = 3, + ["default:bucket"] = 8, + ["default:bucket_water"] = 12, +} + +function village.goodies.fill(pos, ctype, pr, listname, keepchance) + -- fill an inventory with a specified type's goodies + if village.goodies.types[ctype] == nil then return end + + if pr:next(1, keepchance) ~= 1 then + minetest.remove_node(pos) + return + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + local size = inv:get_size(listname) + + if size < 1 then return end + + local item_amt = pr:next(1, size) + + for i = 1, item_amt do + local chance = village.goodies.types[ctype][util.choice(village.goodies.types[ctype], pr)] + local item = util.choice(village.goodies.types[ctype], pr) + if pr:next(1, chance) <= 1 then + local itemstr = item.." "..pr:next(1, village.goodies.max_stack) + inv:set_stack(listname, pr:next(1, size), ItemStack(itemstr)) + end + end +end diff --git a/mods/village/init.lua b/mods/village/init.lua new file mode 100644 index 0000000..5455dfe --- /dev/null +++ b/mods/village/init.lua @@ -0,0 +1,18 @@ +-- +-- Villages mod +-- By Kaadmy, for Pixture +-- + +village = {} + +village.min_size = 2 -- min chunk gen iterations +village.max_size = 6 -- max chunk gen iterations + +village.pr = PseudoRandom(minetest.get_mapgen_params().seed) + +dofile(minetest.get_modpath("village").."/goodies.lua") +dofile(minetest.get_modpath("village").."/names.lua") +dofile(minetest.get_modpath("village").."/generate.lua") +dofile(minetest.get_modpath("village").."/mapgen.lua") + +default.log("mod:village", "loaded") \ No newline at end of file diff --git a/mods/village/mapgen.lua b/mods/village/mapgen.lua new file mode 100644 index 0000000..1af09b3 --- /dev/null +++ b/mods/village/mapgen.lua @@ -0,0 +1,48 @@ +minetest.register_node( + "village:entity_spawner", + { + description = "Chunk defs may choose which entities to spawn here", + tiles = {"default_brick.png^default_book.png"}, + is_ground_content = false, + groups = {dig_immediate = 2}, + sounds = default.node_sound_wood_defaults({}) + }) + +minetest.register_node( + "village:grassland_village", + { + description = "Spawns a village at this block when placed", + tiles = {"default_grass.png^default_book.png"}, + is_ground_content = false, + groups = {dig_immediate = 2}, + sounds = default.node_sound_wood_defaults({}) + }) + +minetest.register_node( + "village:desert_village", + { + description = "Spawns a village at this block when placed", + tiles = {"default_sand.png^default_book.png"}, + is_ground_content = false, + groups = {dig_immediate = 2}, + sounds = default.node_sound_wood_defaults({}) + }) + +minetest.register_alias("village", "village:grassland_village") + +minetest.register_abm( + { + nodenames = {"village:grassland_village"}, + interval = 1, + chance = 1, + action = function(pos, node) + print("Spawning a Grassland village at "..dump(pos)) + minetest.remove_node(pos) + village.spawn_village(pos, PseudoRandom(minetest.get_mapgen_params().seed+pos.x+pos.y+pos.z)) + end + }) + +minetest.register_on_generated( + function(minp, maxp, seed) + + end) \ No newline at end of file diff --git a/mods/village/names.lua b/mods/village/names.lua new file mode 100644 index 0000000..6e19a97 --- /dev/null +++ b/mods/village/names.lua @@ -0,0 +1,39 @@ +village.name = {} + +village.name.prefixes = {"long", "dan", "fan", "tri", "man"} +village.name.middles = {"er", "in", "ao", "ie", "ir", "et", "em", "me", "el"} +village.name.postfixes = {"ton", "eth", "ing", "arn", "agt", "seg"} + +village.name.used = {} + +function village.name.generate(pr) + local prefix = "" + local middle = "" + local postfix = "" + + local middles = pr:next(2, 5) + + if pr:next(1, 4) <= 1 then + prefix = village.name.prefixes[pr:next(1, #village.name.prefixes)] + middles = middles - 1 + end + + if pr:next(1, 2) <= 1 then + postfix = village.name.postfixes[pr:next(1, #village.name.postfixes)] + middles = middles - 2 + end + + if middles < 2 then + middles = 2 + end + + for i = 1, middles do + middle = middle..village.name.middles[pr:next(1, #village.name.middles)] + end + + local name = prefix..middle..postfix + + village.name.used[name] = true + + return name +end \ No newline at end of file diff --git a/mods/village/schematics/village_farm.mts b/mods/village/schematics/village_farm.mts new file mode 100644 index 0000000..74e1ece Binary files /dev/null and b/mods/village/schematics/village_farm.mts differ diff --git a/mods/village/schematics/village_farm_papyrus.mts b/mods/village/schematics/village_farm_papyrus.mts new file mode 100644 index 0000000..49346ca Binary files /dev/null and b/mods/village/schematics/village_farm_papyrus.mts differ diff --git a/mods/village/schematics/village_filler.mts b/mods/village/schematics/village_filler.mts new file mode 100644 index 0000000..710adf2 Binary files /dev/null and b/mods/village/schematics/village_filler.mts differ diff --git a/mods/village/schematics/village_forge.mts b/mods/village/schematics/village_forge.mts new file mode 100644 index 0000000..952e9cd Binary files /dev/null and b/mods/village/schematics/village_forge.mts differ diff --git a/mods/village/schematics/village_house.mts b/mods/village/schematics/village_house.mts new file mode 100644 index 0000000..9e5ddf5 Binary files /dev/null and b/mods/village/schematics/village_house.mts differ diff --git a/mods/village/schematics/village_lamppost.mts b/mods/village/schematics/village_lamppost.mts new file mode 100644 index 0000000..4fc5f67 Binary files /dev/null and b/mods/village/schematics/village_lamppost.mts differ diff --git a/mods/village/schematics/village_livestock_pen.mts b/mods/village/schematics/village_livestock_pen.mts new file mode 100644 index 0000000..ce596f1 Binary files /dev/null and b/mods/village/schematics/village_livestock_pen.mts differ diff --git a/mods/village/schematics/village_orchard.mts b/mods/village/schematics/village_orchard.mts new file mode 100644 index 0000000..446801e Binary files /dev/null and b/mods/village/schematics/village_orchard.mts differ diff --git a/mods/village/schematics/village_road.mts b/mods/village/schematics/village_road.mts new file mode 100644 index 0000000..a08cd26 Binary files /dev/null and b/mods/village/schematics/village_road.mts differ diff --git a/mods/village/schematics/village_tavern.mts b/mods/village/schematics/village_tavern.mts new file mode 100644 index 0000000..d780264 Binary files /dev/null and b/mods/village/schematics/village_tavern.mts differ diff --git a/mods/village/schematics/village_well.mts b/mods/village/schematics/village_well.mts new file mode 100644 index 0000000..45a1767 Binary files /dev/null and b/mods/village/schematics/village_well.mts differ diff --git a/mods/weather/README.txt b/mods/weather/README.txt new file mode 100644 index 0000000..f08b20c --- /dev/null +++ b/mods/weather/README.txt @@ -0,0 +1,10 @@ +Weather mod +=========== +By Kaadmy, for Pixture + +Texture license: CC0 +Sound license: + weather_night.ogg: CC0 + weather_storm.ogg: GPLv2(Replace this, I want CC0-only assets) + weather_snowstorm.ogg: GPLv2(Replace this, I want CC0-only assets) +Source license: MIT diff --git a/mods/weather/depends.txt b/mods/weather/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/weather/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/weather/init.lua b/mods/weather/init.lua new file mode 100644 index 0000000..897052e --- /dev/null +++ b/mods/weather/init.lua @@ -0,0 +1,277 @@ +-- +-- Weather mod +-- By Kaadmy, for Pixture +-- + +weather = {} +weather.weather = "clear" +weather.types = {"storm", "snowstorm", "clear"} + +local function addvec(v1, v2) + return {x = v1.x + v2.x, y = v1.y + v2.y, z = v1.z + v2.z} +end + +local weather_soundspec=nil +local weather_pr=PseudoRandom(minetest.get_mapgen_params().seed + 2387) + +local function play_sound() + if weather_soundspec ~= nil then + minetest.sound_stop(weather_soundspec) + end + + local timeofday=minetest.get_timeofday() + + if timeofday == nil then + timeofday=1 + end + + timeofday=timeofday*2 + + if weather.weather == "clear" then + if (timeofday > 0.4 and timeofday < 0.5) or (timeofday > 1.5 and timeofday < 1.6) then + -- dusk and dawn + weather_soundspec=minetest.sound_play({name="weather_night", gain=0.5}) + minetest.after(12, play_sound) + + return + elseif (timeofday < 0.4 or timeofday > 1.6) then + -- night + weather_soundspec=minetest.sound_play({name="weather_night", gain=0.3}) + minetest.after(12, play_sound) + + return + end + -- daytime + elseif weather.weather == "storm" then + weather_soundspec=minetest.sound_play({name="weather_storm"}) + + minetest.after(18, play_sound) + return + elseif weather.weather == "snowstorm" then + weather_soundspec=minetest.sound_play({name="weather_snowstorm"}) + + minetest.after(7, play_sound) + return + end + + minetest.after(3, play_sound) +end + +function setweather_type(type) + local valid = false + for i = 1, #weather.types do + if weather.types[i] == type then + valid = true + end + end + if valid then + weather.weather = type + play_sound() + end +end + +minetest.register_globalstep( + function(dtime) + if minetest.setting_getbool("weather_enable") then + if weather_pr:next(0, 5000) < 1 then + local weathertype = weather_pr:next(0, 19) + + -- on avg., every 1800 frames the weather.weather will change to one of: + -- 13/20 chance of clear weather + -- 6/20 chance or stormy weather + -- 1/20 chance of snowstorm weather + + if weathertype < 13 then + weather.weather = "clear" + elseif weathertype < 19 then + weather.weather = "storm" + elseif weathertype < 20 then + weather.weather = "snowstorm" + end + end + end + + local light = (minetest.get_timeofday()*2) + + if light > 1 then + light=1-(light-1) + end + light=(light*0.6)+0.1 + + local skycol=math.floor(light*190) + + for _,player in ipairs(minetest.get_connected_players()) do + if weather.weather == "storm" or weather.weather == "snowstorm" then + player:set_sky({r = skycol, g = skycol, b = skycol*1.2}, "plain", {}) + player:override_day_night_ratio(light) + else + player:set_sky(nil, "regular", {}) + player:override_day_night_ratio(nil) + end + + local p=player:getpos() + + if weather.weather == "storm" then + if minetest.get_node_light({x=p.x, y=p.y+15, z=p.z}, 0.5) == 15 then + local minpos = addvec(player:getpos(), {x = -15, y = 15, z = -15}) + local maxpos = addvec(player:getpos(), {x = 15, y = 10, z = 15}) + minetest.add_particlespawner( + { + amount = 30, + time = 0.5, + minpos = minpos, + maxpos = maxpos, + minvel = {x = 0, y = -20, z = 0}, + maxvel = {x = 0, y = -20, z = 0}, + minexptime = 0.9, + maxexptime = 1.1, + minsize = 2, + maxsize = 3, + collisiondetection = true, + vertical = true, + texture = "weather_rain.png", + playername = player:get_player_name() + } + ) + end + elseif weather.weather == "snowstorm" then + if math.random(0, 6000*dtime) <= 1 then + local hp = player:get_hp() + + if minetest.get_node_light(p) == 15 then + player:set_hp(hp-1) + end + end + + if minetest.get_node_light({x=p.x, y=p.y+15, z=p.z}, 0.5) == 15 then + local minpos = addvec(player:getpos(), {x = -30, y = 20, z = -30}) + local maxpos = addvec(player:getpos(), {x = 30, y = 15, z = 30}) + local vel = {x = 16.0, y = -8, z = 13.0} + local acc = {x = -16.0, y = -8, z = -13.0} + minetest.add_particlespawner( + { + amount = 8, + time = 0.4, + minpos = minpos, + maxpos = maxpos, + minvel = {x=-vel.x, y=vel.y, z=-vel.z}, + maxvel = vel, + minacc = acc, + maxacc = acc, + minexptime = 1.0, + maxexptime = 1.4, + minsize = 3, + maxsize = 4, + collisiondetection = true, + vertical = false, + texture = "weather_snowflake.png", + playername = player:get_player_name() + } + ) + end + end + end + end +) + +minetest.register_abm( + { + nodenames = {"weather:ice"}, + interval = 4, + chance = 80, + action = function(pos, node, active_object_count, active_object_count_wider) + if weather.weather ~= "snowstorm" then + minetest.remove_node(pos) + end + end + }) + +minetest.register_abm( + { + nodenames = {"air"}, + interval = 2, + chance = 80, + action = function(pos, node, active_object_count, active_object_count_wider) + if minetest.get_node_light(pos) ~= 15 then return end + + local under_nodepos={x=pos.x, y=pos.y-1, z=pos.z} + local under_node=minetest.get_node(under_nodepos) + + if under_node.name == "air" then return end + + local under_nodedef=minetest.registered_nodes[under_node.name] + + if under_node.name == "default:water_source" and weather.weather == "snowstorm" then + minetest.set_node(under_nodepos, {name = "weather:ice"}) + else + if under_node.name ~= "weather:snow" then + if weather.weather == "snowstorm" then + if under_node.name ~= "default:heated_dirt_path" then + if under_nodedef.walkable then + minetest.set_node(pos, {name = "weather:snow"}) + elseif under_nodedef.drawtype ~= "airlike" and under_nodedef.buildable_to and math.random(0, 20) <= 1 then + minetest.set_node(under_nodepos, {name = "weather:snow"}) + end + end + end + else + if weather.weather ~= "snowstorm" then + minetest.remove_node(under_nodepos) + end + end + end + end, + }) + +minetest.register_node( + "weather:snow", + { + description = "Snow", + tiles ={"weather_snow.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -0.5+(1/8), 0.5}, + }, + groups = {crumbly=3, falling_node=1, snow=1, fall_damage_add_percent=-10}, + sounds = default.node_sound_snow_defaults(), + }) + +minetest.register_node( + "weather:ice", + { + description = "Ice", + drawtype = "glasslike", + tiles ={"weather_ice.png"}, + use_texture_alpha = true, + paramtype = "light", + groups = {snappy=3, ice=1, fall_damage_add_percent=10}, + sounds = default.node_sound_glass_defaults(), + on_destruct = function(pos) + local function add_water() + minetest.set_node(pos, {name = "default:water_source"}) + end + + if minetest.find_node_near(pos, 1, {"weather:ice", "default:water_source"}) then + minetest.after(0, add_water) + end + end + }) + +minetest.register_privilege("weather", "Can use /weather.weather command") + +minetest.register_chatcommand( + "weather", + { + params = "[storm|snowstorm|clear]", + description = "Set the weather to either clear, storm, or snowstorm", + privs = {weather= true}, + func = function(name, param) + setweather_type(param) + end + }) + +setweather_type("clear") + +default.log("mod:weather", "loaded") \ No newline at end of file diff --git a/mods/weather/sounds/weather_night.ogg b/mods/weather/sounds/weather_night.ogg new file mode 100644 index 0000000..04e05f1 Binary files /dev/null and b/mods/weather/sounds/weather_night.ogg differ diff --git a/mods/weather/sounds/weather_snowstorm.ogg b/mods/weather/sounds/weather_snowstorm.ogg new file mode 100644 index 0000000..4287de8 Binary files /dev/null and b/mods/weather/sounds/weather_snowstorm.ogg differ diff --git a/mods/weather/sounds/weather_storm.ogg b/mods/weather/sounds/weather_storm.ogg new file mode 100644 index 0000000..b9b2ae1 Binary files /dev/null and b/mods/weather/sounds/weather_storm.ogg differ diff --git a/mods/weather/textures/weather_ice.png b/mods/weather/textures/weather_ice.png new file mode 100644 index 0000000..026b791 Binary files /dev/null and b/mods/weather/textures/weather_ice.png differ diff --git a/mods/weather/textures/weather_ice.xcf b/mods/weather/textures/weather_ice.xcf new file mode 100644 index 0000000..a0e7520 Binary files /dev/null and b/mods/weather/textures/weather_ice.xcf differ diff --git a/mods/weather/textures/weather_rain.png b/mods/weather/textures/weather_rain.png new file mode 100644 index 0000000..fcc13a8 Binary files /dev/null and b/mods/weather/textures/weather_rain.png differ diff --git a/mods/weather/textures/weather_rain.xcf b/mods/weather/textures/weather_rain.xcf new file mode 100644 index 0000000..13ab57e Binary files /dev/null and b/mods/weather/textures/weather_rain.xcf differ diff --git a/mods/weather/textures/weather_snow.png b/mods/weather/textures/weather_snow.png new file mode 100644 index 0000000..dbfc6b3 Binary files /dev/null and b/mods/weather/textures/weather_snow.png differ diff --git a/mods/weather/textures/weather_snow.xcf b/mods/weather/textures/weather_snow.xcf new file mode 100644 index 0000000..7924642 Binary files /dev/null and b/mods/weather/textures/weather_snow.xcf differ diff --git a/mods/weather/textures/weather_snowflake.png b/mods/weather/textures/weather_snowflake.png new file mode 100644 index 0000000..65374c8 Binary files /dev/null and b/mods/weather/textures/weather_snowflake.png differ diff --git a/mods/weather/textures/weather_snowflake.xcf b/mods/weather/textures/weather_snowflake.xcf new file mode 100644 index 0000000..740cc5d Binary files /dev/null and b/mods/weather/textures/weather_snowflake.xcf differ diff --git a/mods/wielditem/README.txt b/mods/wielditem/README.txt new file mode 100644 index 0000000..b068e45 --- /dev/null +++ b/mods/wielditem/README.txt @@ -0,0 +1,7 @@ +Wielditem mod +============== +By Kaadmy, for Pixture + +Shows the wield item in 3rd person view + +Source license: MIT diff --git a/mods/wielditem/depends.txt b/mods/wielditem/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/wielditem/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/wielditem/init.lua b/mods/wielditem/init.lua new file mode 100644 index 0000000..df324b0 --- /dev/null +++ b/mods/wielditem/init.lua @@ -0,0 +1,19 @@ +-- +-- Wielditem mod +-- By Kaadmy, for Pixture +-- + +local update_time = 1 +local timer = 10 + +local function step(dtime) + timer = timer + dtime + if timer > update_time then + for _, player in pairs(minetest.get_connected_players()) do + + end + timer = 0 + end +end + +minetest.register_globalstep(step)