diff --git a/GROUPS.md b/GROUPS.md index e2137d43..07dd800e 100644 --- a/GROUPS.md +++ b/GROUPS.md @@ -109,6 +109,7 @@ These groups are used mostly for informational purposes * `flower_pot=2`: Flower pot with a plant or flower * `flower=1`: Flower * `place_flowerlike=1`: Node has placement rules like that of a flower +* `place_flowerlike=2`: Node has placement rules like tall grass * `cake`: Cake (rating = slices left) * `book=1`: Book * `pane=1`: Node is a “pane”-like node glass pane or iron bars diff --git a/README.md b/README.md index 73ac4f78..2287df9f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. -Version: 0.29.2 +Version: 0.30.0 ### Gameplay You start in a randomly-generated world made entirely of cubes. You can explore @@ -149,6 +149,7 @@ Bonus features (not found in Minecraft 1.11): * Built-in crafting guide which shows you crafting and smelting recipes * In-game help system containing extensive help about gameplay basics, blocks, items and more * Temporary crafting recipes. They only exist to make some otherwise unaccessible items available when you're not in creative mode. These recipes will be removed as development goes on an more features become available +* Saplings in chests (only in mapgen v6, because only 3 out of 6 tree species grow here) Technical differences from Minecraft: @@ -161,7 +162,7 @@ Technical differences from Minecraft: * Different textures (Pixel Perfection) * Different sounds (various sources) * Different engine (Minetest) -* Free software (“free” as in freedom *and* free beer) +* Free software (“free” as in freedom) ## Reporting bugs Please report all bugs and missing Minecraft features here: diff --git a/mods/CORE/mcl_init/init.lua b/mods/CORE/mcl_init/init.lua index c68df274..d239c8d9 100644 --- a/mods/CORE/mcl_init/init.lua +++ b/mods/CORE/mcl_init/init.lua @@ -72,6 +72,8 @@ end mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000 +mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 80, z = 0 } + -- Realm barrier used to safely separate the End from the void below the Overworld mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max mcl_vars.mg_realm_barrier_overworld_end_min = mcl_vars.mg_end_max - 11 diff --git a/mods/CORE/mcl_sounds/init.lua b/mods/CORE/mcl_sounds/init.lua index 62dc34a9..a428e332 100644 --- a/mods/CORE/mcl_sounds/init.lua +++ b/mods/CORE/mcl_sounds/init.lua @@ -134,3 +134,10 @@ function mcl_sounds.node_sound_water_defaults(table) mcl_sounds.node_sound_defaults(table) return table end + + +-- Player death sound +minetest.register_on_dieplayer(function(player) + -- TODO: Add separate death sound + minetest.sound_play({name="player_damage", gain = 1.0}, {pos=player:get_pos(), max_hear_distance=16}) +end) diff --git a/mods/CORE/mcl_sounds/sounds/default_place_node_hard.1.ogg b/mods/CORE/mcl_sounds/sounds/default_place_node_hard.1.ogg index 76eecf97..9f97faca 100644 Binary files a/mods/CORE/mcl_sounds/sounds/default_place_node_hard.1.ogg and b/mods/CORE/mcl_sounds/sounds/default_place_node_hard.1.ogg differ diff --git a/mods/CORE/mcl_sounds/sounds/default_tool_breaks.ogg b/mods/CORE/mcl_sounds/sounds/default_tool_breaks.ogg index c68522cd..a68f7c90 100644 Binary files a/mods/CORE/mcl_sounds/sounds/default_tool_breaks.ogg and b/mods/CORE/mcl_sounds/sounds/default_tool_breaks.ogg differ diff --git a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.1.ogg b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.1.ogg index 2c0e04f0..3ab633a5 100644 Binary files a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.1.ogg and b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.1.ogg differ diff --git a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.2.ogg b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.2.ogg index 6d01262a..647ea6ec 100644 Binary files a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.2.ogg and b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.2.ogg differ diff --git a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.3.ogg b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.3.ogg index f8b41517..f4faadcd 100644 Binary files a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.3.ogg and b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.3.ogg differ diff --git a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.4.ogg b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.4.ogg index b31beadc..54168009 100644 Binary files a/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.4.ogg and b/mods/CORE/mcl_sounds/sounds/pedology_snow_soft_footstep.4.ogg differ diff --git a/mods/CORE/mcl_util/init.lua b/mods/CORE/mcl_util/init.lua index e3c57466..650af886 100644 --- a/mods/CORE/mcl_util/init.lua +++ b/mods/CORE/mcl_util/init.lua @@ -411,10 +411,12 @@ end mcl_util.clock_works = mcl_util.compass_works -- Returns a on_place function for plants --- * condition: function(pos, node) +-- * condition: function(pos, node, itemstack) -- * A function which is called by the on_place function to check if the node can be placed --- * Must return true, if placement is allowed, false otherwise +-- * Must return true, if placement is allowed, false otherwise. +-- * If it returns a string, placement is allowed, but will place this itemstring as a node instead -- * pos, node: Position and node table of plant node +-- * itemstack: Itemstack to place function mcl_util.generate_on_place_plant_function(condition) return function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then @@ -445,9 +447,10 @@ function mcl_util.generate_on_place_plant_function(condition) end -- Check placement rules - if (condition(place_pos, node) == true) then + local result, param2 = condition(place_pos, node, itemstack) + if result == true then local idef = itemstack:get_definition() - local new_itemstack, success = minetest.item_place_node(itemstack, placer, pointed_thing) + local new_itemstack, success = minetest.item_place_node(itemstack, placer, pointed_thing, param2) if success then if idef.sounds and idef.sounds.place then diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg b/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg index 84c3e013..fcf63c74 100644 Binary files a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg and b/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.1.ogg differ diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg b/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg index 18790fc1..e1954bbf 100644 Binary files a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg and b/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.2.ogg differ diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg b/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg index f3674069..74ddd45b 100644 Binary files a/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg and b/mods/ENTITIES/drippingwater/sounds/drippingwater_drip.3.ogg differ diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg b/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg index 681784c5..46447f93 100644 Binary files a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg and b/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.1.ogg differ diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg b/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg index 3a66367c..b8e9deaf 100644 Binary files a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg and b/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.2.ogg differ diff --git a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg b/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg index 40be35aa..9cb15024 100644 Binary files a/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg and b/mods/ENTITIES/drippingwater/sounds/drippingwater_lavadrip.3.ogg differ diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg index 2ae432d5..8010ff0a 100644 Binary files a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg and b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.1.ogg differ diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.2.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.2.ogg index f58bf08e..a5087ab7 100644 Binary files a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.2.ogg and b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.2.ogg differ diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg index cf57c94c..f234a482 100644 Binary files a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg and b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.3.ogg differ diff --git a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.4.ogg b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.4.ogg index bfe99d9a..6436f267 100644 Binary files a/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.4.ogg and b/mods/ENTITIES/mcl_item_entity/sounds/item_drop_pickup.4.ogg differ diff --git a/mods/ENTITIES/mobs_mc/0_gameconfig.lua b/mods/ENTITIES/mobs_mc/0_gameconfig.lua index aa7c5bd4..f9624abc 100644 --- a/mods/ENTITIES/mobs_mc/0_gameconfig.lua +++ b/mods/ENTITIES/mobs_mc/0_gameconfig.lua @@ -241,6 +241,19 @@ mobs_mc.enderman_takable = { "nether:rack", } +--[[ Table of nodes to replace when an enderman takes it. +If the enderman takes an indexed node, it the enderman will get the item in the value. +Table indexes: Original node, taken by enderman. +Table values: The item which the enderman *actually* gets +Example: + mobs_mc.enderman_node_replace = { + ["default:dirt_with_dry_grass"] = "default_dirt_with_grass", + } +-- This means, if the enderman takes a dirt with dry grass, he will get a dirt with grass +-- on his hand instead. +]] +mobs_mc.enderman_replace_on_take = {} -- no replacements by default + -- A table which can be used to override block textures of blocks carried by endermen. -- Only works for cube-shaped nodes and nodeboxes. -- Key: itemstrings of the blocks to replace @@ -307,6 +320,9 @@ if minetest.get_modpath("mobs_mc_gameconfig") and mobs_mc.override then if mobs_mc.override.enderman_takable then mobs_mc.enderman_takable = mobs_mc.override.enderman_takable end + if mobs_mc.override.enderman_replace_on_take then + mobs_mc.enderman_replace_on_take = mobs_mc.override.enderman_replace_on_take + end if mobs_mc.enderman_block_texture_overrides then mobs_mc.enderman_block_texture_overrides = mobs_mc.override.enderman_block_texture_overrides end diff --git a/mods/ENTITIES/mobs_mc/enderman.lua b/mods/ENTITIES/mobs_mc/enderman.lua index 1e9fab03..f0294c5b 100644 --- a/mods/ENTITIES/mobs_mc/enderman.lua +++ b/mods/ENTITIES/mobs_mc/enderman.lua @@ -213,7 +213,11 @@ mobs:register_mob("mobs_mc:enderman", { local node = minetest.get_node(take_pos) local dug = minetest.dig_node(take_pos) if dug then - self._taken_node = node.name + if mobs_mc.enderman_replace_on_take[node.name] then + self._taken_node = mobs_mc.enderman_replace_on_take[node.name] + else + self._taken_node = node.name + end local def = minetest.registered_nodes[self._taken_node] -- Update animation and texture accordingly (adds visibly carried block) local block_type diff --git a/mods/ENTITIES/mobs_mc/sounds/green_slime_attack.ogg b/mods/ENTITIES/mobs_mc/sounds/green_slime_attack.ogg index 7afa4cbb..a8ca4939 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/green_slime_attack.ogg and b/mods/ENTITIES/mobs_mc/sounds/green_slime_attack.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_fireball.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_fireball.ogg index bdc4ac21..119818f1 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_fireball.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_fireball.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_kitten.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_kitten.ogg index 021d3dc7..c2cdec59 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_kitten.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_kitten.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_breath.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_breath.ogg index 10f39553..d756a79f 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_breath.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_breath.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_died.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_died.ogg index 39ba86cd..591bffe7 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_died.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_blaze_died.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_lay_egg.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_lay_egg.ogg index dc7ffd68..6a7781aa 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_lay_egg.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_chicken_lay_egg.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_cow.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_cow.ogg index 198375c3..87e57e44 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_cow.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_cow.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_squid_hurt.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_squid_hurt.ogg index 03a18958..58c02297 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_squid_hurt.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_squid_hurt.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_death.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_death.ogg index 9a54d357..62405cb4 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_death.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_death.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_growl.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_growl.ogg index 5e8132ee..82b1416f 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_growl.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_growl.ogg differ diff --git a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_hurt.ogg b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_hurt.ogg index 845a71cc..1ebfa37a 100644 Binary files a/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_hurt.ogg and b/mods/ENTITIES/mobs_mc/sounds/mobs_mc_zombie_hurt.ogg differ diff --git a/mods/ENTITIES/mobs_mc_gameconfig/init.lua b/mods/ENTITIES/mobs_mc_gameconfig/init.lua index a41a8b44..ddbd2050 100644 --- a/mods/ENTITIES/mobs_mc_gameconfig/init.lua +++ b/mods/ENTITIES/mobs_mc_gameconfig/init.lua @@ -86,7 +86,8 @@ mobs_mc.override.items = { mycelium = "mcl_core:mycelium", carrot = "mcl_farming:carrot_item", golden_carrot = "mcl_farming:carrot_item_gold", - fishing_rod = "mcl_fishing:fishing_rod", + fishing_rod = "mcl_core:stick", + --TODO: Re-enable: fishing_rod = "mcl_fishing:fishing_rod", fish_raw = "mcl_fishing:fish_raw", salmon_raw = "mcl_fishing:salmon_raw", clownfish_raw = "mcl_fishing:clownfish_raw", @@ -150,6 +151,7 @@ mobs_mc.override.replace = { -- Sheep eat grass sheep = { { "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 }, + { "mcl_core:dirt_with_dry_grass", "mcl_core:dirt", -1 }, { "mcl_flowers:tallgrass", "air", 0 }, }, -- Silverfish populate stone, etc. with monster eggs @@ -168,7 +170,9 @@ mobs_mc.override.enderman_takable = { -- Generic handling, useful for entensions "group:enderman_takable", } - +mobs_mc.override.enderman_replace_on_take = { + ["mcl_core:dirt_with_dry_grass"] = "mcl_core:dirt_with_grass", +} -- Texuture overrides for enderman block. Required for cactus because it's original is a nodebox -- and the textures have tranparent pixels. @@ -190,18 +194,18 @@ mobs_mc.override.enderman_block_texture_overrides = { -- List of nodes on which mobs can spawn mobs_mc.override.spawn = { solid = { "group:solid", }, -- spawn on "solid" nodes - grassland = { mobs_mc.override.items.grass_block }, - savanna = { "group:sand", "mcl_core:sandstone", "mcl_core:redsandstone" }, - grassland_savanna = { mobs_mc.override.items.grass_block, "group:sand", "mcl_core:sandstone", "mcl_core:redsandstone" }, - desert = { "group:sand" }, + grassland = { "mcl_core:dirt_with_grass" }, + savanna = { "mcl_core:dirt_with_dry_grass" }, + grassland_savanna = { "mcl_core:dirt_with_grass", "mcl_core:dirt_with_dry_grass" }, + desert = { "mcl_core:sand", "mcl_core:sandstone" }, jungle = { "mcl_core:jungletree", "mcl_core:jungleleaves", "mcl_flowers:fern", "mcl_core:vine" }, - snow = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow" }, + snow = { "mcl_core:snow", "mcl_core:snowblock", "mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_dry_grass_snow" }, -- End stone added for shulkers because End cities don't generate yet end_city = { "mcl_end:end_stone", "mcl_end:purpur_block" }, nether = { "mcl_nether:netherrack", "mcl_nether:quartz_ore" }, -- Netherrack added because there are no Nether fortresses yet. TODO: Remove netherrac from list as soon they're available nether_fortress = { "mcl_nether:nether_brick", "mcl_nether:netherrack" }, - wolf = { mobs_mc.override.items.grass_block, "mcl_core:dirt", "mcl_core:dirt_with_grass_snow", "mcl_core:snow", "mcl_core:snowblock", "mcl_core:podzol" }, + wolf = { mobs_mc.override.items.grass_block, "mcl_core:dirt", "mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_dry_grass_snow", "mcl_core:snow", "mcl_core:snowblock", "mcl_core:podzol" }, } -- This table contains important spawn height references for the mob spawn height. diff --git a/mods/ENVIRONMENT/lightning/init.lua b/mods/ENVIRONMENT/lightning/init.lua index be75eecc..d1e75195 100644 --- a/mods/ENVIRONMENT/lightning/init.lua +++ b/mods/ENVIRONMENT/lightning/init.lua @@ -34,7 +34,7 @@ local revertsky = function(dtime) return end - skycolor.remove_layer("lightning") + mcl_weather.skycolor.remove_layer("lightning") ps = {} end @@ -136,8 +136,8 @@ lightning.strike = function(pos) local name = player:get_player_name() if ps[name] == nil then ps[name] = {p = player, sky = sky} - skycolor.add_layer("lightning", {{r=255,g=255,b=255}}, true) - skycolor.active = true + mcl_weather.skycolor.add_layer("lightning", {{r=255,g=255,b=255}}, true) + mcl_weather.skycolor.active = true end end @@ -184,7 +184,7 @@ lightning.strike = function(pos) if lua.name == "mobs_mc:pig" then local rot = obj:get_yaw() obj:remove() - obj = minetest.add_entity(pos2, "mobs_mc:zombiepig") + obj = minetest.add_entity(pos2, "mobs_mc:pigman") obj:set_yaw(rot) -- villager → witch elseif lua.name == "mobs_mc:villager" then diff --git a/mods/ENVIRONMENT/weather_pack/README.md b/mods/ENVIRONMENT/mcl_weather/README.md similarity index 90% rename from mods/ENVIRONMENT/weather_pack/README.md rename to mods/ENVIRONMENT/mcl_weather/README.md index 09d83e3b..837a13d3 100644 --- a/mods/ENVIRONMENT/weather_pack/README.md +++ b/mods/ENVIRONMENT/mcl_weather/README.md @@ -1,6 +1,6 @@ -weather-pack +`mcl_weather` ======================= -Weather mod for Minetest (http://minetest.net/) +Weather mod for MineClone 2. Forked from `weather_pack`. Weathers included ----------------------- @@ -10,13 +10,13 @@ Weathers included Commands ----------------------- -`set_weather ` requires `weather_manager` privilege. +`weather `, requires `weather_manager` privilege. Dependencies ----------------------- Thunder weather requres [lightning](https://github.com/minetest-mods/lightning) mod. -Configuration properties +Configuration prope, ties ----------------------- Weather mod for indoor check depends on sunlight propogation check. Some nodes (e.g. glass block) propogates sunlight and thus weather particles will go through it. To change that set `weather_allow_override_nodes=true` in `minetest.conf` file. Be aware that just few nodes will be override and these blocks needs to be re-builded to take effect. Maybe in future other 'cheap' way to check indoor will be available. diff --git a/mods/ENVIRONMENT/weather_pack/depends.txt b/mods/ENVIRONMENT/mcl_weather/depends.txt similarity index 100% rename from mods/ENVIRONMENT/weather_pack/depends.txt rename to mods/ENVIRONMENT/mcl_weather/depends.txt diff --git a/mods/ENVIRONMENT/mcl_weather/description.txt b/mods/ENVIRONMENT/mcl_weather/description.txt new file mode 100644 index 00000000..0cd37d0d --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/description.txt @@ -0,0 +1 @@ +Weather: Rain, snow, thunderstorm. diff --git a/mods/ENVIRONMENT/weather_pack/init.lua b/mods/ENVIRONMENT/mcl_weather/init.lua similarity index 86% rename from mods/ENVIRONMENT/weather_pack/init.lua rename to mods/ENVIRONMENT/mcl_weather/init.lua index f740cc0f..04f83f8c 100644 --- a/mods/ENVIRONMENT/weather_pack/init.lua +++ b/mods/ENVIRONMENT/mcl_weather/init.lua @@ -1,4 +1,4 @@ -local modpath = minetest.get_modpath("weather_pack"); +local modpath = minetest.get_modpath("mcl_weather"); dofile(modpath.."/weather_core.lua") dofile(modpath.."/snow.lua") dofile(modpath.."/rain.lua") diff --git a/mods/ENVIRONMENT/mcl_weather/mod.conf b/mods/ENVIRONMENT/mcl_weather/mod.conf new file mode 100644 index 00000000..4cc16984 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/mod.conf @@ -0,0 +1 @@ +name = mcl_weather diff --git a/mods/ENVIRONMENT/weather_pack/rain.lua b/mods/ENVIRONMENT/mcl_weather/rain.lua similarity index 61% rename from mods/ENVIRONMENT/weather_pack/rain.lua rename to mods/ENVIRONMENT/mcl_weather/rain.lua index 1ae87f05..6f6fdec5 100644 --- a/mods/ENVIRONMENT/weather_pack/rain.lua +++ b/mods/ENVIRONMENT/mcl_weather/rain.lua @@ -1,7 +1,7 @@ local PARTICLES_COUNT_RAIN = 30 local PARTICLES_COUNT_THUNDER = 45 -rain = { +mcl_weather.rain = { -- max rain particles created at time particles_count = PARTICLES_COUNT_RAIN, @@ -18,7 +18,7 @@ rain = { init_done = false, } -rain.sound_handler = function(player) +mcl_weather.rain.sound_handler = function(player) return minetest.sound_play("weather_rain", { object = player, max_hear_distance = 2, @@ -27,16 +27,16 @@ rain.sound_handler = function(player) end -- set skybox based on time (uses skycolor api) -rain.set_sky_box = function() - if weather.state == "rain" then - skycolor.add_layer( +mcl_weather.rain.set_sky_box = function() + if mcl_weather.state == "rain" then + mcl_weather.skycolor.add_layer( "weather-pack-rain-sky", {{r=0, g=0, b=0}, {r=85, g=86, b=98}, {r=175, g=175, b=191}, {r=85, g=86, b=98}, {r=0, g=0, b=0}}) - skycolor.active = true + mcl_weather.skycolor.active = true for _, player in pairs(minetest.get_connected_players()) do player:set_clouds({color="#5D5D5FE8"}) end @@ -45,13 +45,13 @@ end -- creating manually parctiles instead of particles spawner because of easier to control -- spawn position. -rain.add_rain_particles = function(player) +mcl_weather.rain.add_rain_particles = function(player) - rain.last_rp_count = 0 - for i=rain.particles_count, 1,-1 do - local random_pos_x, random_pos_y, random_pos_z = weather.get_random_pos_by_player_look_dir(player) - if weather.is_outdoor({x=random_pos_x, y=random_pos_y, z=random_pos_z}) then - rain.last_rp_count = rain.last_rp_count + 1 + mcl_weather.rain.last_rp_count = 0 + for i=mcl_weather.rain.particles_count, 1,-1 do + local random_pos_x, random_pos_y, random_pos_z = mcl_weather.get_random_pos_by_player_look_dir(player) + if mcl_weather.is_outdoor({x=random_pos_x, y=random_pos_y, z=random_pos_z}) then + mcl_weather.rain.last_rp_count = mcl_weather.rain.last_rp_count + 1 minetest.add_particle({ pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, velocity = {x=0, y=-10, z=0}, @@ -61,7 +61,7 @@ rain.add_rain_particles = function(player) collisiondetection = true, collision_removal = true, vertical = true, - texture = rain.get_texture(), + texture = mcl_weather.rain.get_texture(), playername = player:get_player_name() }) end @@ -69,7 +69,7 @@ rain.add_rain_particles = function(player) end -- Simple random texture getter -rain.get_texture = function() +mcl_weather.rain.get_texture = function() local texture_name local random_number = math.random() if random_number > 0.33 then @@ -84,42 +84,42 @@ end -- register player for rain weather. -- basically needs for origin sky reference and rain sound controls. -rain.add_player = function(player) - if weather.players[player:get_player_name()] == nil then +mcl_weather.rain.add_player = function(player) + if mcl_weather.players[player:get_player_name()] == nil then local player_meta = {} player_meta.origin_sky = {player:get_sky()} - weather.players[player:get_player_name()] = player_meta + mcl_weather.players[player:get_player_name()] = player_meta end end -- remove player from player list effected by rain. -- be sure to remove sound before removing player otherwise soundhandler reference will be lost. -rain.remove_player = function(player) - local player_meta = weather.players[player:get_player_name()] +mcl_weather.rain.remove_player = function(player) + local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil and player_meta.origin_sky ~= nil then player:set_sky(player_meta.origin_sky[1], player_meta.origin_sky[2], player_meta.origin_sky[3], true) player:set_clouds({color="#FFF0F0E5"}) - weather.players[player:get_player_name()] = nil + mcl_weather.players[player:get_player_name()] = nil end end -- adds and removes rain sound depending how much rain particles around player currently exist. -- have few seconds delay before each check to avoid on/off sound too often -- when player stay on 'edge' where sound should play and stop depending from random raindrop appearance. -rain.update_sound = function(player) - local player_meta = weather.players[player:get_player_name()] +mcl_weather.rain.update_sound = function(player) + local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil then if player_meta.sound_updated ~= nil and player_meta.sound_updated + 5 > minetest.get_gametime() then return false end if player_meta.sound_handler ~= nil then - if rain.last_rp_count == 0 then + if mcl_weather.rain.last_rp_count == 0 then minetest.sound_stop(player_meta.sound_handler) player_meta.sound_handler = nil end - elseif rain.last_rp_count > 0 then - player_meta.sound_handler = rain.sound_handler(player) + elseif mcl_weather.rain.last_rp_count > 0 then + player_meta.sound_handler = mcl_weather.rain.sound_handler(player) end player_meta.sound_updated = minetest.get_gametime() @@ -127,8 +127,8 @@ rain.update_sound = function(player) end -- rain sound removed from player. -rain.remove_sound = function(player) - local player_meta = weather.players[player:get_player_name()] +mcl_weather.rain.remove_sound = function(player) + local player_meta = mcl_weather.players[player:get_player_name()] if player_meta ~= nil and player_meta.sound_handler ~= nil then minetest.sound_stop(player_meta.sound_handler) player_meta.sound_handler = nil @@ -136,63 +136,55 @@ rain.remove_sound = function(player) end -- callback function for removing rain -rain.clear = function() - rain.raining = false - rain.sky_last_update = -1 - rain.init_done = false - rain.set_particles_mode("rain") - skycolor.remove_layer("weather-pack-rain-sky") +mcl_weather.rain.clear = function() + mcl_weather.rain.raining = false + mcl_weather.rain.sky_last_update = -1 + mcl_weather.rain.init_done = false + mcl_weather.rain.set_particles_mode("rain") + mcl_weather.skycolor.remove_layer("weather-pack-rain-sky") for _, player in ipairs(minetest.get_connected_players()) do - rain.remove_sound(player) - rain.remove_player(player) + mcl_weather.rain.remove_sound(player) + mcl_weather.rain.remove_player(player) end end minetest.register_globalstep(function(dtime) - if weather.state ~= "rain" then + if mcl_weather.state ~= "rain" then return false end - rain.make_weather() + mcl_weather.rain.make_weather() end) -rain.make_weather = function() - if rain.init_done == false then - rain.raining = true - rain.set_sky_box() - rain.init_done = true - rain.set_particles_mode(weather.mode) +mcl_weather.rain.make_weather = function() + if mcl_weather.rain.init_done == false then + mcl_weather.rain.raining = true + mcl_weather.rain.set_sky_box() + mcl_weather.rain.set_particles_mode(mcl_weather.mode) + mcl_weather.rain.init_done = true end for _, player in ipairs(minetest.get_connected_players()) do - if (weather.is_underwater(player) or not mcl_util.has_weather(player:getpos())) then - rain.remove_sound(player) + if (mcl_weather.is_underwater(player) or not mcl_util.has_weather(player:getpos())) then + mcl_weather.rain.remove_sound(player) return false end - rain.add_player(player) - rain.add_rain_particles(player) - rain.update_sound(player) + mcl_weather.rain.add_player(player) + mcl_weather.rain.add_rain_particles(player) + mcl_weather.rain.update_sound(player) end end -if weather.reg_weathers.rain == nil then - weather.reg_weathers.rain = { - chance = 15, - light_factor = 0.7, - clear = rain.clear - } -end - -- Switch the number of raindrops: "thunder" for many raindrops, otherwise for normal raindrops -rain.set_particles_mode = function(mode) +mcl_weather.rain.set_particles_mode = function(mode) if mode == "thunder" then - rain.particles_count = PARTICLES_COUNT_THUNDER + mcl_weather.rain.particles_count = PARTICLES_COUNT_THUNDER else - rain.particles_count = PARTICLES_COUNT_RAIN + mcl_weather.rain.particles_count = PARTICLES_COUNT_RAIN end end -if weather.allow_abm then +if mcl_weather.allow_abm then -- ABM for extinguish fire minetest.register_abm({ label = "Rain extinguishes fire", @@ -200,8 +192,8 @@ if weather.allow_abm then interval = 4.0, chance = 2, action = function(pos, node, active_object_count, active_object_count_wider) - if rain.raining and rain.extinguish_fire then - if weather.is_outdoor(pos) then + if mcl_weather.rain.raining and mcl_weather.rain.extinguish_fire then + if mcl_weather.is_outdoor(pos) then minetest.remove_node(pos) minetest.sound_play("fire_extinguish_flame", {pos = pos, max_hear_distance = 16, gain = 0.15}) end @@ -216,7 +208,7 @@ if weather.allow_abm then interval = 56.0, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - if rain.raining and weather.is_outdoor(pos) then + if mcl_weather.rain.raining and mcl_weather.is_outdoor(pos) then if node.name == "mcl_cauldrons:cauldron" then minetest.set_node(pos, {name="mcl_cauldrons:cauldron_1"}) elseif node.name == "mcl_cauldrons:cauldron_1" then @@ -235,7 +227,7 @@ if weather.allow_abm then interval = 22.0, chance = 3, action = function(pos, node, active_object_count, active_object_count_wider) - if rain.raining and weather.is_outdoor(pos) then + if mcl_weather.rain.raining and mcl_weather.is_outdoor(pos) then if node.name == "mcl_farming:soil" then minetest.set_node(pos, {name="mcl_farming:soil_wet"}) end @@ -243,3 +235,18 @@ if weather.allow_abm then end }) end + +if mcl_weather.reg_weathers.rain == nil then + mcl_weather.reg_weathers.rain = { + clear = mcl_weather.rain.clear, + light_factor = 0.6, + -- 10min - 20min + min_duration = 600, + max_duration = 1200, + transitions = { + [65] = "none", + [70] = "snow", + [100] = "thunder", + } + } +end diff --git a/mods/ENVIRONMENT/weather_pack/screenshot.png b/mods/ENVIRONMENT/mcl_weather/screenshot.png similarity index 100% rename from mods/ENVIRONMENT/weather_pack/screenshot.png rename to mods/ENVIRONMENT/mcl_weather/screenshot.png diff --git a/mods/ENVIRONMENT/weather_pack/skycolor.lua b/mods/ENVIRONMENT/mcl_weather/skycolor.lua similarity index 62% rename from mods/ENVIRONMENT/weather_pack/skycolor.lua rename to mods/ENVIRONMENT/mcl_weather/skycolor.lua index 080ec4fc..06bcfb89 100644 --- a/mods/ENVIRONMENT/weather_pack/skycolor.lua +++ b/mods/ENVIRONMENT/mcl_weather/skycolor.lua @@ -1,4 +1,4 @@ -skycolor = { +mcl_weather.skycolor = { -- Should be activated before do any effect. active = true, @@ -38,26 +38,26 @@ skycolor = { -- To layer to colors table add_layer = function(layer_name, layer_color, instant_update) - skycolor.colors[layer_name] = layer_color - table.insert(skycolor.layer_names, layer_name) + mcl_weather.skycolor.colors[layer_name] = layer_color + table.insert(mcl_weather.skycolor.layer_names, layer_name) if (instant_update ~= true) then - skycolor.init_transition() + mcl_weather.skycolor.init_transition() end - skycolor.force_update = true + mcl_weather.skycolor.force_update = true end, -- Retrieve layer from colors table retrieve_layer = function() - local last_layer = skycolor.layer_names[#skycolor.layer_names] - return skycolor.colors[last_layer] + local last_layer = mcl_weather.skycolor.layer_names[#mcl_weather.skycolor.layer_names] + return mcl_weather.skycolor.colors[last_layer] end, -- Remove layer from colors table remove_layer = function(layer_name) - for k, name in ipairs(skycolor.layer_names) do + for k, name in ipairs(mcl_weather.skycolor.layer_names) do if name == layer_name then - table.remove(skycolor.layer_names, k) - skycolor.force_update = true + table.remove(mcl_weather.skycolor.layer_names, k) + mcl_weather.skycolor.force_update = true return end end @@ -65,22 +65,21 @@ skycolor = { -- Update sky color. If players not specified update sky for all players. update_sky_color = function(players) - local color = skycolor.current_sky_layer_color() + local color = mcl_weather.skycolor.current_sky_layer_color() if (color == nil) then - skycolor.set_default_sky() + mcl_weather.skycolor.set_default_sky() return end - players = skycolor.utils.get_players(players) - -- Make everything darker for player + players = mcl_weather.skycolor.utils.get_players(players) for _, player in ipairs(players) do local pos = player:getpos() local _, dim = mcl_util.y_to_layer(pos.y) if dim == "overworld" then player:set_sky(color, "plain", nil, true) - local lf = weather.get_current_light_factor() + local lf = mcl_weather.get_current_light_factor() if lf then local w = minetest.get_timeofday() local light = (w * (lf*2)) @@ -102,34 +101,34 @@ skycolor = { -- Returns current layer color in {r, g, b} format current_sky_layer_color = function() - if #skycolor.layer_names == 0 then + if #mcl_weather.skycolor.layer_names == 0 then return nil end - -- min timeofday value 0; max timeofday value 1. So sky color gradient range will be between 0 and 1 * skycolor.max_value. + -- min timeofday value 0; max timeofday value 1. So sky color gradient range will be between 0 and 1 * mcl_weather.skycolor.max_val. local timeofday = minetest.get_timeofday() - local rounded_time = math.floor(timeofday * skycolor.max_val) - local color = skycolor.utils.convert_to_rgb(skycolor.min_val, skycolor.max_val, rounded_time, skycolor.retrieve_layer()) + local rounded_time = math.floor(timeofday * mcl_weather.skycolor.max_val) + local color = mcl_weather.skycolor.utils.convert_to_rgb(mcl_weather.skycolor.min_val, mcl_weather.skycolor.max_val, rounded_time, mcl_weather.skycolor.retrieve_layer()) return color end, -- Initialy used only on update_transition_sky_color = function() - if #skycolor.layer_names == 0 then - skycolor.set_default_sky() + if #mcl_weather.skycolor.layer_names == 0 then + mcl_weather.skycolor.set_default_sky() return end local multiplier = 100 - local rounded_time = math.floor(skycolor.transition_timer * multiplier) - if rounded_time >= skycolor.transition_time * multiplier then - skycolor.stop_transition() + local rounded_time = math.floor(mcl_weather.skycolor.transition_timer * multiplier) + if rounded_time >= mcl_weather.skycolor.transition_time * multiplier then + mcl_weather.skycolor.stop_transition() return end - local color = skycolor.utils.convert_to_rgb(0, skycolor.transition_time * multiplier, rounded_time, skycolor.transition_colors) + local color = mcl_weather.skycolor.utils.convert_to_rgb(0, mcl_weather.skycolor.transition_time * multiplier, rounded_time, mcl_weather.skycolor.transition_colors) - local players = skycolor.utils.get_players(nil) + local players = mcl_weather.skycolor.utils.get_players(nil) for _, player in ipairs(players) do local pos = player:getpos() local _, dim = mcl_util.y_to_layer(pos.y) @@ -143,12 +142,13 @@ skycolor = { -- Could be sometimes useful but not recomended to use in general case as there may be other color layers -- which needs to preserve. set_default_sky = function(players) - local players = skycolor.utils.get_players(players) + local players = mcl_weather.skycolor.utils.get_players(players) for _, player in ipairs(players) do local pos = player:getpos() local _, dim = mcl_util.y_to_layer(pos.y) if dim == "overworld" then player:set_sky(nil, "regular", nil, true) + player:override_day_night_ratio(nil) end end end, @@ -156,23 +156,23 @@ skycolor = { init_transition = function() -- sadly default sky returns unpredictible colors so transition mode becomes usable only for user defined color layers -- Here '2' means that one color layer existed before new added and transition is posible. - if #skycolor.layer_names < 2 then + if #mcl_weather.skycolor.layer_names < 2 then return end - local transition_start_color = skycolor.utils.get_current_bg_color() + local transition_start_color = mcl_weather.skycolor.utils.get_current_bg_color() if (transition_start_color == nil) then return end - local transition_end_color = skycolor.current_sky_layer_color() - skycolor.transition_colors = {transition_start_color, transition_end_color} - skycolor.transition_in_progress = true + local transition_end_color = mcl_weather.skycolor.current_sky_layer_color() + mcl_weather.skycolor.transition_colors = {transition_start_color, transition_end_color} + mcl_weather.skycolor.transition_in_progress = true end, stop_transition = function() - skycolor.transition_in_progress = false - skycolor.transition_colors = {} - skycolor.transition_timer = 0 + mcl_weather.skycolor.transition_in_progress = false + mcl_weather.skycolor.transition_colors = {} + mcl_weather.skycolor.transition_timer = 0 end, utils = { @@ -197,7 +197,7 @@ skycolor = { -- Returns first player sky color. I assume that all players are in same color layout. get_current_bg_color = function() - local players = skycolor.utils.get_players(nil) + local players = mcl_weather.skycolor.utils.get_players(nil) for _, player in ipairs(players) do return player:get_sky() end @@ -209,34 +209,34 @@ skycolor = { local timer = 0 minetest.register_globalstep(function(dtime) - if skycolor.active ~= true or #minetest.get_connected_players() == 0 then + if mcl_weather.skycolor.active ~= true or #minetest.get_connected_players() == 0 then return end - if skycolor.smooth_transitions and skycolor.transition_in_progress then - skycolor.transition_timer = skycolor.transition_timer + dtime - skycolor.update_transition_sky_color() + if mcl_weather.skycolor.smooth_transitions and mcl_weather.skycolor.transition_in_progress then + mcl_weather.skycolor.transition_timer = mcl_weather.skycolor.transition_timer + dtime + mcl_weather.skycolor.update_transition_sky_color() return end - if skycolor.force_update then - skycolor.update_sky_color() - skycolor.force_update = false + if mcl_weather.skycolor.force_update then + mcl_weather.skycolor.update_sky_color() + mcl_weather.skycolor.force_update = false return end -- regular updates based on iterval timer = timer + dtime; - if timer >= skycolor.update_interval then - skycolor.update_sky_color() + if timer >= mcl_weather.skycolor.update_interval then + mcl_weather.skycolor.update_sky_color() timer = 0 end end) local initsky = function(player) - if (skycolor.active) then - skycolor.force_update = true + if (mcl_weather.skycolor.active) then + mcl_weather.skycolor.force_update = true end -- MC-style clouds: Layer 127, thickness 4, fly to the “West” diff --git a/mods/ENVIRONMENT/weather_pack/snow.lua b/mods/ENVIRONMENT/mcl_weather/snow.lua similarity index 51% rename from mods/ENVIRONMENT/weather_pack/snow.lua rename to mods/ENVIRONMENT/mcl_weather/snow.lua index e1de8f0d..ae4f1867 100644 --- a/mods/ENVIRONMENT/weather_pack/snow.lua +++ b/mods/ENVIRONMENT/mcl_weather/snow.lua @@ -1,16 +1,16 @@ -snow = {} +mcl_weather.snow = {} -snow.particles_count = 15 -snow.init_done = false +mcl_weather.snow.particles_count = 15 +mcl_weather.snow.init_done = false -- calculates coordinates and draw particles for snow weather -snow.add_rain_particles = function(player) - rain.last_rp_count = 0 - for i=snow.particles_count, 1,-1 do - local random_pos_x, random_pos_y, random_pos_z = weather.get_random_pos_by_player_look_dir(player) +mcl_weather.snow.add_snow_particles = function(player) + mcl_weather.rain.last_rp_count = 0 + for i=mcl_weather.snow.particles_count, 1,-1 do + local random_pos_x, random_pos_y, random_pos_z = mcl_weather.get_random_pos_by_player_look_dir(player) random_pos_y = math.random() + math.random(player:getpos().y - 1, player:getpos().y + 7) if minetest.get_node_light({x=random_pos_x, y=random_pos_y, z=random_pos_z}, 0.5) == 15 then - rain.last_rp_count = rain.last_rp_count + 1 + mcl_weather.rain.last_rp_count = mcl_weather.rain.last_rp_count + 1 minetest.add_particle({ pos = {x=random_pos_x, y=random_pos_y, z=random_pos_z}, velocity = {x = math.random(-1,-0.5), y = math.random(-2,-1), z = math.random(-1,-0.5)}, @@ -20,30 +20,30 @@ snow.add_rain_particles = function(player) collisiondetection = true, collision_removal = true, vertical = true, - texture = snow.get_texture(), + texture = mcl_weather.snow.get_texture(), playername = player:get_player_name() }) end end end -snow.set_sky_box = function() - skycolor.add_layer( +mcl_weather.snow.set_sky_box = function() + mcl_weather.skycolor.add_layer( "weather-pack-snow-sky", {{r=0, g=0, b=0}, {r=241, g=244, b=249}, {r=0, g=0, b=0}} ) - skycolor.active = true + mcl_weather.skycolor.active = true end -snow.clear = function() - skycolor.remove_layer("weather-pack-snow-sky") - snow.init_done = false +mcl_weather.snow.clear = function() + mcl_weather.skycolor.remove_layer("weather-pack-snow-sky") + mcl_weather.snow.init_done = false end -- Simple random texture getter -snow.get_texture = function() +mcl_weather.snow.get_texture = function() local texture_name local random_number = math.random() if random_number > 0.5 then @@ -56,7 +56,7 @@ end local timer = 0 minetest.register_globalstep(function(dtime) - if weather.state ~= "snow" then + if mcl_weather.state ~= "snow" then return false end @@ -67,25 +67,32 @@ minetest.register_globalstep(function(dtime) return end - if snow.init_done == false then - snow.set_sky_box() - snow.init_done = true + if mcl_weather.snow.init_done == false then + mcl_weather.snow.set_sky_box() + mcl_weather.snow.init_done = true end for _, player in ipairs(minetest.get_connected_players()) do - if (weather.is_underwater(player) or not mcl_util.has_weather(player:getpos())) then + if (mcl_weather.is_underwater(player) or not mcl_util.has_weather(player:getpos())) then return false end - snow.add_rain_particles(player) + mcl_weather.snow.add_snow_particles(player) end end) -- register snow weather -if weather.reg_weathers.snow == nil then - weather.reg_weathers.snow = { - chance = 10, - light_factor = 0.7, - clear = snow.clear - } +if mcl_weather.reg_weathers.snow == nil then + mcl_weather.reg_weathers.snow = { + clear = mcl_weather.snow.clear, + light_factor = 0.6, + -- 10min - 20min + min_duration = 600, + max_duration = 1200, + transitions = { + [65] = "none", + [80] = "rain", + [100] = "thunder", + } +} end diff --git a/mods/ENVIRONMENT/mcl_weather/sounds/weather_rain.ogg b/mods/ENVIRONMENT/mcl_weather/sounds/weather_rain.ogg new file mode 100644 index 00000000..6216875d Binary files /dev/null and b/mods/ENVIRONMENT/mcl_weather/sounds/weather_rain.ogg differ diff --git a/mods/ENVIRONMENT/weather_pack/textures/weather_pack_rain_raindrop_1.png b/mods/ENVIRONMENT/mcl_weather/textures/weather_pack_rain_raindrop_1.png similarity index 100% rename from mods/ENVIRONMENT/weather_pack/textures/weather_pack_rain_raindrop_1.png rename to mods/ENVIRONMENT/mcl_weather/textures/weather_pack_rain_raindrop_1.png diff --git a/mods/ENVIRONMENT/weather_pack/textures/weather_pack_rain_raindrop_2.png b/mods/ENVIRONMENT/mcl_weather/textures/weather_pack_rain_raindrop_2.png similarity index 100% rename from mods/ENVIRONMENT/weather_pack/textures/weather_pack_rain_raindrop_2.png rename to mods/ENVIRONMENT/mcl_weather/textures/weather_pack_rain_raindrop_2.png diff --git a/mods/ENVIRONMENT/weather_pack/textures/weather_pack_rain_raindrop_3.png b/mods/ENVIRONMENT/mcl_weather/textures/weather_pack_rain_raindrop_3.png similarity index 100% rename from mods/ENVIRONMENT/weather_pack/textures/weather_pack_rain_raindrop_3.png rename to mods/ENVIRONMENT/mcl_weather/textures/weather_pack_rain_raindrop_3.png diff --git a/mods/ENVIRONMENT/weather_pack/textures/weather_pack_snow_snowflake1.png b/mods/ENVIRONMENT/mcl_weather/textures/weather_pack_snow_snowflake1.png similarity index 100% rename from mods/ENVIRONMENT/weather_pack/textures/weather_pack_snow_snowflake1.png rename to mods/ENVIRONMENT/mcl_weather/textures/weather_pack_snow_snowflake1.png diff --git a/mods/ENVIRONMENT/weather_pack/textures/weather_pack_snow_snowflake2.png b/mods/ENVIRONMENT/mcl_weather/textures/weather_pack_snow_snowflake2.png similarity index 100% rename from mods/ENVIRONMENT/weather_pack/textures/weather_pack_snow_snowflake2.png rename to mods/ENVIRONMENT/mcl_weather/textures/weather_pack_snow_snowflake2.png diff --git a/mods/ENVIRONMENT/mcl_weather/thunder.lua b/mods/ENVIRONMENT/mcl_weather/thunder.lua new file mode 100644 index 00000000..b1837f02 --- /dev/null +++ b/mods/ENVIRONMENT/mcl_weather/thunder.lua @@ -0,0 +1,61 @@ +-- turn off lightning mod 'auto mode' +lightning.auto = false + +mcl_weather.thunder = { + next_strike = 0, + min_delay = 3, + max_delay = 12, + init_done = false, +} + +minetest.register_globalstep(function(dtime) + if mcl_weather.get_weather() ~= "thunder" then + return false + end + + mcl_weather.rain.set_particles_mode("thunder") + mcl_weather.rain.make_weather() + + if mcl_weather.thunder.init_done == false then + mcl_weather.skycolor.add_layer( + "weather-pack-thunder-sky", + {{r=0, g=0, b=0}, + {r=40, g=40, b=40}, + {r=85, g=86, b=86}, + {r=40, g=40, b=40}, + {r=0, g=0, b=0}}) + mcl_weather.skycolor.active = true + for _, player in pairs(minetest.get_connected_players()) do + player:set_clouds({color="#3D3D3FE8"}) + end + mcl_weather.thunder.init_done = true + end + + if (mcl_weather.thunder.next_strike <= minetest.get_gametime()) then + lightning.strike() + local delay = math.random(mcl_weather.thunder.min_delay, mcl_weather.thunder.max_delay) + mcl_weather.thunder.next_strike = minetest.get_gametime() + delay + end + +end) + +mcl_weather.thunder.clear = function() + mcl_weather.rain.clear() + mcl_weather.skycolor.remove_layer("weather-pack-thunder-sky") + mcl_weather.skycolor.remove_layer("lightning") + mcl_weather.thunder.init_done = false +end + +-- register thunderstorm weather +if mcl_weather.reg_weathers.thunder == nil then + mcl_weather.reg_weathers.thunder = { + clear = mcl_weather.thunder.clear, + light_factor = 0.33333, + -- 10min - 20min + min_duration = 600, + max_duration = 1200, + transitions = { + [100] = "rain", + } + } +end diff --git a/mods/ENVIRONMENT/weather_pack/weather_core.lua b/mods/ENVIRONMENT/mcl_weather/weather_core.lua similarity index 58% rename from mods/ENVIRONMENT/weather_pack/weather_core.lua rename to mods/ENVIRONMENT/mcl_weather/weather_core.lua index b47b120a..73d3a61b 100644 --- a/mods/ENVIRONMENT/weather_pack/weather_core.lua +++ b/mods/ENVIRONMENT/mcl_weather/weather_core.lua @@ -1,21 +1,18 @@ -weather = { +mcl_weather = { -- weather states, 'none' is default, other states depends from active mods state = "none", -- player list for saving player meta info players = {}, - -- time when weather should be re-calculated - next_check = 0, - -- default weather recalculation interval check_interval = 300, -- weather min duration - min_duration = 240, + min_duration = 600, -- weather max duration - max_duration = 3600, + max_duration = 9000, -- weather calculated end time end_time = nil, @@ -30,26 +27,39 @@ weather = { allow_abm = true, } -weather.get_rand_end_time = function(min_duration, max_duration) +mcl_weather.reg_weathers["none"] = { + min_duration = mcl_weather.min_duration, + max_duration = mcl_weather.max_duration, + light_factor = nil, + transitions = { + [50] = "rain", + [100] = "snow", + }, + clear = function() end, +} + +mcl_weather.get_rand_end_time = function(min_duration, max_duration) + local r if min_duration ~= nil and max_duration ~= nil then - return minetest.get_gametime() + math.random(min_duration, max_duration); + r = math.random(min_duration, max_duration); else - return minetest.get_gametime() + math.random(weather.min_duration, weather.max_duration); + r = math.random(mcl_weather.min_duration, mcl_weather.max_duration); end + return minetest.get_gametime() + r end -weather.get_current_light_factor = function() - if weather.state == "none" then +mcl_weather.get_current_light_factor = function() + if mcl_weather.state == "none" then return nil else - return weather.reg_weathers[weather.state].light_factor + return mcl_weather.reg_weathers[mcl_weather.state].light_factor end end -- Returns true if pos is outdoor. -- Outdoor is defined as any node in the Overworld under open sky. -- FIXME: Nodes below glass also count as “outdoor”, this should not be the case. -weather.is_outdoor = function(pos) +mcl_weather.is_outdoor = function(pos) local cpos = {x=pos.x, y=pos.y+1, z=pos.z} local _, dim = mcl_util.y_to_layer(cpos.y) if minetest.get_node_light(cpos, 0.5) == 15 and dim == "overworld" then @@ -60,7 +70,7 @@ end -- checks if player is undewater. This is needed in order to -- turn off weather particles generation. -weather.is_underwater = function(player) +mcl_weather.is_underwater = function(player) local ppos = player:getpos() local offset = player:get_eye_offset() local player_eye_pos = {x = ppos.x + offset.x, @@ -75,7 +85,7 @@ end -- trying to locate position for particles by player look direction for performance reason. -- it is costly to generate many particles around player so goal is focus mainly on front view. -weather.get_random_pos_by_player_look_dir = function(player) +mcl_weather.get_random_pos_by_player_look_dir = function(player) local look_dir = player:get_look_dir() local player_pos = player:getpos() @@ -106,39 +116,55 @@ weather.get_random_pos_by_player_look_dir = function(player) end minetest.register_globalstep(function(dtime) - if weather.auto_mode == false then + if mcl_weather.auto_mode == false then return 0 end - -- recalculate weather only when there aren't currently any - if (weather.state ~= "none") then - if (weather.end_time ~= nil and weather.end_time <= minetest.get_gametime()) then - weather.reg_weathers[weather.state].clear() - weather.state = "none" - end - elseif (weather.next_check <= minetest.get_gametime()) then - for weather_name, weather_meta in pairs(weather.reg_weathers) do - weather.set_random_weather(weather_name, weather_meta) - end - -- fallback next_check set, weather 'none' will be. - weather.next_check = minetest.get_gametime() + weather.check_interval + if mcl_weather.end_time == nil then + mcl_weather.end_time = mcl_weather.get_rand_end_time() + end + -- recalculate weather + if mcl_weather.end_time <= minetest.get_gametime() then + mcl_weather.set_random_weather(mcl_weather.state, mcl_weather.reg_weathers[mcl_weather.state]) end end) --- sets random weather (which could be 'regular' (no weather)). -weather.set_random_weather = function(weather_name, weather_meta) - if weather.next_check > minetest.get_gametime() then return 0 end - - if (weather_meta ~= nil and weather_meta.chance ~= nil) then +-- Sets random weather (which could be 'none' (no weather)). +mcl_weather.set_random_weather = function(weather_name, weather_meta) + if (weather_meta ~= nil) then + local transitions = weather_meta.transitions local random_roll = math.random(0,100) - if (random_roll <= weather_meta.chance) then - weather.state = weather_name - weather.end_time = weather.get_rand_end_time(weather_meta.min_duration, weather_meta.max_duration) - weather.next_check = minetest.get_gametime() + weather.check_interval + local new_weather + for v, weather in pairs(transitions) do + if random_roll < v then + new_weather = weather + break + end + end + if new_weather then + mcl_weather.change_weather(new_weather) end end end +mcl_weather.change_weather = function(new_weather) + if (mcl_weather.reg_weathers ~= nil and mcl_weather.reg_weathers[new_weather] ~= nil) then + if (mcl_weather.state ~= nil and mcl_weather.reg_weathers[mcl_weather.state] ~= nil) then + mcl_weather.reg_weathers[mcl_weather.state].clear() + end + mcl_weather.state = new_weather + local weather_meta = mcl_weather.reg_weathers[mcl_weather.state] + mcl_weather.end_time = mcl_weather.get_rand_end_time(weather_meta.min_duration, weather_meta.max_duration) + mcl_weather.skycolor.update_sky_color() + return true + end + return false +end + +mcl_weather.get_weather = function() + return mcl_weather.state +end + minetest.register_privilege("weather_manager", { description = "Gives ability to control weather", give_to_singleplayer = false @@ -151,27 +177,19 @@ minetest.register_chatcommand("weather", { privs = {weather_manager = true}, func = function(name, param) if (param == "") then - minetest.chat_send_player(name, "Error: No weather specified.") - return + return false, "Error: No weather specified." end - local success = false - if (param == "clear") then - if (weather.state ~= nil and weather.reg_weathers[weather.state] ~= nil) then - weather.reg_weathers[weather.state].clear() - end - weather.state = "none" - success = true - return - end - - if (weather.reg_weathers ~= nil and weather.reg_weathers[param] ~= nil) then - if (weather.state ~= nil and weather.state ~= "none" and weather.reg_weathers[weather.state] ~= nil) then - weather.reg_weathers[weather.state].clear() - end - weather.state = param - return + local new_weather + if param == "clear" then + new_weather = "none" else - minetest.chat_send_player(name, "Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.") + new_weather = param + end + local success = mcl_weather.change_weather(new_weather) + if success then + return true + else + return false, "Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”." end end }) @@ -182,19 +200,14 @@ minetest.register_chatcommand("toggledownfall", { privs = {weather_manager = true}, func = function(name, param) -- Currently rain/thunder/snow: Set weather to clear - if weather.state ~= "none" then - if (weather.state ~= nil and weather.state ~= "none" and weather.reg_weathers[weather.state] ~= nil) then - weather.reg_weathers[weather.state].clear() - end - weather.state = "none" + if mcl_weather.state ~= "none" then + return mcl_weather.change_weather("none") + -- Currently clear: Set weather randomly to rain/thunder/snow else local new = { "rain", "thunder", "snow" } local r = math.random(1, #new) - if (weather.state ~= nil and weather.state ~= "none" and weather.reg_weathers[weather.state] ~= nil) then - weather.reg_weathers[weather.state].clear() - end - weather.state = new[r] + return mcl_weather.change_weather(new[r]) end end }) @@ -203,5 +216,5 @@ minetest.register_chatcommand("toggledownfall", { -- Weather mods expected to be use this flag before registering ABM. local weather_allow_abm = minetest.settings:get_bool("weather_allow_abm") if weather_allow_abm ~= nil and weather_allow_abm == false then - weather.allow_abm = false + mcl_weather.allow_abm = false end diff --git a/mods/ENVIRONMENT/weather_pack/description.txt b/mods/ENVIRONMENT/weather_pack/description.txt deleted file mode 100644 index 6efa41ed..00000000 --- a/mods/ENVIRONMENT/weather_pack/description.txt +++ /dev/null @@ -1 +0,0 @@ -Set of weathers for minetest. \ No newline at end of file diff --git a/mods/ENVIRONMENT/weather_pack/mod.conf b/mods/ENVIRONMENT/weather_pack/mod.conf deleted file mode 100644 index 7baa0476..00000000 --- a/mods/ENVIRONMENT/weather_pack/mod.conf +++ /dev/null @@ -1 +0,0 @@ -name = weather_pack diff --git a/mods/ENVIRONMENT/weather_pack/sounds/weather_rain.ogg b/mods/ENVIRONMENT/weather_pack/sounds/weather_rain.ogg deleted file mode 100644 index ba2ea272..00000000 Binary files a/mods/ENVIRONMENT/weather_pack/sounds/weather_rain.ogg and /dev/null differ diff --git a/mods/ENVIRONMENT/weather_pack/thunder.lua b/mods/ENVIRONMENT/weather_pack/thunder.lua deleted file mode 100644 index 9fdd8112..00000000 --- a/mods/ENVIRONMENT/weather_pack/thunder.lua +++ /dev/null @@ -1,59 +0,0 @@ --- turn off lightning mod 'auto mode' -lightning.auto = false - -thunder = { - next_strike = 0, - min_delay = 3, - max_delay = 12, - init_done = false, -} - -minetest.register_globalstep(function(dtime) - if weather.state ~= "thunder" then - return false - end - - rain.set_particles_mode("thunder") - rain.make_weather() - - if thunder.init_done == false then - skycolor.add_layer( - "weather-pack-thunder-sky", - {{r=0, g=0, b=0}, - {r=40, g=40, b=40}, - {r=85, g=86, b=86}, - {r=40, g=40, b=40}, - {r=0, g=0, b=0}}) - skycolor.active = true - for _, player in pairs(minetest.get_connected_players()) do - player:set_clouds({color="#3D3D3FE8"}) - - end - thunder.init_done = true - end - - if (thunder.next_strike <= minetest.get_gametime()) then - lightning.strike() - local delay = math.random(thunder.min_delay, thunder.max_delay) - thunder.next_strike = minetest.get_gametime() + delay - end - -end) - -thunder.clear = function() - rain.clear() - skycolor.remove_layer("weather-pack-thunder-sky") - skycolor.remove_layer("lightning") - thunder.init_done = false -end - --- register thunderstorm weather -if weather.reg_weathers.thunder == nil then - weather.reg_weathers.thunder = { - chance = 5, - light_factor = 0.33333, - clear = thunder.clear, - min_duration = 120, - max_duration = 600, - } -end diff --git a/mods/HELP/mcl_doc/init.lua b/mods/HELP/mcl_doc/init.lua index 67a98cae..c6b40d76 100644 --- a/mods/HELP/mcl_doc/init.lua +++ b/mods/HELP/mcl_doc/init.lua @@ -62,7 +62,9 @@ end) doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def) local datastring = "" if def.groups.place_flowerlike == 1 then - return "This plant can only grow on dirt, grass blocks and podzol. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher." + return "This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher." + elseif def.groups.place_flowerlike == 2 then + return "This plant can grow on grass blocks, podzol, dirt and coarse dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher." end return "" end) diff --git a/mods/HUD/awards/sounds/awards_got_generic.ogg b/mods/HUD/awards/sounds/awards_got_generic.ogg index 3ae982b3..87666c8f 100644 Binary files a/mods/HUD/awards/sounds/awards_got_generic.ogg and b/mods/HUD/awards/sounds/awards_got_generic.ogg differ diff --git a/mods/HUD/mcl_inventory/creative.lua b/mods/HUD/mcl_inventory/creative.lua index 89ae703e..e8dd6e13 100644 --- a/mods/HUD/mcl_inventory/creative.lua +++ b/mods/HUD/mcl_inventory/creative.lua @@ -139,18 +139,36 @@ local boffset = {} -- local hoch = {} local bg = {} -noffset["blocks"] = {-0.29,-0.25} -noffset["deco"] = {0.98,-0.25} -noffset["redstone"] = {2.23,-0.25} -noffset["rail"] = {3.495,-0.25} -noffset["misc"] = {4.75,-0.25} -noffset["nix"] = {8.99,-0.25} -noffset["food"] = {-0.29,8.12} -noffset["tools"] = {0.98,8.12} -noffset["combat"] = {2.23,8.12} -noffset["brew"] = {3.495,8.12} -noffset["matr"] = {4.74,8.12} -noffset["inv"] = {8.99,8.12} +local noffset_x_start = -0.24 +local noffset_x = noffset_x_start +local noffset_y = -0.25 +local next_noffset = function(id, right) + if right then + noffset[id] = { 8.94, noffset_y } + else + noffset[id] = { noffset_x, noffset_y } + noffset_x = noffset_x + 1.25 + end +end + +-- Upper row +next_noffset("blocks") +next_noffset("deco") +next_noffset("redstone") +next_noffset("rail") +next_noffset("misc") +next_noffset("nix", true) + +noffset_x = noffset_x_start +noffset_y = 8.12 + +-- Lower row +next_noffset("food") +next_noffset("tools") +next_noffset("combat") +next_noffset("brew") +next_noffset("matr") +next_noffset("inv", true) for k,v in pairs(noffset) do offset[k] = tostring(v[1]) .. "," .. tostring(v[2]) @@ -218,8 +236,14 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "listring[current_player;main]".. "listring[detached:trash;main]" - if page ~= nil then name = page end + if page ~= nil then + name = page + if players[playername] then + players[playername].page = page + end + end bg[name] = "crafting_creative_bg.png" + local inv_bg = "crafting_inventory_creative.png" if name == "inv" then inv_bg = "crafting_inventory_creative_survival.png" @@ -287,61 +311,67 @@ mcl_inventory.set_creative_formspec = function(player, start_i, pagenum, inv_siz "image[9.033," .. tostring(slider_pos) .. ";0.78,"..tostring(slider_height) .. ";crafting_slider.png]".. "image_button[9.02,6.15;"..tostring(arrow_height)..",0.6;crafting_creative_down.png;creative_next;]" end - local function tab(current, check) - local img - if current == check then - img = "crafting_creative_active.png" + + local tab_icon = { + blocks = "mcl_core:brick_block", + deco = "mcl_flowers:peony", + redstone = "mesecons:redstone", + rail = "mcl_minecarts:golden_rail", + misc = "mcl_buckets:bucket_lava", + nix = "mcl_compass:compass", + food = "mcl_core:apple", + tools = "mcl_core:axe_iron", + combat = "mcl_core:sword_gold", + brew = "mcl_potions:potion_water", + matr = "mcl_core:stick", + inv = "mcl_chests:chest", + } + local function tab(current_tab, this_tab) + local bg_img + if current_tab == this_tab then + bg_img = "crafting_creative_active.png" else - img = "crafting_creative_inactive.png" + bg_img = "crafting_creative_inactive.png" end - return "image[" .. offset[check] .. ";1.5,1.44;" .. img .. hoch[check].. "]" .. - "image[" .. boffset[check] .. ";1,1;crafting_creative_marker.png]" + return + "item_image_button[" .. boffset[this_tab] ..";1,1;"..tab_icon[this_tab]..";"..this_tab..";]".. + "image[" .. offset[this_tab] .. ";1.5,1.44;" .. bg_img .. hoch[this_tab].. "]" .. + "image[" .. boffset[this_tab] .. ";1,1;crafting_creative_marker.png]" end local fnt = "" if name ~= "inv" then fnt = "image[0,1;5,0.75;mcl_inventory_fnt_"..name..".png]" end + formspec = "size[10,9.3]".. mcl_vars.inventory_header.. "background[-0.19,-0.25;10.5,9.87;"..inv_bg.."]".. "label[-5,-5;"..name.."]".. - "item_image_button[-0.1,0;1,1;mcl_core:brick_block;blocks;]".. --build blocks tab(name, "blocks") .. "tooltip[blocks;Building Blocks]".. - "item_image_button[1.15,0;1,1;mcl_flowers:peony;deco;]".. --decoration blocks tab(name, "deco") .. "tooltip[deco;Decoration Blocks]".. - "item_image_button[2.415,0;1,1;mesecons:redstone;redstone;]".. --redstone tab(name, "redstone") .. "tooltip[redstone;Redstone]".. - "item_image_button[3.693,0;1,1;mcl_minecarts:golden_rail;rail;]".. --transportation tab(name, "rail") .. "tooltip[rail;Transportation]".. - "item_image_button[4.93,0;1,1;mcl_buckets:bucket_lava;misc;]".. --miscellaneous tab(name, "misc") .. "tooltip[misc;Miscellaneous]".. - "item_image_button[9.19,0;1,1;mcl_compass:compass;nix;]".. --search tab(name, "nix") .. "tooltip[nix;Search Items]".. fnt.. "list[current_player;main;0,7;9,1;]".. main_list.. - "item_image_button[-0.1,8.37;1,1;mcl_core:apple;food;]".. --foodstuff tab(name, "food") .. "tooltip[food;Foodstuffs]".. - "item_image_button[1.15,8.37;1,1;mcl_core:axe_iron;tools;]".. --tools tab(name, "tools") .. "tooltip[tools;Tools]".. - "item_image_button[2.415,8.37;1,1;mcl_core:sword_gold;combat;]".. --combat tab(name, "combat") .. "tooltip[combat;Combat]".. - "item_image_button[3.693,8.37;1,1;mcl_potions:potion_water;brew;]".. --brewing tab(name, "brew") .. "tooltip[brew;Brewing]".. - "item_image_button[4.938,8.37;1,1;mcl_core:stick;matr;]".. --materials tab(name, "matr") .. "tooltip[matr;Materials]".. - "item_image_button[9.19,8.37;1,1;mcl_chests:chest;inv;]".. --inventory tab(name, "inv") .. "tooltip[inv;Survival Inventory]".. "list[detached:trash;main;9,7;1,1;]".. diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index a5132021..2e61b81d 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -85,9 +85,9 @@ local buttonuse = "Rightclick the button to push it." minetest.register_node("mesecons_button:button_stone_off", { drawtype = "nodebox", tiles = {"default_stone.png"}, - wield_image = "default_stone.png^[mask:mesecons_button_wield_mask.png", + wield_image = "mesecons_button_wield_mask.png^default_stone.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", -- FIXME: Use proper 3D inventory image - inventory_image = "default_stone.png^[mask:mesecons_button_wield_mask.png", + inventory_image = "mesecons_button_wield_mask.png^default_stone.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", wield_scale = { x=1, y=1, z=1}, paramtype = "light", paramtype2 = "wallmounted", @@ -119,8 +119,8 @@ minetest.register_node("mesecons_button:button_stone_off", { minetest.register_node("mesecons_button:button_stone_on", { drawtype = "nodebox", tiles = {"default_stone.png"}, - wield_image = "default_stone.png^[mask:mesecons_button_wield_mask.png", - inventory_image = "default_stone.png^[mask:mesecons_button_wield_mask.png", + wield_image = "mesecons_button_wield_mask.png^default_stone.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", + inventory_image = "mesecons_button_wield_mask.png^default_stone.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", wield_scale = { x=1, y=1, z=0.5}, paramtype = "light", paramtype2 = "wallmounted", @@ -145,8 +145,8 @@ minetest.register_node("mesecons_button:button_stone_on", { minetest.register_node("mesecons_button:button_wood_off", { drawtype = "nodebox", tiles = {"default_wood.png"}, - wield_image = "default_wood.png^[mask:mesecons_button_wield_mask.png", - inventory_image = "default_wood.png^[mask:mesecons_button_wield_mask.png", + wield_image = "mesecons_button_wield_mask.png^default_wood.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", + inventory_image = "mesecons_button_wield_mask.png^default_wood.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", wield_scale = { x=1, y=1, z=1}, paramtype = "light", paramtype2 = "wallmounted", @@ -178,8 +178,8 @@ minetest.register_node("mesecons_button:button_wood_off", { minetest.register_node("mesecons_button:button_wood_on", { drawtype = "nodebox", tiles = {"default_wood.png"}, - wield_image = "default_wood.png^[mask:mesecons_button_wield_mask.png", - inventory_image = "default_wood.png^[mask:mesecons_button_wield_mask.png", + wield_image = "mesecons_button_wield_mask.png^default_wood.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", + inventory_image = "mesecons_button_wield_mask.png^default_wood.png^mesecons_button_wield_mask.png^[makealpha:255,126,126", wield_scale = { x=1, y=1, z=0.5}, paramtype = "light", paramtype2 = "wallmounted", diff --git a/mods/ITEMS/REDSTONE/mesecons_button/textures/mesecons_button_wield_mask.png b/mods/ITEMS/REDSTONE/mesecons_button/textures/mesecons_button_wield_mask.png index e553ae38..211ac43f 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_button/textures/mesecons_button_wield_mask.png and b/mods/ITEMS/REDSTONE/mesecons_button/textures/mesecons_button_wield_mask.png differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg index 5668a8aa..331fc1cc 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_a.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg index 4cd2dccf..db96aedb 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_asharp.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg index 621a6b54..810fe18f 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_b.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg index e2359789..5c60d315 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_c.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg index 50ba8351..12c1ef38 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_csharp.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg index f1227bac..929b7fba 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_d.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg index 817728e7..eb6045d4 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_dsharp.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg index c91d1a6d..94977e0d 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_e.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg index 3f1eaea5..221d9264 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_f.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg index 9f137979..7af83a8e 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_fsharp.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg index d2a90dd9..480ca367 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_g.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg index 6177b8cf..2e71fea0 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_gsharp.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_bass_guitar.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_bass_guitar.ogg index 38e30490..eaa531b2 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_bass_guitar.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_bass_guitar.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg index 108e89e3..10d585b8 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_kick.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_snare.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_snare.ogg index 25d7b783..83a79441 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_snare.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_snare.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_stick.ogg b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_stick.ogg index 5f52a95d..1fc2c04b 100644 Binary files a/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_stick.ogg and b/mods/ITEMS/REDSTONE/mesecons_noteblock/sounds/mesecons_noteblock_temp_stick.ogg differ diff --git a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua index 3729a014..d346e41f 100644 --- a/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_pistons/init.lua @@ -781,7 +781,7 @@ local piston_get_stopper = function (node, dir, stack, stackid) if minetest.registered_nodes[node.name].mesecons_piston.pusher == pushernode.name then for _, s in ipairs(stack) do - if mesecon.cmpPos(s.pos, pusherpos) -- pusher is also to be pushed + if vector.equals(s.pos, pusherpos) -- pusher is also to be pushed and s.node.param2 == node.param2 then return false end diff --git a/mods/ITEMS/mcl_beds/api.lua b/mods/ITEMS/mcl_beds/api.lua index 958c983d..ed2869cc 100644 --- a/mods/ITEMS/mcl_beds/api.lua +++ b/mods/ITEMS/mcl_beds/api.lua @@ -22,17 +22,17 @@ local function destruct_bed(pos, n) end end -local beddesc = "Beds allow you to sleep at night and waste some time. Survival in this world does not demand sleep, but sleeping might have some other uses. " -local beduse = "Right-click on the bed to try to sleep in it. This only works when the sun sets or at night." +local beddesc = "Beds allow you to sleep at night and make the time pass faster." +local beduse = "Right-click on the bed to sleep in it. This only works when the sun sets, at night or during a thunderstorm." if minetest.settings:get_bool("enable_bed_respawn") == false then - beddesc = beddesc .. "In local folklore, legends are told of other worlds where setting the start point for your next would be possible. But this world is not one of them. " + beddesc = beddesc .. "\n" .. "In local folklore, legends are told of other worlds where setting the start point for your next would be possible. But this world is not one of them." else - beddesc = beddesc .. "By sleeping in a bed, you set the starting point for your next life. " + beddesc = beddesc .. "\n" .. "By sleeping in a bed, you set the starting point for your next life." end if minetest.settings:get_bool("enable_bed_night_skip") == false then - beddesc = beddesc .. "In this strange world, the time will not pass faster for you when you sleep." + beddesc = beddesc .. "\n" .. "In this strange world, going to bed won't skip the night, but you can skip thunderstorms." else - beddesc = beddesc .. "Going into bed seems to make time pass faster: The night will be skipped when you go sleep and you're alone in this world. If you're not alone, the night is skipped when all players in this world went to sleep." + beddesc = beddesc .. "\n" .. "Sleeping allows you to skip the night if you're the only player in this world. If you're not alone, the night is skipped when all players in this world went to sleep. Thunderstorms can be skipped in the same manner." end local default_sounds diff --git a/mods/ITEMS/mcl_beds/depends.txt b/mods/ITEMS/mcl_beds/depends.txt index 93b5fc03..17dcb0f5 100644 --- a/mods/ITEMS/mcl_beds/depends.txt +++ b/mods/ITEMS/mcl_beds/depends.txt @@ -3,3 +3,4 @@ mcl_util? mcl_wool? mcl_dye? mcl_tnt? +mcl_weather? diff --git a/mods/ITEMS/mcl_beds/functions.lua b/mods/ITEMS/mcl_beds/functions.lua index 5f8e4daf..4ce94c01 100644 --- a/mods/ITEMS/mcl_beds/functions.lua +++ b/mods/ITEMS/mcl_beds/functions.lua @@ -5,6 +5,7 @@ local enable_respawn = minetest.settings:get_bool("enable_bed_respawn") if enable_respawn == nil then enable_respawn = true end +local weather_mod = minetest.get_modpath("mcl_weather") ~= nil -- Helper functions @@ -121,9 +122,19 @@ local function update_formspecs(finished) end end - -- Public functions +-- Handle environment stuff related to sleeping: skip night and thunderstorm +function mcl_beds.sleep() + local storm_skipped = mcl_beds.skip_thunderstorm() + if is_night_skip_enabled() then + if not storm_skipped then + mcl_beds.skip_night() + end + mcl_beds.kick_players() + end +end + function mcl_beds.kick_players() for name, _ in pairs(mcl_beds.player) do local player = minetest.get_player_by_name(name) @@ -135,7 +146,22 @@ function mcl_beds.skip_night() minetest.set_timeofday(0.25) -- tod = 6000 end +function mcl_beds.skip_thunderstorm() + -- Skip thunderstorm + if weather_mod and mcl_weather.get_weather() == "thunder" then + mcl_weather.change_weather("none") + -- Sleep for a half day (=minimum thunderstorm duration) + minetest.set_timeofday((minetest.get_timeofday() + 0.5) % 1) + return true + end + return false +end + function mcl_beds.on_rightclick(pos, player) + -- Anti-Inception: Don't allow to sleep while you're sleeping + if player:get_attribute("mcl_beds:sleeping") == "true" then + return + end if minetest.get_modpath("mcl_init") then local _, dim = mcl_util.y_to_layer(pos.y) if dim == "nether" or dim == "end" then @@ -152,11 +178,11 @@ function mcl_beds.on_rightclick(pos, player) local tod = minetest.get_timeofday() * 24000 -- Values taken from Minecraft Wiki with offset of +6000 - if tod < 18541 and tod > 5458 then + if tod < 18541 and tod > 5458 and (not weather_mod or (mcl_weather.get_weather() ~= "thunder")) then if mcl_beds.player[name] then lay_down(player, nil, nil, false) end - minetest.chat_send_player(name, "You can only sleep at night.") + minetest.chat_send_player(name, "You can only sleep at night or during a thunderstorm.") return end @@ -178,10 +204,7 @@ function mcl_beds.on_rightclick(pos, player) if not is_sp then update_formspecs(is_night_skip_enabled()) end - if is_night_skip_enabled() then - mcl_beds.skip_night() - mcl_beds.kick_players() - end + mcl_beds.sleep() end) end end @@ -207,10 +230,7 @@ minetest.register_on_leaveplayer(function(player) if check_in_beds() then minetest.after(2, function() update_formspecs(is_night_skip_enabled()) - if is_night_skip_enabled() then - mcl_beds.skip_night() - mcl_beds.kick_players() - end + mcl_beds.sleep() end) end end) @@ -226,9 +246,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.force then update_formspecs(is_night_skip_enabled()) - if is_night_skip_enabled() then - mcl_beds.skip_night() - mcl_beds.kick_players() - end + mcl_beds.sleep() end end) diff --git a/mods/ITEMS/mcl_colorblocks/textures/mcl_colorblocks_glazed_terracotta_orange.png b/mods/ITEMS/mcl_colorblocks/textures/mcl_colorblocks_glazed_terracotta_orange.png index 26f19968..470d5694 100644 Binary files a/mods/ITEMS/mcl_colorblocks/textures/mcl_colorblocks_glazed_terracotta_orange.png and b/mods/ITEMS/mcl_colorblocks/textures/mcl_colorblocks_glazed_terracotta_orange.png differ diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index f008d66f..d90c672f 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -645,7 +645,7 @@ local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed") minetest.register_abm({ label = "Grass Block and Mycelium spread", nodenames = {"mcl_core:dirt"}, - neighbors = {"air", "mcl_core:dirt_with_grass", "mcl_core:mycelium"}, + neighbors = {"air", "group:grass_block_no_snow", "mcl_core:mycelium"}, interval = 30, chance = 20, catch_up = false, @@ -1190,12 +1190,22 @@ end -- of the snowed node. mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, tiles, sounds) local def = table.copy(minetest.registered_nodes[itemstring_clear]) + local create_doc_alias + if def.description then + create_doc_alias = true + else + create_doc_alias = false + end -- Just some group clearing def.description = nil def._doc_items_longdesc = nil def._doc_items_usagehelp = nil def._doc_items_create_entry = false def.groups.not_in_creative_inventory = 1 + if def.groups.grass_block == 1 then + def.groups.grass_block_no_snow = nil + def.groups.grass_block_snow = 1 + end -- Enderman must never take this because this block is supposed to be always buried below snow. def.groups.enderman_takable = nil @@ -1224,7 +1234,7 @@ mcl_core.register_snowed_node = function(itemstring_snowed, itemstring_clear, ti -- Register stuff minetest.register_node(itemstring_snowed, def) - if minetest.get_modpath("doc") then + if create_doc_alias and minetest.get_modpath("doc") then doc.add_entry_alias("nodes", itemstring_clear, "nodes", itemstring_snowed) end end diff --git a/mods/ITEMS/mcl_core/nodes_base.lua b/mods/ITEMS/mcl_core/nodes_base.lua index 0aa6a041..726283f6 100644 --- a/mods/ITEMS/mcl_core/nodes_base.lua +++ b/mods/ITEMS/mcl_core/nodes_base.lua @@ -295,6 +295,7 @@ minetest.register_node("mcl_core:diorite_smooth", { _mcl_hardness = 1.5, }) +-- Grass Block minetest.register_node("mcl_core:dirt_with_grass", { description = "Grass Block", _doc_items_longdesc = "A grass block is dirt with a grass cover. Grass blocks are resourceful blocks which allow the growth of all sorts of plants. They can be turned into farmland with a hoe and turned into grass paths with a shovel. In light, the grass slowly spreads onto dirt nearby. Under an opaque block or a liquid, a grass block may turn back to dirt.", @@ -302,17 +303,57 @@ minetest.register_node("mcl_core:dirt_with_grass", { tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, is_ground_content = true, stack_max = 64, - groups = {handy=1,shovely=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, + groups = {handy=1,shovely=1, grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1}, + drop = 'mcl_core:dirt', + sounds = mcl_sounds.node_sound_dirt_defaults({ + footstep = {name="default_grass_footstep", gain=0.4}, + }), + on_construct = function(pos) + local _, dim = mcl_util.y_to_layer(pos.y) + local dry + if dim == "nether" then + dry = true + else + local found_node = minetest.find_node_near(pos, 1, {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"}) + if found_node then + dry = true + end + end + if dry then + minetest.set_node(pos, {name="mcl_core:dirt_with_dry_grass"}) + end + return mcl_core.on_snowable_construct(pos) + end, + _mcl_snowed = "mcl_core:dirt_with_grass_snow", + _mcl_grass_palette_index = 0, + _mcl_blast_resistance = 3, + _mcl_hardness = 0.6, +}) +mcl_core.register_snowed_node("mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass") + +-- Grass Block variant for dry biomes +minetest.register_node("mcl_core:dirt_with_dry_grass", { + _doc_items_create_entry = false, + tiles = {"default_dry_grass.png", "default_dirt.png", "default_dirt.png^default_dry_grass_side.png"}, + is_ground_content = true, + stack_max = 64, + groups = {handy=1,shovely=1, grass_block=1, grass_block_no_snow=1, soil=1, soil_sapling=2, soil_sugarcane=1, cultivatable=2, spreading_dirt_type=1, enderman_takable=1, building_block=1, not_in_creative_inventory=1}, drop = 'mcl_core:dirt', sounds = mcl_sounds.node_sound_dirt_defaults({ footstep = {name="default_grass_footstep", gain=0.4}, }), on_construct = mcl_core.on_snowable_construct, - _mcl_snowed = "mcl_core:dirt_with_grass_snow", + _mcl_snowed = "mcl_core:dirt_with_dry_grass_snow", + _mcl_grass_palette_index = 1, _mcl_blast_resistance = 3, _mcl_hardness = 0.6, }) -mcl_core.register_snowed_node("mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass") +mcl_core.register_snowed_node("mcl_core:dirt_with_dry_grass_snow", "mcl_core:dirt_with_dry_grass") + +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_core:dirt_with_grass", "nodes", "mcl_core:dirt_with_dry_grass") + doc.add_entry_alias("nodes", "mcl_core:dirt_with_grass", "nodes", "mcl_core:dirt_with_dry_grass_snow") +end minetest.register_node("mcl_core:grass_path", { tiles = {"mcl_core_grass_path_top.png", "default_dirt.png", "mcl_core_grass_path_side.png"}, diff --git a/mods/ITEMS/mcl_core/nodes_misc.lua b/mods/ITEMS/mcl_core/nodes_misc.lua index 6c69fe65..07f30743 100644 --- a/mods/ITEMS/mcl_core/nodes_misc.lua +++ b/mods/ITEMS/mcl_core/nodes_misc.lua @@ -89,7 +89,7 @@ minetest.register_node("mcl_core:deadbush", { walkable = false, stack_max = 64, buildable_to = true, - groups = {dig_immediate=3, flammable=3,attached_node=1,plant=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, + groups = {handy=1,shearsy=1, flammable=3,attached_node=1,plant=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, drop = { max_items = 1, items = { @@ -107,7 +107,7 @@ minetest.register_node("mcl_core:deadbush", { sounds = mcl_sounds.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-6/16, -8/16, -6/16, 6/16, 8/16, 6/16}, + fixed = {-5/16, -8/16, -5/16, 5/16, 1/16, 5/16}, }, _mcl_blast_resistance = 0, _mcl_hardness = 0, diff --git a/mods/ITEMS/mcl_core/nodes_trees.lua b/mods/ITEMS/mcl_core/nodes_trees.lua index d2ed7d06..ea64f26e 100644 --- a/mods/ITEMS/mcl_core/nodes_trees.lua +++ b/mods/ITEMS/mcl_core/nodes_trees.lua @@ -112,7 +112,7 @@ local register_sapling = function(subname, description, longdesc, texture, selbo local node_below = minetest.get_node_or_nil({x=pos.x,y=pos.y-1,z=pos.z}) if not node_below then return false end local nn = node_below.name - return (nn=="mcl_core:dirt_with_grass" or nn=="mcl_core:dirt_with_grass_snow" or + return ((minetest.get_item_group(nn, "grass_block") == 1) or nn=="mcl_core:podzol" or nn=="mcl_core:podzol_snow" or nn=="mcl_core:dirt") end), @@ -165,12 +165,12 @@ register_wooden_planks("acaciawood", "Acacia Wood Planks", {"default_acacia_wood register_wooden_planks("birchwood", "Birch Wood Planks", {"mcl_core_planks_birch.png"}) -register_sapling("sapling", "Oak Sapling", "When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.", "default_sapling.png", {-6/16, -0.5, -6/16, 6/16, 0.5, 6/16}) -register_sapling("darksapling", "Dark Oak Sapling", "Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.", "mcl_core_sapling_big_oak.png", {-5.5/16, -0.5, -5.5/16, 5.5/16, 0.5, 5.5/16}) -register_sapling("junglesapling", "Jungle Sapling", "When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.", "default_junglesapling.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) -register_sapling("acaciasapling", "Acacia Sapling", "When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.", "default_acacia_sapling.png", {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}) -register_sapling("sprucesapling", "Spruce Sapling", "When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.", "mcl_core_sapling_spruce.png", {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}) -register_sapling("birchsapling", "Birch Sapling", "When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.", "mcl_core_sapling_birch.png", {-6/16, -0.5, -6/16, 6/16, 0.5, 6/16}) +register_sapling("sapling", "Oak Sapling", "When placed on soil (such as dirt) and exposed to light, an oak sapling will grow into an oak after some time.", "default_sapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_sapling("darksapling", "Dark Oak Sapling", "Dark oak saplings can grow into dark oaks, but only in groups. A lonely dark oak sapling won't grow. A group of four dark oak saplings grows into a dark oak after some time when they are placed on soil (such as dirt) in a 2×2 square and exposed to light.", "mcl_core_sapling_big_oak.png", {-5/16, -0.5, -5/16, 5/16, 7/16, 5/16}) +register_sapling("junglesapling", "Jungle Sapling", "When placed on soil (such as dirt) and exposed to light, a jungle sapling will grow into a jungle tree after some time. When there are 4 jungle saplings in a 2×2 square, they will grow to a huge jungle tree.", "default_junglesapling.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_sapling("acaciasapling", "Acacia Sapling", "When placed on soil (such as dirt) and exposed to light, an acacia sapling will grow into an acacia after some time.", "default_acacia_sapling.png", {-5/16, -0.5, -5/16, 5/16, 4/16, 5/16}) +register_sapling("sprucesapling", "Spruce Sapling", "When placed on soil (such as dirt) and exposed to light, a spruce sapling will grow into a spruce after some time. When there are 4 spruce saplings in a 2×2 square, they will grow to a huge spruce.", "mcl_core_sapling_spruce.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) +register_sapling("birchsapling", "Birch Sapling", "When placed on soil (such as dirt) and exposed to light, a birch sapling will grow into a birch after some time.", "mcl_core_sapling_birch.png", {-4/16, -0.5, -4/16, 4/16, 0.5, 4/16}) register_leaves("leaves", "Oak Leaves", "Oak leaves are grown from oak trees.", {"default_leaves.png"}, "mcl_core:sapling", 20, "mcl_core:apple", 200) diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg index 16c79285..a8bc4b2e 100644 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg and b/mods/ITEMS/mcl_core/sounds/slimenodes_dug.1.ogg differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg index 06ad53fd..b766c1e3 100644 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg and b/mods/ITEMS/mcl_core/sounds/slimenodes_place.1.ogg differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg index e126f487..e32996fb 100644 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg and b/mods/ITEMS/mcl_core/sounds/slimenodes_step.1.ogg differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg index a52f4060..6ad28efc 100644 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg and b/mods/ITEMS/mcl_core/sounds/slimenodes_step.2.ogg differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg index 0507e005..92d6cd36 100644 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg and b/mods/ITEMS/mcl_core/sounds/slimenodes_step.3.ogg differ diff --git a/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg b/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg index 3f9d878c..47b9cd68 100644 Binary files a/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg and b/mods/ITEMS/mcl_core/sounds/slimenodes_step.4.ogg differ diff --git a/mods/ITEMS/mcl_core/textures/default_dry_grass.png b/mods/ITEMS/mcl_core/textures/default_dry_grass.png new file mode 100644 index 00000000..e610678a Binary files /dev/null and b/mods/ITEMS/mcl_core/textures/default_dry_grass.png differ diff --git a/mods/ITEMS/mcl_core/textures/default_dry_grass_side.png b/mods/ITEMS/mcl_core/textures/default_dry_grass_side.png new file mode 100644 index 00000000..b12d06e7 Binary files /dev/null and b/mods/ITEMS/mcl_core/textures/default_dry_grass_side.png differ diff --git a/mods/ITEMS/mcl_core/textures/default_grass.png b/mods/ITEMS/mcl_core/textures/default_grass.png index c0ec1727..56176e5e 100644 Binary files a/mods/ITEMS/mcl_core/textures/default_grass.png and b/mods/ITEMS/mcl_core/textures/default_grass.png differ diff --git a/mods/ITEMS/mcl_core/textures/default_grass_side.png b/mods/ITEMS/mcl_core/textures/default_grass_side.png index d65d050b..a44b9788 100644 Binary files a/mods/ITEMS/mcl_core/textures/default_grass_side.png and b/mods/ITEMS/mcl_core/textures/default_grass_side.png differ diff --git a/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png b/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png new file mode 100644 index 00000000..2c465917 Binary files /dev/null and b/mods/ITEMS/mcl_core/textures/mcl_core_palette_grass.png differ diff --git a/mods/ITEMS/mcl_doors/api_doors.lua b/mods/ITEMS/mcl_doors/api_doors.lua index 7605aea1..e9cbf810 100644 --- a/mods/ITEMS/mcl_doors/api_doors.lua +++ b/mods/ITEMS/mcl_doors/api_doors.lua @@ -205,7 +205,7 @@ function mcl_doors:register_door(name, def) end minetest.register_node(name.."_b_1", { - tiles = {tt[2].."^[transformFY", tt[2], tb[2].."^[transformFX", tb[2], tb[1], tb[1].."^[transformFX"}, + tiles = {"blank.png", tt[2].."^[transformFXR90", tb[2], tb[2].."^[transformFX", tb[1], tb[1].."^[transformFX"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, @@ -252,7 +252,7 @@ function mcl_doors:register_door(name, def) end minetest.register_node(name.."_t_1", { - tiles = {tt[2].."^[transformFY", tt[2], tt[2].."^[transformFX", tt[2], tt[1], tt[1].."^[transformFX"}, + tiles = {tt[2].."^[transformR90", "blank.png", tt[2], tt[2].."^[transformFX", tt[1], tt[1].."^[transformFX"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, @@ -295,7 +295,7 @@ function mcl_doors:register_door(name, def) end minetest.register_node(name.."_b_2", { - tiles = {tt[2].."^[transformFY", tt[2], tb[2].."^[transformFX", tb[2], tb[1].."^[transformFX", tb[1]}, + tiles = {"blank.png", tt[2].."^[transformFXR90", tb[2].."^[transformI", tb[2].."^[transformFX", tb[1].."^[transformFX", tb[1]}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, @@ -342,7 +342,7 @@ function mcl_doors:register_door(name, def) end minetest.register_node(name.."_t_2", { - tiles = {tt[2].."^[transformFY", tt[2], tt[2].."^[transformFX", tt[2], tt[1].."^[transformFX", tt[1]}, + tiles = {tt[2].."^[transformR90", "blank.png", tt[2].."^[transformI", tt[2].."^[transformFX", tt[1].."^[transformFX", tt[1]}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, diff --git a/mods/ITEMS/mcl_doors/api_trapdoors.lua b/mods/ITEMS/mcl_doors/api_trapdoors.lua index 8053be8e..c8fbe4b9 100644 --- a/mods/ITEMS/mcl_doors/api_trapdoors.lua +++ b/mods/ITEMS/mcl_doors/api_trapdoors.lua @@ -1,3 +1,20 @@ +-- Wrapper around mintest.pointed_thing_to_face_pos. +local function get_fpos(placer, pointed_thing) + local fpos + -- Workaround: minetest.pointed_thing_to_face_pos crashes in MT 0.4.16 if + -- pointed_thing.under and pointed_thing.above are equal + -- FIXME: Remove this when MT got fixed. + if not vector.equals(pointed_thing.under, pointed_thing.above) then + -- The happy case: Everything is normal + local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) + fpos = finepos.y % 1 + else + -- Fallback if both above and under are equal + fpos = 0 + end + return fpos +end + ---- Trapdoor ---- function mcl_doors:register_trapdoor(name, def) @@ -91,9 +108,7 @@ function mcl_doors:register_trapdoor(name, def) param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) end - local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) - local fpos = finepos.y % 1 - + local fpos = get_fpos(placer, pointed_thing) local origname = itemstack:get_name() if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) diff --git a/mods/ITEMS/mcl_doors/register.lua b/mods/ITEMS/mcl_doors/register.lua index f6cc6a1b..ea8459fb 100644 --- a/mods/ITEMS/mcl_doors/register.lua +++ b/mods/ITEMS/mcl_doors/register.lua @@ -12,8 +12,8 @@ mcl_doors:register_door("mcl_doors:wooden_door", { groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, - tiles_bottom = {"mcl_doors_door_wood_lower.png", "mcl_doors_door_wood_lower.png"}, - tiles_top = {"mcl_doors_door_wood_upper.png", "mcl_doors_door_wood_upper.png"}, + tiles_bottom = {"mcl_doors_door_wood_lower.png", "mcl_doors_door_wood_side_lower.png"}, + tiles_top = {"mcl_doors_door_wood_upper.png", "mcl_doors_door_wood_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -35,8 +35,8 @@ mcl_doors:register_door("mcl_doors:acacia_door", { groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, - tiles_bottom = {"mcl_doors_door_acacia_lower.png", "mcl_doors_door_acacia_lower.png"}, - tiles_top = {"mcl_doors_door_acacia_upper.png", "mcl_doors_door_acacia_upper.png"}, + tiles_bottom = {"mcl_doors_door_acacia_lower.png", "mcl_doors_door_acacia_side_lower.png"}, + tiles_top = {"mcl_doors_door_acacia_upper.png", "mcl_doors_door_acacia_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -58,8 +58,8 @@ mcl_doors:register_door("mcl_doors:birch_door", { groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, - tiles_bottom = {"mcl_doors_door_birch_lower.png", "mcl_doors_door_birch_lower.png"}, - tiles_top = {"mcl_doors_door_birch_upper.png", "mcl_doors_door_birch_upper.png"}, + tiles_bottom = {"mcl_doors_door_birch_lower.png", "mcl_doors_door_birch_side_lower.png"}, + tiles_top = {"mcl_doors_door_birch_upper.png", "mcl_doors_door_birch_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -81,8 +81,8 @@ mcl_doors:register_door("mcl_doors:dark_oak_door", { groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, - tiles_bottom = {"mcl_doors_door_dark_oak_lower.png", "mcl_doors_door_dark_oak_lower.png"}, - tiles_top = {"mcl_doors_door_dark_oak_upper.png", "mcl_doors_door_dark_oak_upper.png"}, + tiles_bottom = {"mcl_doors_door_dark_oak_lower.png", "mcl_doors_door_dark_oak_side_lower.png"}, + tiles_top = {"mcl_doors_door_dark_oak_upper.png", "mcl_doors_door_dark_oak_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -104,8 +104,8 @@ mcl_doors:register_door("mcl_doors:jungle_door", { groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, - tiles_bottom = {"mcl_doors_door_jungle_lower.png", "mcl_doors_door_jungle_lower.png"}, - tiles_top = {"mcl_doors_door_jungle_upper.png", "mcl_doors_door_jungle_upper.png"}, + tiles_bottom = {"mcl_doors_door_jungle_lower.png", "mcl_doors_door_jungle_side_lower.png"}, + tiles_top = {"mcl_doors_door_jungle_upper.png", "mcl_doors_door_jungle_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -127,8 +127,8 @@ mcl_doors:register_door("mcl_doors:spruce_door", { groups = {handy=1,axey=1, material_wood=1}, _mcl_hardness = 3, _mcl_blast_resistance = 15, - tiles_bottom = {"mcl_doors_door_spruce_lower.png", "mcl_doors_door_spruce_lower.png"}, - tiles_top = {"mcl_doors_door_spruce_upper.png", "mcl_doors_door_spruce_upper.png"}, + tiles_bottom = {"mcl_doors_door_spruce_lower.png", "mcl_doors_door_spruce_side_lower.png"}, + tiles_top = {"mcl_doors_door_spruce_upper.png", "mcl_doors_door_spruce_side_upper.png"}, sounds = mcl_sounds.node_sound_wood_defaults(), }) @@ -181,8 +181,8 @@ mcl_doors:register_door("mcl_doors:iron_door", { groups = {pickaxey=1, mesecon_effector_on=1}, _mcl_hardness = 5, _mcl_blast_resistance = 25, - tiles_bottom = {"mcl_doors_door_iron_lower.png^[transformFX", "mcl_doors_door_iron_lower.png^[transformFX"}, - tiles_top = {"mcl_doors_door_iron_upper.png^[transformFX", "mcl_doors_door_iron_upper.png^[transformFX"}, + tiles_bottom = {"mcl_doors_door_iron_lower.png^[transformFX", "mcl_doors_door_iron_side_lower.png"}, + tiles_top = {"mcl_doors_door_iron_upper.png^[transformFX", "mcl_doors_door_iron_side_upper.png"}, sounds = mcl_sounds.node_sound_metal_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", diff --git a/mods/ITEMS/mcl_doors/sounds/doors_door_close.ogg b/mods/ITEMS/mcl_doors/sounds/doors_door_close.ogg index a39452ba..b4a13ec7 100644 Binary files a/mods/ITEMS/mcl_doors/sounds/doors_door_close.ogg and b/mods/ITEMS/mcl_doors/sounds/doors_door_close.ogg differ diff --git a/mods/ITEMS/mcl_doors/sounds/doors_door_open.ogg b/mods/ITEMS/mcl_doors/sounds/doors_door_open.ogg index 7ec7f480..d03570ee 100644 Binary files a/mods/ITEMS/mcl_doors/sounds/doors_door_open.ogg and b/mods/ITEMS/mcl_doors/sounds/doors_door_open.ogg differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_acacia_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_acacia_side_lower.png new file mode 100644 index 00000000..9faa931d Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_acacia_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_acacia_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_acacia_side_upper.png new file mode 100644 index 00000000..f1c04b99 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_acacia_side_upper.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_birch_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_birch_side_lower.png new file mode 100644 index 00000000..dd7310ef Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_birch_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_birch_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_birch_side_upper.png new file mode 100644 index 00000000..a6805e4f Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_birch_side_upper.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_dark_oak_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_dark_oak_side_lower.png new file mode 100644 index 00000000..51f28b35 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_dark_oak_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_dark_oak_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_dark_oak_side_upper.png new file mode 100644 index 00000000..db254813 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_dark_oak_side_upper.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_iron_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_iron_side_lower.png new file mode 100644 index 00000000..583b3e26 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_iron_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_iron_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_iron_side_upper.png new file mode 100644 index 00000000..a30b9300 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_iron_side_upper.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_jungle_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_jungle_side_lower.png new file mode 100644 index 00000000..6014b530 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_jungle_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_jungle_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_jungle_side_upper.png new file mode 100644 index 00000000..9f01843a Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_jungle_side_upper.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_spruce_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_spruce_side_lower.png new file mode 100644 index 00000000..c4605596 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_spruce_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_spruce_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_spruce_side_upper.png new file mode 100644 index 00000000..8ca2474d Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_spruce_side_upper.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_wood_side_lower.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_wood_side_lower.png new file mode 100644 index 00000000..6ee18505 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_wood_side_lower.png differ diff --git a/mods/ITEMS/mcl_doors/textures/mcl_doors_door_wood_side_upper.png b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_wood_side_upper.png new file mode 100644 index 00000000..abdbb0e5 Binary files /dev/null and b/mods/ITEMS/mcl_doors/textures/mcl_doors_door_wood_side_upper.png differ diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index dc8c871a..c69befce 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -123,6 +123,11 @@ mcl_dye.apply_bone_meal = function(pointed_thing) -- Allium and blue orchid intentionally left out, -- those must be found by the player. } + -- Special case for dry lands + local flowers_table_dry = { + "mcl_flowers:dandelion", + "mcl_flowers:poppy", + } local pos = pointed_thing.under local n = minetest.get_node(pos) @@ -137,7 +142,7 @@ mcl_dye.apply_bone_meal = function(pointed_thing) -- Must be on a dirt-type block local below = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) - if below.name ~= "mcl_core:mycelium" and below.name ~= "mcl_core:dirt" and below.name ~= "mcl_core:dirt_with_grass" and below.name ~= "mcl_core:coarse_dirt" and below.name ~= "mcl_core:podzol" then + if below.name ~= "mcl_core:mycelium" and below.name ~= "mcl_core:dirt" and minetest.get_item_group(below.name, "grass_block") ~= 1 and below.name ~= "mcl_core:coarse_dirt" and below.name ~= "mcl_core:podzol" then return false end @@ -206,7 +211,7 @@ mcl_dye.apply_bone_meal = function(pointed_thing) -- Cocoa: Advance by 1 stage mcl_cocoas.grow(pos) return true - elseif n.name == "mcl_core:dirt_with_grass" or n.name == "mcl_core:dirt_with_grass_snow" then + elseif minetest.get_item_group(n.name, "grass_block") == 1 then -- Grass Block: Generate tall grass and random flowers all over the place for i = -2, 2 do for j = -2, 2 do @@ -215,14 +220,19 @@ mcl_dye.apply_bone_meal = function(pointed_thing) n = minetest.get_node(pos) local n2 = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) - if n.name ~= "" and n.name == "air" and (n2.name == "mcl_core:dirt_with_grass" or n2.name == "mcl_core:dirt_with_grass_snow") then + if n.name ~= "" and n.name == "air" and (minetest.get_item_group(n2.name, "grass_block_no_snow") == 1) then -- Randomly generate flowers, tall grass or nothing if math.random(1,100) <= 90 then -- 90% tall grass, 10% flower if math.random(1,100) <= 90 then - minetest.add_node(pos, {name="mcl_core:tallgrass"}) + local col = minetest.registered_nodes[n2.name]._mcl_grass_palette_index + minetest.add_node(pos, {name="mcl_flowers:tallgrass", param2=col}) else - minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) + if n2.name == "mcl_core:dirt_with_dry_grass" then + minetest.add_node(pos, {name=flowers_table_dry[math.random(1, #flowers_table_dry)]}) + else + minetest.add_node(pos, {name=flowers_table[math.random(1, #flowers_table)]}) + end end end end @@ -249,8 +259,8 @@ mcl_dye.apply_bone_meal = function(pointed_thing) local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) if minetest.registered_nodes[topnode.name].buildable_to then - minetest.set_node(pos, { name = "mcl_flowers:double_grass" }) - minetest.set_node(toppos, { name = "mcl_flowers:double_grass_top" }) + minetest.set_node(pos, { name = "mcl_flowers:double_grass", param2 = n.param2 }) + minetest.set_node(toppos, { name = "mcl_flowers:double_grass_top", param2 = n.param2 }) return true end @@ -259,8 +269,8 @@ mcl_dye.apply_bone_meal = function(pointed_thing) local toppos = { x=pos.x, y=pos.y+1, z=pos.z } local topnode = minetest.get_node(toppos) if minetest.registered_nodes[topnode.name].buildable_to then - minetest.set_node(pos, { name = "mcl_flowers:double_fern" }) - minetest.set_node(toppos, { name = "mcl_flowers:double_fern_top" }) + minetest.set_node(pos, { name = "mcl_flowers:double_fern", param2 = n.param2 }) + minetest.set_node(toppos, { name = "mcl_flowers:double_fern_top", param2 = n.param2 }) return true end end diff --git a/mods/ITEMS/mcl_farming/depends.txt b/mods/ITEMS/mcl_farming/depends.txt index 7cdd8c91..1d455601 100644 --- a/mods/ITEMS/mcl_farming/depends.txt +++ b/mods/ITEMS/mcl_farming/depends.txt @@ -2,6 +2,6 @@ mcl_core mcl_sounds mcl_wool mcl_torches -weather_pack +mcl_weather mobs_mc doc? diff --git a/mods/ITEMS/mcl_farming/shared_functions.lua b/mods/ITEMS/mcl_farming/shared_functions.lua index 486f9359..28e397e8 100644 --- a/mods/ITEMS/mcl_farming/shared_functions.lua +++ b/mods/ITEMS/mcl_farming/shared_functions.lua @@ -322,7 +322,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s floor = minetest.get_node(floorpos) local block = minetest.get_node(blockpos) local soilgroup = minetest.get_item_group(floor.name, "soil") - if not ((floor.name=="mcl_core:dirt_with_grass" or floor.name=="mcl_core:dirt_with_grass_snow" or floor.name=="mcl_core:dirt" or soilgroup == 2 or soilgroup == 3) and block.name == "air") then + if not ((minetest.get_item_group(floor.name, "grass_block") == 1 or floor.name=="mcl_core:dirt" or soilgroup == 2 or soilgroup == 3) and block.name == "air") then table.remove(neighbors, n) end end diff --git a/mods/ITEMS/mcl_farming/soil.lua b/mods/ITEMS/mcl_farming/soil.lua index 4c5882ee..25ef7af7 100644 --- a/mods/ITEMS/mcl_farming/soil.lua +++ b/mods/ITEMS/mcl_farming/soil.lua @@ -88,8 +88,8 @@ minetest.register_abm({ -- The decay branch (make farmland dry or turn back to dirt) -- Don't decay while it's raining - if rain.raining then - if weather.is_outdoor(pos) then + if mcl_weather.rain.raining then + if mcl_weather.is_outdoor(pos) then return end end diff --git a/mods/ITEMS/mcl_fishing/init.lua b/mods/ITEMS/mcl_fishing/init.lua index 09c56c15..f1723d1e 100644 --- a/mods/ITEMS/mcl_fishing/init.lua +++ b/mods/ITEMS/mcl_fishing/init.lua @@ -94,6 +94,12 @@ minetest.register_tool("mcl_fishing:fishing_rod", { sound = { breaks = "default_tool_breaks" }, }) +--[[ + +Temporarily removed from crafting as the fishing rod is massively overpowered atm. + +TODO: Re-enable crafting when fishing rod has been improved. + minetest.register_craft({ output = "mcl_fishing:fishing_rod", recipe = { @@ -110,6 +116,7 @@ minetest.register_craft({ {'mcl_mobitems:string','','mcl_core:stick'}, } }) +]] minetest.register_craft({ type = "fuel", diff --git a/mods/ITEMS/mcl_flowerpots/init.lua b/mods/ITEMS/mcl_flowerpots/init.lua index bddbcbe3..c9187eed 100644 --- a/mods/ITEMS/mcl_flowerpots/init.lua +++ b/mods/ITEMS/mcl_flowerpots/init.lua @@ -1,3 +1,182 @@ -local path = minetest.get_modpath("mcl_flowerpots") -dofile(path.."/nodes.lua") +local flowers = { + {"dandelion", "mcl_flowers:dandelion", "Dandelion Flower Pot"}, + {"poppy", "mcl_flowers:poppy", "Poppy Floer Pot"}, + {"blue_orchid", "mcl_flowers:blue_orchid", "Blue Orchid Flower Pot"}, + {"allium", "mcl_flowers:allium", "Allium Flower Pot"}, + {"azure_bluet", "mcl_flowers:azure_bluet", "Azure Bluet Flower Pot"}, + {"tulip_red", "mcl_flowers:tulip_red", "Red Tulip Flower Pot"}, + {"tulip_pink", "mcl_flowers:tulip_pink", "Pink Tulip Flower Pot"}, + {"tulip_white", "mcl_flowers:tulip_white", "White Tulip Flower Pot"}, + {"tulip_orange", "mcl_flowers:tulip_orange", "Orange Tulip Flower Pot"}, + {"oxeye_daisy", "mcl_flowers:oxeye_daisy", "Oxeye Daisy Flower Pot"}, + {"mushroom_brown", "mcl_mushrooms:mushroom_brown", "Brown Mushroom Flower Pot"}, + {"mushroom_red", "mcl_mushrooms:mushroom_red", "Red Mushroom Flower Pot"}, + {"sapling", "mcl_core:sapling", "Oak Sapling Flower Pot"}, + {"acaciasapling", "mcl_core:acaciasapling", "Acacia Sapling Flower Pot"}, + {"junglesapling", "mcl_core:junglesapling", "Jungle Sapling Flower Pot"}, + {"darksapling", "mcl_core:darksapling", "Dark Oak Sapling Flower Pot"}, + {"sprucesapling", "mcl_core:sprucesapling", "Spruce Sapling Flower Pot"}, + {"birchsapling", "mcl_core:birchsapling", "Birch Sapling Flower Pot"}, + {"deadbush", "mcl_core:deadbush", "Dead Bush Flower Pot"}, + {"fern", "mcl_flowers:fern", "Fern Flower Pot", {"mcl_flowers_fern_inv.png"}}, +} + +local cubes = { + {"cactus", "mcl_core:cactus", "Cactus Flower Pot"}, +} + +minetest.register_node("mcl_flowerpots:flower_pot", { + description = "Flower Pot", + _doc_items_longdesc = "Flower pots are decorational blocks in which flowers and other small plants can be placed.", + _doc_items_usagehelp = "Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.", + drawtype = "mesh", + mesh = "flowerpot.obj", + tiles = { + "mcl_flowerpots_flowerpot.png", + }, + visual_scale = 0.5, + wield_image = "mcl_flowerpots_flowerpot_inventory.png", + wield_scale = {x=1.0, y=1.0, z=1.0}, + paramtype = "light", + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + collision_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + is_ground_content = false, + inventory_image = "mcl_flowerpots_flowerpot_inventory.png", + groups = {dig_immediate=3, deco_block=1, attached_node=1, dig_by_piston=1, flower_pot=1}, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_rightclick = function(pos, node, clicker, itemstack) + local item = clicker:get_wielded_item():get_name() + for _, row in ipairs(flowers) do + local flower = row[1] + local flower_node = row[2] + if item == flower_node then + minetest.swap_node(pos, {name="mcl_flowerpots:flower_pot_"..flower}) + if not minetest.settings:get_bool("creative_mode") then + itemstack:take_item() + end + end + end + for _, row in ipairs(cubes) do + local flower = row[1] + local flower_node = row[2] + if item == flower_node then + minetest.swap_node(pos, {name="mcl_flowerpots:flower_pot_"..flower}) + if not minetest.settings:get_bool("creative_mode") then + itemstack:take_item() + end + end + end + end, +}) + +minetest.register_craft({ + output = 'mcl_flowerpots:flower_pot', + recipe = { + {'mcl_core:brick', '', 'mcl_core:brick'}, + {'', 'mcl_core:brick', ''}, + {'', '', ''}, + } +}) + +for _, row in ipairs(flowers) do +local flower = row[1] +local flower_node = row[2] +local desc = row[3] +local texture +if row[4] then + texture = row[4] +else + texture = minetest.registered_nodes[flower_node]["tiles"] +end +minetest.register_node("mcl_flowerpots:flower_pot_"..flower, { + description = desc, + _doc_items_create_entry = false, + drawtype = "mesh", + mesh = "flowerpot.obj", + tiles = { + "[combine:32x32:0,0=mcl_flowerpots_flowerpot.png:0,0="..texture[1], + }, + visual_scale = 0.5, + wield_scale = {x=1.0, y=1.0, z=1.0}, + paramtype = "light", + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + collision_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + is_ground_content = false, + groups = {dig_immediate=3, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1, flower_pot=2}, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_rightclick = function(pos, item, clicker) + minetest.add_item({x=pos.x, y=pos.y+0.5, z=pos.z}, flower_node) + minetest.set_node(pos, {name="mcl_flowerpots:flower_pot"}) + end, + drop = { + items = { + { items = { "mcl_flowerpots:flower_pot", flower_node } } + } + }, +}) +-- Add entry alias for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_flowerpots:flower_pot", "nodes", "mcl_flowerpots:flower_pot_"..flower) +end +end + +for _, row in ipairs(cubes) do +local flower = row[1] +local flower_node = row[2] +local desc = row[3] +minetest.register_node("mcl_flowerpots:flower_pot_"..flower, { + description = desc, + _doc_items_create_entry = false, + drawtype = "mesh", + mesh = "flowerpot_with_long_cube.obj", + tiles = { + "mcl_flowerpots_"..flower..".png", + }, + visual_scale = 0.5, + wield_scale = {x=1.0, y=1.0, z=1.0}, + paramtype = "light", + sunlight_propagates = true, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + collision_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} + }, + is_ground_content = false, + groups = {dig_immediate=3, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1, flower_pot=2}, + sounds = mcl_sounds.node_sound_stone_defaults(), + on_rightclick = function(pos, item, clicker) + minetest.add_item({x=pos.x, y=pos.y+0.5, z=pos.z}, flower_node) + minetest.set_node(pos, {name="mcl_flowerpots:flower_pot"}) + end, + drop = { + items = { + { items = { "mcl_flowerpots:flower_pot", flower_node } } + } + }, + + +}) + +-- Add entry alias for the Help +if minetest.get_modpath("doc") then + doc.add_entry_alias("nodes", "mcl_flowerpots:flower_pot", "nodes", "mcl_flowerpots:flower_pot_"..flower) +end +end diff --git a/mods/ITEMS/mcl_flowerpots/nodes.lua b/mods/ITEMS/mcl_flowerpots/nodes.lua deleted file mode 100644 index 1e47ceb5..00000000 --- a/mods/ITEMS/mcl_flowerpots/nodes.lua +++ /dev/null @@ -1,177 +0,0 @@ - -local flowers = { - {"dandelion", "mcl_flowers:dandelion", "Dandelion Flower Pot"}, - {"poppy", "mcl_flowers:poppy", "Poppy Floer Pot"}, - {"blue_orchid", "mcl_flowers:blue_orchid", "Blue Orchid Flower Pot"}, - {"allium", "mcl_flowers:allium", "Allium Flower Pot"}, - {"azure_bluet", "mcl_flowers:azure_bluet", "Azure Bluet Flower Pot"}, - {"tulip_red", "mcl_flowers:tulip_red", "Red Tulip Flower Pot"}, - {"tulip_pink", "mcl_flowers:tulip_pink", "Pink Tulip Flower Pot"}, - {"tulip_white", "mcl_flowers:tulip_white", "White Tulip Flower Pot"}, - {"tulip_orange", "mcl_flowers:tulip_orange", "Orange Tulip Flower Pot"}, - {"oxeye_daisy", "mcl_flowers:oxeye_daisy", "Oxeye Daisy Flower Pot"}, - {"mushroom_brown", "mcl_mushrooms:mushroom_brown", "Brown Mushroom Flower Pot"}, - {"mushroom_red", "mcl_mushrooms:mushroom_red", "Red Mushroom Flower Pot"}, - {"sapling", "mcl_core:sapling", "Oak Sapling Flower Pot"}, - {"acaciasapling", "mcl_core:acaciasapling", "Acacia Sapling Flower Pot"}, - {"junglesapling", "mcl_core:junglesapling", "Jungle Sapling Flower Pot"}, - {"darksapling", "mcl_core:darksapling", "Dark Oak Sapling Flower Pot"}, - {"sprucesapling", "mcl_core:sprucesapling", "Spruce Sapling Flower Pot"}, - {"birchsapling", "mcl_core:birchsapling", "Birch Sapling Flower Pot"}, - {"deadbush", "mcl_core:deadbush", "Dead Bush Flower Pot"}, - {"fern", "mcl_flowers:fern", "Fern Flower Pot"}, -} - -local cubes = { - {"cactus", "mcl_core:cactus", "Cactus Flower Pot"}, -} - -minetest.register_node("mcl_flowerpots:flower_pot", { - description = "Flower Pot", - _doc_items_longdesc = "Flower pots are decorational blocks in which flowers and other small plants can be placed.", - _doc_items_usagehelp = "Rightclick an empty flower pot while you wield a plant to place the plant. Flower pots can hold small flowers (not higher than 1 block), saplings, ferns, dead bushes, mushrooms and cacti. Rightclick a potted plant to retrieve the plant.", - drawtype = "mesh", - mesh = "flowerpot.obj", - tiles = { - "mcl_flowerpots_flowerpot.png", - }, - visual_scale = 0.5, - wield_image = "mcl_flowerpots_flowerpot_inventory.png", - wield_scale = {x=1.0, y=1.0, z=1.0}, - paramtype = "light", - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} - }, - collision_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} - }, - is_ground_content = false, - inventory_image = "mcl_flowerpots_flowerpot_inventory.png", - groups = {dig_immediate=3, deco_block=1, attached_node=1, dig_by_piston=1, flower_pot=1}, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_rightclick = function(pos, node, clicker, itemstack) - local item = clicker:get_wielded_item():get_name() - for _, row in ipairs(flowers) do - local flower = row[1] - local flower_node = row[2] - if item == flower_node then - minetest.swap_node(pos, {name="mcl_flowerpots:flower_pot_"..flower}) - if not minetest.settings:get_bool("creative_mode") then - itemstack:take_item() - end - end - end - for _, row in ipairs(cubes) do - local flower = row[1] - local flower_node = row[2] - if item == flower_node then - minetest.swap_node(pos, {name="mcl_flowerpots:flower_pot_"..flower}) - if not minetest.settings:get_bool("creative_mode") then - itemstack:take_item() - end - end - end - end, -}) - -minetest.register_craft({ - output = 'mcl_flowerpots:flower_pot', - recipe = { - {'mcl_core:brick', '', 'mcl_core:brick'}, - {'', 'mcl_core:brick', ''}, - {'', '', ''}, - } -}) - -for _, row in ipairs(flowers) do -local flower = row[1] -local flower_node = row[2] -local desc = row[3] -local texture = minetest.registered_nodes[flower_node]["tiles"] -minetest.register_node("mcl_flowerpots:flower_pot_"..flower, { - description = desc, - _doc_items_create_entry = false, - drawtype = "mesh", - mesh = "flowerpot.obj", - tiles = { - "[combine:32x32:0,0=mcl_flowerpots_flowerpot.png:0,0="..texture[1], - }, - visual_scale = 0.5, - wield_scale = {x=1.0, y=1.0, z=1.0}, - paramtype = "light", - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} - }, - collision_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} - }, - is_ground_content = false, - groups = {dig_immediate=3, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1, flower_pot=2}, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_rightclick = function(pos, item, clicker) - minetest.add_item({x=pos.x, y=pos.y+0.5, z=pos.z}, flower_node) - minetest.set_node(pos, {name="mcl_flowerpots:flower_pot"}) - end, - drop = { - items = { - { items = { "mcl_flowerpots:flower_pot", flower_node } } - } - }, -}) --- Add entry alias for the Help -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_flowerpots:flower_pot", "nodes", "mcl_flowerpots:flower_pot_"..flower) -end -end - -for _, row in ipairs(cubes) do -local flower = row[1] -local flower_node = row[2] -local desc = row[3] -minetest.register_node("mcl_flowerpots:flower_pot_"..flower, { - description = desc, - _doc_items_create_entry = false, - drawtype = "mesh", - mesh = "flowerpot_with_long_cube.obj", - tiles = { - "mcl_flowerpots_"..flower..".png", - }, - visual_scale = 0.5, - wield_scale = {x=1.0, y=1.0, z=1.0}, - paramtype = "light", - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} - }, - collision_box = { - type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, -0.1, 0.2} - }, - is_ground_content = false, - groups = {dig_immediate=3, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1, flower_pot=2}, - sounds = mcl_sounds.node_sound_stone_defaults(), - on_rightclick = function(pos, item, clicker) - minetest.add_item({x=pos.x, y=pos.y+0.5, z=pos.z}, flower_node) - minetest.set_node(pos, {name="mcl_flowerpots:flower_pot"}) - end, - drop = { - items = { - { items = { "mcl_flowerpots:flower_pot", flower_node } } - } - }, - - -}) - --- Add entry alias for the Help -if minetest.get_modpath("doc") then - doc.add_entry_alias("nodes", "mcl_flowerpots:flower_pot", "nodes", "mcl_flowerpots:flower_pot_"..flower) -end -end diff --git a/mods/ITEMS/mcl_flowers/init.lua b/mods/ITEMS/mcl_flowers/init.lua index 852f305c..337a5495 100644 --- a/mods/ITEMS/mcl_flowers/init.lua +++ b/mods/ITEMS/mcl_flowers/init.lua @@ -4,16 +4,26 @@ local init = os.clock() -- Simple flower template local smallflowerlongdesc = "This is a small flower. Small flowers are mainly used for dye production and can also be potted." -local flowerusagehelp = "It can only be placed on a block on which it would also survive." +local plant_usage_help = "It can only be placed on a block on which it would also survive." -- on_place function for flowers -local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, node) +local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, node, itemstack) local below = {x=pos.x, y=pos.y-1, z=pos.z} local soil_node = minetest.get_node_or_nil(below) if not soil_node then return false end + local has_palette = minetest.registered_nodes[itemstack:get_name()].palette ~= nil + local colorize + if has_palette then + colorize = minetest.registered_nodes[soil_node.name]._mcl_grass_palette_index + end + if not colorize then + colorize = 0 + end + --[[ Placement requirements: * Dirt or grass block + * If not flower, also allowed on podzol and coarse dirt * Light level >= 8 at any time or exposed to sunlight at day ]] local light_night = minetest.get_node_light(pos, 0.0) @@ -22,14 +32,16 @@ local on_place_flower = mcl_util.generate_on_place_plant_function(function(pos, if (light_night and light_night >= 8) or (light_day and light_day >= minetest.LIGHT_MAX) then light_ok = true end - return (soil_node.name == "mcl_core:dirt" or soil_node.name == "mcl_core:dirt_with_grass" or soil_node.name == "mcl_core:dirt_with_grass_snow" or soil_node.name == "mcl_core:coarse_dirt" or soil_node.name == "mcl_core:podzol" or soil_node.name == "mcl_core:podzol_snow") and light_ok + local is_flower = minetest.get_item_group(itemstack:get_name(), "flower") == 1 + local ok = (soil_node.name == "mcl_core:dirt" or minetest.get_item_group(soil_node.name, "grass_block") == 1 or (not is_flower and (soil_node.name == "mcl_core:coarse_dirt" or soil_node.name == "mcl_core:podzol" or soil_node.name == "mcl_core:podzol_snow"))) and light_ok + return ok, colorize end) local function add_simple_flower(name, desc, image, simple_selection_box) minetest.register_node("mcl_flowers:"..name, { description = desc, _doc_items_longdesc = smallflowerlongdesc, - _doc_items_usagehelp = flowerusagehelp, + _doc_items_usagehelp = plant_usage_help, drawtype = "plantlike", waving = 1, tiles = { image..".png" }, @@ -50,18 +62,16 @@ local function add_simple_flower(name, desc, image, simple_selection_box) }) end -local box_tulip = { -0.15, -0.5, -0.15, 0.15, 5/16, 0.15 } - -add_simple_flower("poppy", "Poppy", "mcl_flowers_poppy", { -0.15, -0.5, -0.15, 0.15, 3/16, 0.15 }) -add_simple_flower("dandelion", "Dandelion", "flowers_dandelion_yellow", { -0.15, -0.5, -0.15, 0.15, 0, 0.15 }) -add_simple_flower("oxeye_daisy", "Oxeye Daisy", "mcl_flowers_oxeye_daisy", { -0.15, -0.5, -0.15, 0.15, 5/16, 0.15 }) -add_simple_flower("tulip_orange", "Orange Tulip", "flowers_tulip", box_tulip) -add_simple_flower("tulip_pink", "Pink Tulip", "mcl_flowers_tulip_pink", box_tulip) -add_simple_flower("tulip_red", "Red Tulip", "mcl_flowers_tulip_red", box_tulip) -add_simple_flower("tulip_white", "White Tulip", "mcl_flowers_tulip_white", box_tulip) -add_simple_flower("allium", "Allium", "mcl_flowers_allium", { -0.2, -0.5, -0.2, 0.2, 6/16, 0.2 }) -add_simple_flower("azure_bluet", "Azure Bluet", "mcl_flowers_azure_bluet", { -3/16, -0.5, -3/16, 3/16, 2/16, 3/16 }) -add_simple_flower("blue_orchid", "Blue Orchid", "mcl_flowers_blue_orchid", { -5/16, -0.5, -5/16, 5/16, 6/16, 5/16 }) +add_simple_flower("poppy", "Poppy", "mcl_flowers_poppy", { -5/16, -0.5, -5/16, 5/16, 5/16, 5/16 }) +add_simple_flower("dandelion", "Dandelion", "flowers_dandelion_yellow", { -4/16, -0.5, -4/16, 4/16, 3/16, 4/16 }) +add_simple_flower("oxeye_daisy", "Oxeye Daisy", "mcl_flowers_oxeye_daisy", { -4/16, -0.5, -4/16, 4/16, 4/16, 4/16 }) +add_simple_flower("tulip_orange", "Orange Tulip", "flowers_tulip", { -3/16, -0.5, -3/16, 3/16, 5/16, 3/16 }) +add_simple_flower("tulip_pink", "Pink Tulip", "mcl_flowers_tulip_pink", { -3/16, -0.5, -3/16, 3/16, 5/16, 3/16 }) +add_simple_flower("tulip_red", "Red Tulip", "mcl_flowers_tulip_red", { -3/16, -0.5, -3/16, 3/16, 6/16, 3/16 }) +add_simple_flower("tulip_white", "White Tulip", "mcl_flowers_tulip_white", { -3/16, -0.5, -3/16, 3/16, 4/16, 3/16 }) +add_simple_flower("allium", "Allium", "mcl_flowers_allium", { -3/16, -0.5, -3/16, 3/16, 6/16, 3/16 }) +add_simple_flower("azure_bluet", "Azure Bluet", "mcl_flowers_azure_bluet", { -5/16, -0.5, -5/16, 5/16, 3/16, 5/16 }) +add_simple_flower("blue_orchid", "Blue Orchid", "mcl_flowers_blue_orchid", { -5/16, -0.5, -5/16, 5/16, 7/16, 5/16 }) local wheat_seed_drop = { @@ -74,27 +84,31 @@ local wheat_seed_drop = { } } --- Tall Grass -minetest.register_node("mcl_flowers:tallgrass", { +-- CHECKME: How does tall grass behave when pushed by a piston? + +--- Tall Grass --- +local def_tallgrass = { description = "Tall Grass", - _doc_items_longdesc = "Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.", - _doc_items_hidden = false, drawtype = "plantlike", + _doc_items_longdesc = "Tall grass is a small plant which often occours on the surface of grasslands. It can be harvested for wheat seeds. By using bone meal, tall grass can be turned into double tallgrass which is two blocks high.", + _doc_items_usagehelp = plant_usage_help, + _doc_items_hidden = false, waving = 1, tiles = {"mcl_flowers_tallgrass.png"}, - inventory_image = "mcl_flowers_tallgrass.png", - wield_image = "mcl_flowers_tallgrass.png", + inventory_image = "mcl_flowers_tallgrass_inv.png", + wield_image = "mcl_flowers_tallgrass_inv.png", selection_box = { type = "fixed", - fixed = {{ -6/16, -8/16, -6/16, 6/16, 8/16, 6/16 }}, + fixed = {{ -6/16, -8/16, -6/16, 6/16, 4/16, 6/16 }}, }, paramtype = "light", + paramtype2 = "color", + palette = "mcl_core_palette_grass.png", sunlight_propagates = true, walkable = false, buildable_to = true, is_ground_content = true, - -- CHECKME: How does tall grass behave when pushed by a piston? - groups = {dig_immediate=3, flammable=3,attached_node=1,plant=1,place_flowerlike=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, + groups = {handy=1,shearsy=1, flammable=3,attached_node=1,plant=1,place_flowerlike=2,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, sounds = mcl_sounds.node_sound_leaves_defaults(), drop = wheat_seed_drop, _mcl_shears_drop = true, @@ -102,46 +116,50 @@ minetest.register_node("mcl_flowers:tallgrass", { on_place = on_place_flower, _mcl_blast_resistance = 0, _mcl_hardness = 0, -}) +} +minetest.register_node("mcl_flowers:tallgrass", def_tallgrass) --- Fern --- -minetest.register_node("mcl_flowers:fern", { - description = "Fern", - _doc_items_longdesc = "Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high.", - drawtype = "plantlike", - waving = 1, - tiles = { "mcl_flowers_fern.png" }, - inventory_image = "mcl_flowers_fern.png", - wield_image = "mcl_flowers_fern.png", - sunlight_propagates = true, - paramtype = "light", - walkable = false, - stack_max = 64, - -- CHECKME: How does a fern behave when pushed by a piston? - groups = {dig_immediate=3,flammable=2,attached_node=1,plant=1,place_flowerlike=1,non_mycelium_plant=1,dig_by_water=1,destroy_by_lava_flow=1,deco_block=1}, - buildable_to = true, - sounds = mcl_sounds.node_sound_leaves_defaults(), - node_placement_prediction = "", - on_place = on_place_flower, - drop = wheat_seed_drop, - _mcl_shears_drop = true, - selection_box = { - type = "fixed", - fixed = { -4/16, -0.5, -4/16, 4/16, 7/16, 4/16 }, - }, -}) +-- The fern is very similar to tall grass, so we can copy a lot from it. +local def_fern = table.copy(def_tallgrass) +def_fern.description = "Fern" +def_fern._doc_items_longdesc = "Ferns are small plants which occour naturally in grasslands. They can be harvested for wheat seeds. By using bone meal, a fern can be turned into a large fern which is two blocks high." +def_fern.tiles = { "mcl_flowers_fern.png" } +def_fern.inventory_image = "mcl_flowers_fern_inv.png" +def_fern.wield_image = "mcl_flowers_fern_inv.png" +def_fern.selection_box = { + type = "fixed", + fixed = { -6/16, -0.5, -6/16, 6/16, 5/16, 6/16 }, +} -local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_img, selbox_radius, selbox_top_height, drop, shears_drop, is_flower) +minetest.register_node("mcl_flowers:fern", def_fern) + +local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_img, selbox_radius, selbox_top_height, drop, shears_drop, is_flower, grass_color) if not inv_img then inv_img = top_img end - local flowergroup, usagehelp + local usagehelp, noncreative, create_entry, paramtype2, palette if is_flower == nil then is_flower = true end + + local bottom_groups = {flammable=2,non_mycelium_plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, plant=1,double_plant=1,deco_block=1,not_in_creative_inventory=noncreative} if is_flower then - flowergroup = 1 - usagehelp = flowerusagehelp + bottom_groups.flower = 1 + bottom_groups.place_flowerlike = 1 + bottom_groups.dig_immediate = 3 + else + bottom_groups.place_flowerlike = 2 + bottom_groups.handy = 1 + bottom_groups.shearsy = 1 + end + if grass_color then + paramtype2 = "color" + palette = "mcl_core_palette_grass.png" + end + if longdesc == nil then + noncreative = 1 + create_entry = false end -- Drop itself by default local drop_bottom, drop_top @@ -153,14 +171,17 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im end minetest.register_node("mcl_flowers:"..name, { description = desc, + _doc_items_create_entry = create_entry, _doc_items_longdesc = longdesc, - _doc_items_usagehelp = usagehelp, + _doc_items_usagehelp = plant_usage_help, drawtype = "plantlike", tiles = { bottom_img }, inventory_image = inv_img, wield_image = inv_img, sunlight_propagates = true, paramtype = "light", + paramtype2 = paramtype2, + palette = palette, walkable = false, buildable_to = true, drop = drop_bottom, @@ -173,9 +194,11 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im on_place = function(itemstack, placer, pointed_thing) -- We can only place on nodes if pointed_thing.type ~= "node" then - --return + return end + local itemstring = "mcl_flowers:"..name + -- Call on_rightclick if the pointed node defines it local node = minetest.get_node(pointed_thing.under) if placer and not placer:get_player_control().sneak then @@ -215,13 +238,18 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im -- Placement rules: -- * Allowed on dirt or grass block + -- * If not a flower, also allowed on podzol and coarse dirt -- * Only with light level >= 8 -- * Only if two enough space - if (floorname == "mcl_core:dirt" or floorname == "mcl_core:dirt_with_grass" or floorname == "mcl_core:dirt_with_grass_snow" or floorname == "mcl_core:coarse_dirt" or floorname == "mcl_core:podzol" or floorname == "mcl_core:podzol_snow") and bottom_buildable and top_buildable and light_ok then + if (floorname == "mcl_core:dirt" or minetest.get_item_group(floorname, "grass_block") == 1 or (not is_flower and (floorname == "mcl_core:coarse_dirt" or floorname == "mcl_core:podzol" or floorname == "mcl_core:podzol_snow"))) and bottom_buildable and top_buildable and light_ok then + local param2 + if grass_color then + param2 = minetest.registered_nodes[floorname]._mcl_grass_palette_index + end -- Success! We can now place the flower - minetest.sound_play(minetest.registered_nodes["mcl_flowers:"..name].sounds.place, {pos = bottom, gain=1}) - minetest.set_node(bottom, {name="mcl_flowers:"..name}) - minetest.set_node(top, {name="mcl_flowers:"..name.."_top"}) + minetest.sound_play(minetest.registered_nodes[itemstring].sounds.place, {pos = bottom, gain=1}) + minetest.set_node(bottom, {name=itemstring, param2=param2}) + minetest.set_node(top, {name=itemstring.."_top", param2=param2}) if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() end @@ -236,10 +264,15 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im minetest.remove_node(top) end end, - groups = {dig_immediate=3,flammable=2,flower=flowergroup,place_flowerlike=1,non_mycelium_plant=1,attached_node=1, dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, plant=1,double_plant=1,deco_block=1}, + groups = bottom_groups, sounds = mcl_sounds.node_sound_leaves_defaults(), }) + local top_groups = table.copy(bottom_groups) + top_groups.not_in_creative_inventory=1 + top_groups.double_plant=2 + top_groups.attached_node=nil + -- Top minetest.register_node("mcl_flowers:"..name.."_top", { description = desc.." (Top Part)", @@ -248,6 +281,8 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im tiles = { top_img }, sunlight_propagates = true, paramtype = "light", + paramtype2 = paramtype2, + palette = palette, walkable = false, buildable_to = true, selection_box = { @@ -264,25 +299,29 @@ local function add_large_plant(name, desc, longdesc, bottom_img, top_img, inv_im minetest.remove_node(bottom) end end, - groups = {dig_immediate=3,flammable=2,flower=flowergroup,place_flowerlike=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, not_in_creative_inventory = 1, plant=1,double_plant=2}, + groups = top_groups, sounds = mcl_sounds.node_sound_leaves_defaults(), }) - if minetest.get_modpath("doc") then + if minetest.get_modpath("doc") and longdesc then doc.add_entry_alias("nodes", "mcl_flowers:"..name, "nodes", "mcl_flowers:"..name.."_top") + -- If no longdesc, help alias must be added manually end end -add_large_plant("peony", "Peony", "A peony is a large plant which occupies two blocks. It is mainly used in dye protection.", "mcl_flowers_double_plant_paeonia_bottom.png", "mcl_flowers_double_plant_paeonia_top.png", nil, 5/16, 4/16) -add_large_plant("rose_bush", "Rose Bush", "A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.", "mcl_flowers_double_plant_rose_bottom.png", "mcl_flowers_double_plant_rose_top.png", nil, 6/16, 7/16) -add_large_plant("lilac", "Lilac", "A lilac is a large plant which occupies two blocks. It is mainly used in dye production.", "mcl_flowers_double_plant_syringa_bottom.png", "mcl_flowers_double_plant_syringa_top.png", nil, 6/16, 7/16) +add_large_plant("peony", "Peony", "A peony is a large plant which occupies two blocks. It is mainly used in dye protection.", "mcl_flowers_double_plant_paeonia_bottom.png", "mcl_flowers_double_plant_paeonia_top.png", nil, 5/16, 6/16) +add_large_plant("rose_bush", "Rose Bush", "A rose bush is a large plant which occupies two blocks. It is safe to touch it. Rose bushes are mainly used in dye protection.", "mcl_flowers_double_plant_rose_bottom.png", "mcl_flowers_double_plant_rose_top.png", nil, 5/16, 1/16) +add_large_plant("lilac", "Lilac", "A lilac is a large plant which occupies two blocks. It is mainly used in dye production.", "mcl_flowers_double_plant_syringa_bottom.png", "mcl_flowers_double_plant_syringa_top.png", nil, 5/16, 6/16) -- TODO: Make the sunflower face East. Requires a mesh for the top node. -add_large_plant("sunflower", "Sunflower", "A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.", "mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_top.png^mcl_flowers_double_plant_sunflower_front.png", "mcl_flowers_double_plant_sunflower_front.png", 3/16, 4/16) +add_large_plant("sunflower", "Sunflower", "A sunflower is a large plant which occupies two blocks. It is mainly used in dye production.", "mcl_flowers_double_plant_sunflower_bottom.png", "mcl_flowers_double_plant_sunflower_top.png^mcl_flowers_double_plant_sunflower_front.png", "mcl_flowers_double_plant_sunflower_front.png", 6/16, 6/16) -add_large_plant("double_grass", "Double Tallgrass", "Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds.", "mcl_flowers_double_plant_grass_bottom.png", "mcl_flowers_double_plant_grass_top.png", nil, 5/16, 7/16, wheat_seed_drop, {"mcl_flowers:tallgrass 2"}, false) -add_large_plant("double_fern", "Large Fern", "Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds.", "mcl_flowers_double_plant_fern_bottom.png", "mcl_flowers_double_plant_fern_top.png", nil, 6/16, 5/16, wheat_seed_drop, {"mcl_flowers:fern 2"}, false) +local longdesc_grass = "Double tallgrass a variant of tall grass and occupies two blocks. It can be harvested for wheat seeds." +local longdesc_fern = "Large fern is a variant of fern and occupies two blocks. It can be harvested for wheat seeds." + +add_large_plant("double_grass", "Double Tallgrass", longdesc_grass, "mcl_flowers_double_plant_grass_bottom.png", "mcl_flowers_double_plant_grass_top.png", "mcl_flowers_double_plant_grass_inv.png", 6/16, 4/16, wheat_seed_drop, {"mcl_flowers:tallgrass 2"}, false, true) +add_large_plant("double_fern", "Large Fern", longdesc_fern, "mcl_flowers_double_plant_fern_bottom.png", "mcl_flowers_double_plant_fern_top.png", "mcl_flowers_double_plant_fern_inv.png", 5/16, 5/16, wheat_seed_drop, {"mcl_flowers:fern 2"}, false, true) minetest.register_abm({ label = "Pop out flowers", @@ -299,7 +338,7 @@ minetest.register_abm({ return end -- Pop out flower if not on dirt, grass block or too low brightness - if (below.name ~= "mcl_core:dirt" and below.name ~= "mcl_core:dirt_with_grass" and below.name ~= "mcl_core:dirt_with_grass_snow") or (minetest.get_node_light(pos, 0.5) < 8) then + if (below.name ~= "mcl_core:dirt" and minetest.get_item_group(below.name, "grass_block") ~= 1) or (minetest.get_node_light(pos, 0.5) < 8) then minetest.dig_node(pos) return end diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_allium.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_allium.png index c3b37fa3..db5f8206 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_allium.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_allium.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_bottom.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_bottom.png index 448cdeba..baf21de3 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_bottom.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_bottom.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_inv.png new file mode 100644 index 00000000..c44d03d3 Binary files /dev/null and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_inv.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_top.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_top.png index 9b7d3717..6ae47a1b 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_top.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_fern_top.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_bottom.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_bottom.png index 5ae10c09..568e3de6 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_bottom.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_bottom.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_inv.png new file mode 100644 index 00000000..ddfff3bd Binary files /dev/null and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_inv.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_top.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_top.png index e9432868..2d10b658 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_top.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_double_plant_grass_top.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern.png index 7e6989fc..9e3dc2da 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png new file mode 100644 index 00000000..66a58b7b Binary files /dev/null and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_fern_inv.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass.png index 63394b15..4828e156 100644 Binary files a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass.png and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass.png differ diff --git a/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass_inv.png b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass_inv.png new file mode 100644 index 00000000..cce0eba7 Binary files /dev/null and b/mods/ITEMS/mcl_flowers/textures/mcl_flowers_tallgrass_inv.png differ diff --git a/mods/ITEMS/mcl_jukebox/init.lua b/mods/ITEMS/mcl_jukebox/init.lua index 7fe4a621..7b0f2397 100644 --- a/mods/ITEMS/mcl_jukebox/init.lua +++ b/mods/ITEMS/mcl_jukebox/init.lua @@ -133,7 +133,9 @@ minetest.register_node("mcl_jukebox:jukebox", { local ly = pos.y+1 local lz = pos.z local record = inv:get_stack("main", 1) - minetest.add_item({x=lx, y=ly, z=lz}, record:get_name()) + local dropped_item = minetest.add_item({x=lx, y=ly, z=lz}, record:get_name()) + -- Rotate record to match with “slot” texture + dropped_item:set_yaw(math.pi/2) inv:set_stack("main", 1, "") if active_tracks[cname] ~= nil then minetest.sound_stop(active_tracks[cname]) @@ -170,7 +172,9 @@ minetest.register_node("mcl_jukebox:jukebox", { local stack = inv:get_stack("main", 1) if not stack:is_empty() then local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} - minetest.add_item(p, stack) + local dropped_item = minetest.add_item(p, stack) + -- Rotate record to match with “slot” texture + dropped_item:set_yaw(math.pi/2) if active_tracks[name] ~= nil then minetest.sound_stop(active_tracks[name]) digger:hud_remove(active_huds[name]) diff --git a/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_3.ogg b/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_3.ogg index d691313d..f23b01eb 100644 Binary files a/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_3.ogg and b/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_3.ogg differ diff --git a/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_4.ogg b/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_4.ogg index da842630..e6965024 100644 Binary files a/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_4.ogg and b/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_4.ogg differ diff --git a/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_6.ogg b/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_6.ogg index 2fe89d41..9982d296 100644 Binary files a/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_6.ogg and b/mods/ITEMS/mcl_jukebox/sounds/mcl_jukebox_track_6.ogg differ diff --git a/mods/ITEMS/mcl_mobitems/init.lua b/mods/ITEMS/mcl_mobitems/init.lua index 4dcd4730..332520e3 100644 --- a/mods/ITEMS/mcl_mobitems/init.lua +++ b/mods/ITEMS/mcl_mobitems/init.lua @@ -311,7 +311,7 @@ minetest.register_craftitem("mcl_mobitems:gunpowder", { minetest.register_tool("mcl_mobitems:carrot_on_a_stick", { description = "Carrot on a Stick", _doc_items_longdesc = "A carrot on a stick can be used on saddled pigs to ride them.", - _doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse (TODO). Pigs will also walk towards you when you just wield the carrot on a stick.", + _doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse. Pigs will also walk towards you when you just wield the carrot on a stick.", wield_image = "mcl_mobitems_carrot_on_a_stick.png", inventory_image = "mcl_mobitems_carrot_on_a_stick.png", groups = { transport = 1 }, @@ -353,6 +353,8 @@ minetest.register_craft({ }, }) +--[[ +TODO: Re-enable this when fishing rod is available again minetest.register_craft({ output = "mcl_mobitems:carrot_on_a_stick", recipe = { @@ -368,6 +370,7 @@ minetest.register_craft({ { "mcl_farming:carrot_item", "" }, }, }) +]] minetest.register_craft({ type = "shapeless", diff --git a/mods/ITEMS/mcl_portals/portal_end.lua b/mods/ITEMS/mcl_portals/portal_end.lua index 3f649431..cf3b1c59 100644 --- a/mods/ITEMS/mcl_portals/portal_end.lua +++ b/mods/ITEMS/mcl_portals/portal_end.lua @@ -1,97 +1,15 @@ -- Parameters - -local TCAVE = 0.6 -local nobj_cave = nil - local SPAWN_MIN = mcl_vars.mg_end_min+70 local SPAWN_MAX = mcl_vars.mg_end_min+98 local mg_name = minetest.get_mapgen_setting("mg_name") --- 3D noise - -local np_cave = { - offset = 0, - scale = 1, - spread = {x = 384, y = 128, z = 384}, -- squashed 3:1 - seed = 59033, - octaves = 5, - persist = 0.7 -} --- Portal frame material -local fake_portal_frame = "mcl_nether:quartz_block" - --- Table of objects (including players) which recently teleported by a --- End portal. Those objects have a brief cooloff period before they --- can teleport again. This prevents annoying back-and-forth teleportation. -local portal_cooloff = {} - --- Destroy portal if pos (portal frame or portal node) got destroyed -local destroy_portal = function(pos) - -- Deactivate Nether portal - local meta = minetest.get_meta(pos) - local p1 = minetest.string_to_pos(meta:get_string("portal_frame1")) - local p2 = minetest.string_to_pos(meta:get_string("portal_frame2")) - if not p1 or not p2 then - return - end - - local first = true - - -- p1 metadata of first node - local mp1 - for x = p1.x, p2.x do - for y = p1.y, p2.y do - for z = p1.z, p2.z do - local p = vector.new(x, y, z) - local m = minetest.get_meta(p) - if first then - --[[ Only proceed if the first node still has metadata. - If it doesn't have metadata, another node propably triggred the delection - routine earlier, so we bail out earlier to avoid an infinite cascade - of on_destroy events. ]] - mp1 = minetest.string_to_pos(m:get_string("portal_frame1")) - if not mp1 then - return - end - end - local nn = minetest.get_node(p).name - if nn == fake_portal_frame or nn == "mcl_portals:portal_end" then - -- Remove portal nodes, but not myself - if nn == "mcl_portals:portal_end" and not vector.equals(p, pos) then - minetest.remove_node(p) - end - -- Clear metadata of portal nodes and the frame - m:set_string("portal_frame1", "") - m:set_string("portal_frame2", "") - m:set_string("portal_target", "") - end - first = false - end - end - end -end - --- Fake end portal --- TODO: Create real end portal +-- End portal minetest.register_node("mcl_portals:portal_end", { description = "End Portal", _doc_items_longdesc = "An End portal teleports creatures and objects to the mysterious End dimension (and back!).", - _doc_items_usagehelp = "Stand in the portal for a moment to activate the teleportation. Entering such a portal for the first time will create a new portal in your destination. End portal which were built in the End will lead back to the Overworld. An End portal is destroyed if any of its surrounding frame blocks is destroyed.", + _doc_items_usagehelp = "Hop into the portal to teleport. Entering an End portal in the Overworld teleports you to a fixed position in the End dimension and creates a 5×5 obsidian platform at your destination. End portals in the End will lead back to your spawn point in the Overworld.", tiles = { - "blank.png", - "blank.png", - "blank.png", - "blank.png", - { - name = "mcl_portals_end_portal.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1.0, - }, - }, { name = "mcl_portals_end_portal.png", animation = { @@ -101,10 +19,14 @@ minetest.register_node("mcl_portals:portal_end", { length = 1.0, }, }, + "blank.png", + "blank.png", + "blank.png", + "blank.png", + "blank.png", }, drawtype = "nodebox", paramtype = "light", - paramtype2 = "facedir", sunlight_propagates = true, use_texture_alpha = true, walkable = false, @@ -120,291 +42,231 @@ minetest.register_node("mcl_portals:portal_end", { node_box = { type = "fixed", fixed = { - {-0.5, -0.5, -0.1, 0.5, 0.5, 0.1}, + {-0.5, -0.5, -0.5, 0.5, 4/16, 0.5}, }, }, groups = {not_in_creative_inventory = 1}, - on_destruct = destroy_portal, _mcl_hardness = -1, _mcl_blast_resistance = 18000000, }) -local function build_end_portal(pos, target3) - local p = {x = pos.x - 1, y = pos.y - 1, z = pos.z} - local p1 = {x = pos.x - 1, y = pos.y - 1, z = pos.z} - local p2 = {x = p1.x + 3, y = p1.y + 4, z = p1.z} - - for i = 1, 4 do - minetest.set_node(p, {name = fake_portal_frame}) - p.y = p.y + 1 - end - for i = 1, 3 do - minetest.set_node(p, {name = fake_portal_frame}) - p.x = p.x + 1 - end - for i = 1, 4 do - minetest.set_node(p, {name = fake_portal_frame}) - p.y = p.y - 1 - end - for i = 1, 3 do - minetest.set_node(p, {name = fake_portal_frame}) - p.x = p.x - 1 - end +-- Obsidian platform at the End portal destination in the End +local function build_end_portal_destination(pos) + local p1 = {x = pos.x - 2, y = pos.y, z = pos.z-2} + local p2 = {x = pos.x + 2, y = pos.y+2, z = pos.z+2} for x = p1.x, p2.x do for y = p1.y, p2.y do - p = {x = x, y = y, z = p1.z} - if not (x == p1.x or x == p2.x or y == p1.y or y == p2.y) then - minetest.set_node(p, {name = "mcl_portals:portal_end", param2 = 0}) + for z = p1.z, p2.z do + local newp = {x=x,y=y,z=z} + -- Build obsidian platform + if minetest.registered_nodes[minetest.get_node(newp).name].is_ground_content then + if y == p1.y then + minetest.set_node(newp, {name="mcl_core:obsidian"}) + else + minetest.remove_node(newp) + end end - local meta = minetest.get_meta(p) - meta:set_string("portal_frame1", minetest.pos_to_string(p1)) - meta:set_string("portal_frame2", minetest.pos_to_string(p2)) - meta:set_string("portal_target", minetest.pos_to_string(target3)) + end + end + end +end - for z = -2, 2 do - if z ~= 0 then - local newp = {x=p.x, y=p.y, z=p.z+z} - if y ~= p1.y then - if minetest.registered_nodes[ - minetest.get_node(newp).name].is_ground_content then - minetest.remove_node(newp) - end - else - -- Build obsidian platform if floating - local newp_below = table.copy(newp) - newp_below.y = newp.y - 1 - if minetest.get_node(newp).name == "air" and minetest.get_node(newp_below).name == "air" then - minetest.set_node(newp, {name="mcl_core:obsidian"}) - end +-- Check if pos is part of a valid end portal frame, filled with eyes of ender. +local function check_end_portal_frame(pos) + -- Check if pos has an end portal frame with eye of ender + local eframe = function(pos, param2) + local node = minetest.get_node(pos) + if node.name == "mcl_portals:end_portal_frame_eye" then + if param2 == nil or node.param2 == param2 then + return true, node + end + end + return false + end + + -- Step 1: Find a row of 3 end portal frames with eyes, all facing the same direction + local streak = 0 + local streak_start, streak_end, streak_start_node, streak_end_node + local last_param2 + local axes = { "x", "z" } + for a=1, #axes do + local axis = axes[a] + for b=pos[axis]-2, pos[axis]+2 do + local cpos = table.copy(pos) + cpos[axis] = b + local e, node = eframe(cpos, last_param2) + if e then + last_param2 = node.param2 + streak = streak + 1 + if streak == 1 then + streak_start = table.copy(pos) + streak_start[axis] = b + streak_start_node = node + elseif streak == 3 then + streak_end = table.copy(pos) + streak_end[axis] = b + streak_end_node = node + break + end + else + streak = 0 + last_param2 = nil + end + end + if streak_end then + break + end + streak = 0 + last_param2 = nil + end + -- Has a row been found? + if streak_end then + -- Step 2: Using the known facedir, check the remaining spots in which we expect + -- “eyed” end portal frames. + local dir = minetest.facedir_to_dir(streak_start_node.param2) + if dir.x ~= 0 then + for i=1, 3 do + if not eframe({x=streak_start.x + i*dir.x, y=streak_start.y, z=streak_start.z - 1}) then + return false + end + if not eframe({x=streak_start.x + i*dir.x, y=streak_start.y, z=streak_end.z + 1}) then + return false + end + if not eframe({x=streak_start.x + 4*dir.x, y=streak_start.y, z=streak_start.z + i-1}) then + return false end end - end - end - end -end - -local function find_end_target3_y2(target3_x, target3_z) - local start_y = math.random(SPAWN_MIN, SPAWN_MAX) -- Search start - if not nobj_cave then - nobj_cave = minetest.get_perlin(np_cave) - end - local air = 0 -- Consecutive air nodes found - - for y = start_y, SPAWN_MIN, -1 do - local nval_cave = nobj_cave:get3d({x = target3_x, y = y, z = target3_z}) - - if nval_cave > TCAVE then -- Cavern - air = air + 1 - else -- Not cavern, check if 4 nodes of space above - if air >= 4 then - return y + 2 - else -- Not enough space, reset air to zero - air = 0 + -- All checks survived! We have a valid portal! + if dir.x > 0 then + k = 1 + else + k = -3 end - end - end - - return start_y -- Fallback -end - -local function move_check2(p1, max, dir) - local p = {x = p1.x, y = p1.y, z = p1.z} - local d = math.abs(max - p1[dir]) / (max - p1[dir]) - - while p[dir] ~= max do - p[dir] = p[dir] + d - if minetest.get_node(p).name ~= fake_portal_frame then - return false - end - -- Abort if any of the portal frame blocks already has metadata. - -- This mod does not yet portals which neighbor each other directly. - -- TODO: Reorganize the way how portal frame coordinates are stored. - local meta = minetest.get_meta(p) - local p1 = meta:get_string("portal_frame1") - if minetest.string_to_pos(p1) ~= nil then - return false - end - end - - return true -end - -local function check_end_portal(p1, p2) - if p1.x ~= p2.x then - if not move_check2(p1, p2.x, "x") then - return false - end - if not move_check2(p2, p1.x, "x") then - return false - end - elseif p1.z ~= p2.z then - if not move_check2(p1, p2.z, "z") then - return false - end - if not move_check2(p2, p1.z, "z") then - return false - end - else - return false - end - - if not move_check2(p1, p2.y, "y") then - return false - end - if not move_check2(p2, p1.y, "y") then - return false - end - - return true -end - -local function is_end_portal(pos) - for d = -3, 3 do - for y = -4, 4 do - local px = {x = pos.x + d, y = pos.y + y, z = pos.z} - local pz = {x = pos.x, y = pos.y + y, z = pos.z + d} - - if check_end_portal(px, {x = px.x + 3, y = px.y + 4, z = px.z}) then - return px, {x = px.x + 3, y = px.y + 4, z = px.z} + return true, { x = streak_start.x + k, y = streak_start.y, z = streak_start.z } + elseif dir.z ~= 0 then + for i=1, 3 do + if not eframe({x=streak_start.x - 1, y=streak_start.y, z=streak_start.z + i*dir.z}) then + return false + end + if not eframe({x=streak_end.x + 1, y=streak_start.y, z=streak_start.z + i*dir.z}) then + return false + end + if not eframe({x=streak_start.x + i-1, y=streak_start.y, z=streak_start.z + 4*dir.z}) then + return false + end end - if check_end_portal(pz, {x = pz.x, y = pz.y + 4, z = pz.z + 3}) then - return pz, {x = pz.x, y = pz.y + 4, z = pz.z + 3} + if dir.z > 0 then + k = 1 + else + k = -3 end + -- All checks survived! We have a valid portal! + return true, { x = streak_start.x, y = streak_start.y, z = streak_start.z + k } end end + return false end -local function make_end_portal(pos) - local p1, p2 = is_end_portal(pos) - if not p1 or not p2 then - return false - end - - for d = 1, 2 do - for y = p1.y + 1, p2.y - 1 do - local p - if p1.z == p2.z then - p = {x = p1.x + d, y = y, z = p1.z} - else - p = {x = p1.x, y = y, z = p1.z + d} - end - if minetest.get_node(p).name ~= "air" then - return false +-- Generate a 3×3 end portal beginning at pos. To be used to fill an end portal frame +local function spawn_end_portal(pos) + local SIZE = 3 + for x=pos.x, pos.x+SIZE-1 do + for z=pos.z, pos.z+SIZE-1 do + minetest.set_node({x=x,y=pos.y,z=z}, {name="mcl_portals:portal_end"}) end end - end - - local param2 - if p1.z == p2.z then - param2 = 0 - else - param2 = 1 - end - - local target3 = {x = p1.x, y = p1.y, z = p1.z} - target3.x = target3.x + 1 - if target3.y < mcl_vars.mg_end_max and target3.y > mcl_vars.mg_end_min then - if mg_name == "flat" then - target3.y = mcl_vars.mg_bedrock_overworld_max + 5 - else - target3.y = math.random(mcl_vars.mg_overworld_min + 40, mcl_vars.mg_overworld_min + 96) - end - else - target3.y = find_end_target3_y2(target3.x, target3.z) - end - - for d = 0, 3 do - for y = p1.y, p2.y do - local p = {} - if param2 == 0 then - p = {x = p1.x + d, y = y, z = p1.z} - else - p = {x = p1.x, y = y, z = p1.z + d} - end - if minetest.get_node(p).name == "air" then - minetest.set_node(p, {name = "mcl_portals:portal_end", param2 = param2}) - end - local meta = minetest.get_meta(p) - - -- Portal frame corners - meta:set_string("portal_frame1", minetest.pos_to_string(p1)) - meta:set_string("portal_frame2", minetest.pos_to_string(p2)) - - -- Portal target coordinates - meta:set_string("portal_target", minetest.pos_to_string(target3)) - end - end - - return true end minetest.register_abm({ label = "End portal teleportation", nodenames = {"mcl_portals:portal_end"}, interval = 1, - chance = 2, + chance = 1, action = function(pos, node) - for _,obj in ipairs(minetest.get_objects_inside_radius(pos,1)) do --maikerumine added for objects to travel - local lua_entity = obj:get_luaentity() --maikerumine added for objects to travel + -- Destroy legacy end portals created with quartz block frame + -- by turning them into cobwebs. + -- We can tell if a end portal is legacy if it has portal_target as metadata. + -- FIXME: Remove this after some time. + local meta = minetest.get_meta(pos) + local legacy_portal_target = meta:get_string("portal_frame1") + if legacy_portal_target and legacy_portal_target ~= "" then + minetest.set_node(pos, {name="mcl_core:cobweb"}) + return + end + + for _,obj in ipairs(minetest.get_objects_inside_radius(pos, 1)) do + local lua_entity = obj:get_luaentity() --maikerumine added for objects to travel if obj:is_player() or lua_entity then - -- No rapid back-and-forth teleportatio - if portal_cooloff[obj] then + local _, dim = mcl_util.y_to_layer(pos.y) + + local objpos = obj:getpos() + if objpos == nil then return end - local meta = minetest.get_meta(pos) - local target3 = minetest.string_to_pos(meta:get_string("portal_target")) - if target3 then - -- force emerge of target3 area - minetest.get_voxel_manip():read_from_map(target3, target3) - if not minetest.get_node_or_nil(target3) then - minetest.emerge_area( - vector.subtract(target3, 4), vector.add(target3, 4)) + + -- Check if object is actually in portal. + objpos.y = math.ceil(objpos.y) + if minetest.get_node(objpos).name ~= "mcl_portals:portal_end" then + return + end + + local target + if dim == "end" then + -- End portal in the End: + -- Teleport back to the player's spawn in the Overworld. + -- TODO: Implement better spawn point detection + + target = minetest.string_to_pos(obj:get_attribute("mcl_beds:spawn")) + if not target then + target = minetest.setting_get_pos("static_spawnpoint") + end + if not target then + target = { x=0, y=0, z=0 } + if mg_name == "flat" then + target.y = mcl_vars.mg_bedrock_overworld_max + 5 + end + end + else + -- End portal in any other dimension: + -- Teleport to the End at a fixed position and generate a + -- 5×5 obsidian platform below. + + local platform_pos = mcl_vars.mg_end_platform_pos + -- force emerge of target1 area + minetest.get_voxel_manip():read_from_map(platform_pos, platform_pos) + if not minetest.get_node_or_nil(platform_pos) then + minetest.emerge_area(vector.subtract(platform_pos, 3), vector.add(platform_pos, 3)) end - -- teleport the object - minetest.after(3, function(obj, pos, target3) - -- No rapid back-and-forth teleportatio - if portal_cooloff[obj] then - return - end - local objpos = obj:getpos() - if objpos == nil then - return - end - -- If player stands, player is at ca. something+0.5 - -- which might cause precision problems, so we used ceil. - objpos.y = math.ceil(objpos.y) - if minetest.get_node(objpos).name ~= "mcl_portals:portal_end" then - return - end + -- Build destination + local function check_and_build_end_portal_destination(pos) + local n = minetest.get_node_or_nil(pos) + if n and n.name ~= "mcl_core:obsidian" then + build_end_portal_destination(pos) + minetest.after(2, check_and_build_end_portal_destination, pos) + elseif not n then + minetest.after(1, check_and_build_end_portal_destination, pos) + end + end - -- Build destination - local function check_and_build_end_portal(pos, target3) - local n = minetest.get_node_or_nil(target3) - if n and n.name ~= "mcl_portals:portal_end" then - build_end_portal(target3, pos) - minetest.after(2, check_and_build_end_portal, pos, target3) - elseif not n then - minetest.after(1, check_and_build_end_portal, pos, target3) - end - end + local platform + check_and_build_end_portal_destination(platform_pos) - check_and_build_end_portal(pos, target3) + target = table.copy(platform_pos) + target.y = target.y + 1 + end - -- Teleport - obj:setpos(target3) - minetest.sound_play("mcl_portals_teleport", {pos=target3, gain=0.5, max_hear_distance = 16}) - - -- Enable teleportation cooloff to prevent frequent back-and-forth teleportation - portal_cooloff[obj] = true - minetest.after(3, function(o) - portal_cooloff[o] = false - end, obj) - - end, obj, pos, target3) + -- Teleport + obj:set_pos(target) + if obj:is_player() then + -- Look towards the End island + if dim ~= "end" then + obj:set_look_horizontal(math.pi/2) + end + minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}) end end end @@ -414,20 +276,10 @@ minetest.register_abm({ --[[ ITEM OVERRIDES ]] -local portal_open_help = "To open an End portal, place an upright frame of quartz blocks with a length of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, use an eye of ender on the frame. The eye of ender is destroyed in the process." - --- Fake frame material -minetest.override_item(fake_portal_frame, { - _doc_items_longdesc = "A block of quartz can be used to create End portals.", - _doc_items_usagehelp = portal_open_help, - on_destruct = destroy_portal, -}) - - --- End Portal Frame (TODO) minetest.register_node("mcl_portals:end_portal_frame", { description = "End Portal Frame", - _doc_items_longdesc = "This block is currently only used for decoration. You can place an eye of ender into it for fun, but nothing will happen.", + _doc_items_longdesc = "End portal frames are used in the construction of End portals. Each block has a socket for an eye of ender.", + _doc_items_usagehelp = "To create an End portal, you need 12 end portal frames and 12 eyes of ender. The end portal frames have to be arranged around a horizontal 3×3 area with each block facing inward. Any other arrangement will fail." .. "\n" .. "Place an eye of ender into each block. The end portal appears in the middle after placing the final eye." .. "\n" .. "Once placed, an eye of ender can not be taken back.", groups = { creative_breakable = 1, deco_block = 1 }, tiles = { "mcl_portals_endframe_top.png", "mcl_portals_endframe_bottom.png", "mcl_portals_endframe_side.png" }, paramtype2 = "facedir", @@ -476,8 +328,8 @@ end -- Portal opener minetest.override_item("mcl_end:ender_eye", { - _doc_items_longdesc = "An eye of ender can be used to open End portals.", - _doc_items_usagehelp = portal_open_help, + _doc_items_longdesc = "Eye of ender can be used in the construction of End portal frames.", + _doc_items_usagehelp = "Find a structure with 12 end portal frames surrounding a horizontal aread of 3×3 blocks, with each block facing inward. Place an eye of ender into each end portal frame to create the portal.", on_place = function(itemstack, user, pointed_thing) -- Use pointed node's on_rightclick function first, if present local node = minetest.get_node(pointed_thing.under) @@ -487,26 +339,10 @@ minetest.override_item("mcl_end:ender_eye", { end end - -- If used on portal frame, open a portal - -- FIXME: This is the fake portal. Remove when the real end portal frame works - if pointed_thing.under and node.name == fake_portal_frame then - local opened = make_end_portal(pointed_thing.under) - if opened then - if minetest.get_modpath("doc") then - doc.mark_entry_as_revealed(user:get_player_name(), "nodes", "mcl_portals:portal_end") - end - minetest.sound_play( - "fire_flint_and_steel", - {pos = pointed_thing.above, gain = 0.5, max_hear_distance = 16}) - if not minetest.settings:get_bool("creative_mode") then - itemstack:take_item() -- 1 use - end - end - -- Place eye of ender into end portal frame - elseif pointed_thing.under and node.name == "mcl_portals:end_portal_frame" then - -- TODO: Open real end portal + if pointed_thing.under and node.name == "mcl_portals:end_portal_frame" then minetest.swap_node(pointed_thing.under, { name = "mcl_portals:end_portal_frame_eye", param2 = node.param2 }) + if minetest.get_modpath("doc") then doc.mark_entry_as_revealed(user:get_player_name(), "nodes", "mcl_portals:end_portal_frame") end @@ -516,6 +352,14 @@ minetest.override_item("mcl_end:ender_eye", { if not minetest.settings:get_bool("creative_mode") then itemstack:take_item() -- 1 use end + + local ok, ppos = check_end_portal_frame(pointed_thing.under) + if ok then + spawn_end_portal(ppos) + if minetest.get_modpath("doc") then + doc.mark_entry_as_revealed(user:get_player_name(), "nodes", "mcl_portals:portal_end") + end + end end return itemstack end, diff --git a/mods/ITEMS/mcl_portals/portal_nether.lua b/mods/ITEMS/mcl_portals/portal_nether.lua index c54bbc73..74f089ac 100644 --- a/mods/ITEMS/mcl_portals/portal_nether.lua +++ b/mods/ITEMS/mcl_portals/portal_nether.lua @@ -288,6 +288,11 @@ end -- If no Nether portal can be lit, nothing happens. -- Returns true on success and false on failure. function mcl_portals.light_nether_portal(pos) + -- Only allow to make portals in Overworld and Nether + local _, dim = mcl_util.y_to_layer(pos.y) + if dim ~= "overworld" and dim ~= "nether" then + return false + end -- Create Nether portal nodes local p1, p2 = is_portal(pos) if not p1 or not p2 then @@ -429,7 +434,9 @@ minetest.register_abm({ -- Teleport obj:setpos(target) - minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}) + if obj:is_player() then + minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}) + end -- Enable teleportation cooloff for 4 seconds, to prevent back-and-forth teleportation portal_cooloff[obj] = true @@ -449,7 +456,7 @@ minetest.register_abm({ local longdesc = minetest.registered_nodes["mcl_core:obsidian"]._doc_items_longdesc longdesc = longdesc .. "\n" .. "Obsidian is also used as the frame of Nether portals." -local usagehelp = "To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame." +local usagehelp = "To open a Nether portal, place an upright frame of obsidian with a width of 4 blocks and a height of 5 blocks, leaving only air in the center. After placing this frame, light a fire in the obsidian frame. Nether portals only work in the Overworld and the Nether." minetest.override_item("mcl_core:obsidian", { _doc_items_longdesc = longdesc, diff --git a/mods/ITEMS/mcl_portals/sounds/mcl_portals_teleport.ogg b/mods/ITEMS/mcl_portals/sounds/mcl_portals_teleport.ogg index b943a832..1d64c451 100644 Binary files a/mods/ITEMS/mcl_portals/sounds/mcl_portals_teleport.ogg and b/mods/ITEMS/mcl_portals/sounds/mcl_portals_teleport.ogg differ diff --git a/mods/ITEMS/mcl_potions/sounds/mcl_potions_bottle_fill.ogg b/mods/ITEMS/mcl_potions/sounds/mcl_potions_bottle_fill.ogg index 8de011fe..c78bfee1 100644 Binary files a/mods/ITEMS/mcl_potions/sounds/mcl_potions_bottle_fill.ogg and b/mods/ITEMS/mcl_potions/sounds/mcl_potions_bottle_fill.ogg differ diff --git a/mods/ITEMS/mcl_stairs/api.lua b/mods/ITEMS/mcl_stairs/api.lua index 77a0e225..bd6d4962 100644 --- a/mods/ITEMS/mcl_stairs/api.lua +++ b/mods/ITEMS/mcl_stairs/api.lua @@ -1,3 +1,20 @@ +-- Wrapper around mintest.pointed_thing_to_face_pos. +local function get_fpos(placer, pointed_thing) + local fpos + -- Workaround: minetest.pointed_thing_to_face_pos crashes in MT 0.4.16 if + -- pointed_thing.under and pointed_thing.above are equal + -- FIXME: Remove this when MT got fixed. + if not vector.equals(pointed_thing.under, pointed_thing.above) then + -- The happy case: Everything is normal + local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) + fpos = finepos.y % 1 + else + -- Fallback if both above and under are equal + fpos = 0 + end + return fpos +end + local function place_slab_normal(itemstack, placer, pointed_thing) -- Use pointed node's on_rightclick function first, if present local node = minetest.get_node(pointed_thing.under) @@ -12,8 +29,7 @@ local function place_slab_normal(itemstack, placer, pointed_thing) local placer_pos = placer:getpos() - local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) - local fpos = finepos.y % 1 + local fpos = get_fpos(placer, pointed_thing) local place = ItemStack(itemstack) local origname = itemstack:get_name() @@ -44,8 +60,7 @@ local function place_stair(itemstack, placer, pointed_thing) param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos)) end - local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing) - local fpos = finepos.y % 1 + local fpos = get_fpos(placer, pointed_thing) if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5) or (fpos < -0.5 and fpos > -0.999999999) then diff --git a/mods/ITEMS/mcl_tools/init.lua b/mods/ITEMS/mcl_tools/init.lua index 58901cac..e9050c17 100644 --- a/mods/ITEMS/mcl_tools/init.lua +++ b/mods/ITEMS/mcl_tools/init.lua @@ -170,7 +170,7 @@ local make_grass_path = function(itemstack, placer, pointed_thing) if pointed_thing.above.y < pointed_thing.under.y then return end - if (node.name == "mcl_core:dirt_with_grass" or node.name == "mcl_core:dirt_with_grass_snow") then + if (minetest.get_item_group(node.name, "grass_block") == 1) then local above = table.copy(pointed_thing.under) above.y = above.y + 1 if minetest.get_node(above).name == "air" then diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 9131a63f..67721984 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -456,7 +456,7 @@ local function register_biomes() depth_filler = 2, node_riverbed = "mcl_core:sand", depth_riverbed = 2, - y_min = 4, + y_min = 3, y_max = mcl_vars.mg_overworld_max, humidity_point = 39, heat_point = 58, @@ -469,8 +469,8 @@ local function register_biomes() depth_filler = 2, node_riverbed = "mcl_core:sand", depth_riverbed = 2, - y_min = 3, - y_max = 1, + y_min = 0, + y_max = 2, humidity_point = 39, heat_point = 58, }) @@ -483,7 +483,7 @@ local function register_biomes() node_riverbed = "mcl_core:sand", depth_riverbed = 2, y_min = OCEAN_MIN, - y_max = 0, + y_max = -1, humidity_point = 39, heat_point = 58, }) @@ -811,7 +811,7 @@ local function register_biomes() -- This is a plateau for grass blocks, tall grass, coarse dirt and oaks. minetest.register_biome({ name = "MesaPlateauF_grasstop", - node_top = "mcl_core:dirt_with_grass", + node_top = "mcl_core:dirt_with_dry_grass", depth_top = 1, node_filler = "mcl_core:dirt", filler_depth = 1, @@ -854,7 +854,7 @@ local function register_biomes() -- Savanna minetest.register_biome({ name = "Savanna", - node_top = "mcl_core:dirt_with_grass", + node_top = "mcl_core:dirt_with_dry_grass", depth_top = 1, node_filler = "mcl_core:dirt", depth_filler = 2, @@ -897,7 +897,7 @@ local function register_biomes() -- Otherwise identical to Savanna minetest.register_biome({ name = "SavannaM", - node_top = "mcl_core:dirt_with_grass", + node_top = "mcl_core:dirt_with_dry_grass", depth_top = 1, node_filler = "mcl_core:coarse_dirt", depth_filler = 3, @@ -1239,7 +1239,7 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "sheet", ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, column_height_max = 1, column_midpoint_factor = 0.0, y_min = mcl_vars.mg_overworld_min, @@ -1251,7 +1251,7 @@ local function register_biomelike_ores() minetest.register_ore({ ore_type = "blob", ore = "mcl_core:coarse_dirt", - wherein = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + wherein = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, clust_scarcity = 1500, clust_num_ores = 25, clust_size = 7, @@ -1600,15 +1600,15 @@ end -- All mapgens except mgv6 -- Template to register a grass or fern decoration -local function register_grass_decoration(grasstype, offset, scale, biomes) +local function register_grass_decoration(grasstype, offset, scale, biomes, param2) local place_on, seed, node if grasstype == "fern" then node = "mcl_flowers:fern" - place_on = {"mcl_core:dirt_with_grass", "mcl_core:podzol"} + place_on = {"group:grass_block_no_snow", "mcl_core:podzol"} seed = 333 elseif grasstype == "tallgrass" then node = "mcl_flowers:tallgrass" - place_on = {"mcl_core:dirt_with_grass"} + place_on = {"group:grass_block_no_snow"} seed = 420 end local noise = { @@ -1628,6 +1628,7 @@ local function register_grass_decoration(grasstype, offset, scale, biomes) y_min = 1, y_max = mcl_vars.mg_overworld_max, decoration = node, + param2 = param2, }) end @@ -1635,7 +1636,7 @@ local function register_decorations() -- Large ice spike minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:snowblock", "mcl_core:snow", "mcl_core:dirt_with_grass_snow"}, + place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"}, sidelen = 80, noise_params = { offset = 0.00040, @@ -1656,7 +1657,7 @@ local function register_decorations() -- Small ice spike minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:snowblock", "mcl_core:snow", "mcl_core:dirt_with_grass_snow"}, + place_on = {"mcl_core:snowblock", "mcl_core:snow", "group:grass_block_snow"}, sidelen = 80, noise_params = { offset = 0.005, @@ -1679,7 +1680,7 @@ local function register_decorations() for i=1, 2 do minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, noise_params = { offset = 0.00075, @@ -1699,7 +1700,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block", "mcl_core:dirt", }, sidelen = 80, noise_params = { offset = -0.0004, @@ -1720,7 +1721,7 @@ local function register_decorations() -- Small “classic” oak (many biomes) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.025, @@ -1739,7 +1740,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.01, @@ -1758,7 +1759,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block", "mcl_core:dirt", }, sidelen = 16, noise_params = { offset = 0.0, @@ -1778,7 +1779,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow", "mcl_core:dirt"}, + place_on = {"group:grass_block", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.006, @@ -1797,7 +1798,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.015, @@ -1817,7 +1818,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block", "mcl_core:dirt", }, sidelen = 16, noise_params = { offset = 0.0, @@ -1836,7 +1837,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.004, biomes = {"Jungle", "JungleM"}, @@ -1848,7 +1849,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.0004, biomes = {"JungleEdge", "JungleEdgeM", "Savanna"}, @@ -1863,7 +1864,7 @@ local function register_decorations() -- Rare balloon oak minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.002083, @@ -1883,7 +1884,7 @@ local function register_decorations() -- Swamp oak minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, noise_params = { offset = 0.0055, @@ -1907,7 +1908,7 @@ local function register_decorations() for i=1, 2 do minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.00125, biomes = {"Jungle"}, @@ -1919,7 +1920,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.004, biomes = {"JungleM"}, @@ -1934,7 +1935,7 @@ local function register_decorations() -- Common jungle tree minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.045, biomes = {"Jungle"}, @@ -1946,7 +1947,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.0045, biomes = {"JungleEdge", "JungleEdgeM"}, @@ -1959,7 +1960,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.09, biomes = {"JungleM"}, @@ -1973,11 +1974,11 @@ local function register_decorations() -- Spruce local function quick_spruce(seed, offset, sprucename, biomes, y) if not y then - y = 2 + y = 1 end minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol"}, + place_on = {"group:grass_block", "mcl_core:dirt", "mcl_core:podzol"}, sidelen = 16, noise_params = { offset = offset, @@ -2030,7 +2031,7 @@ local function register_decorations() -- Small lollipop spruce minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:podzol"}, + place_on = {"group:grass_block", "mcl_core:podzol"}, sidelen = 16, noise_params = { offset = 0.004, @@ -2050,7 +2051,7 @@ local function register_decorations() -- Matchstick spruce: Very few leaves, tall trunk minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:podzol"}, + place_on = {"group:grass_block", "mcl_core:podzol"}, sidelen = 80, noise_params = { offset = -0.025, @@ -2070,7 +2071,7 @@ local function register_decorations() -- Rare spruce in Ice Plains minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block"}, sidelen = 16, noise_params = { offset = -0.00075, @@ -2091,7 +2092,7 @@ local function register_decorations() for a=1, 7 do minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:coarse_dirt"}, + place_on = {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt", "mcl_core:coarse_dirt"}, sidelen = 16, fill_ratio = 0.0002, biomes = {"Savanna", "SavannaM"}, @@ -2106,7 +2107,7 @@ local function register_decorations() -- Birch minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = 0.03, @@ -2124,7 +2125,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = 0.03, @@ -2143,7 +2144,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.000333, @@ -2163,7 +2164,7 @@ local function register_decorations() -- Dark Oak minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = 0.05, @@ -2192,7 +2193,7 @@ local function register_decorations() -- Huge Brown Mushroom minetest.register_decoration({ deco_type = "schematic", - place_on = { "mcl_core:dirt_with_grass", "mcl_core:dirt" }, + place_on = { "group:grass_block_no_snow", "mcl_core:dirt" }, sidelen = 80, fill_ratio = ratio_mushroom_huge, biomes = { "RoofedForest" }, @@ -2204,7 +2205,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = { "mcl_core:dirt_with_grass", "mcl_core:dirt" }, + place_on = { "group:grass_block_no_snow", "mcl_core:dirt" }, sidelen = 80, fill_ratio = ratio_mushroom_giant, biomes = { "RoofedForest" }, @@ -2243,7 +2244,7 @@ local function register_decorations() -- Huge Red Mushroom minetest.register_decoration({ deco_type = "schematic", - place_on = { "mcl_core:dirt_with_grass", "mcl_core:dirt" }, + place_on = { "group:grass_block_no_snow", "mcl_core:dirt" }, sidelen = 80, fill_ratio = ratio_mushroom_huge, biomes = { "RoofedForest" }, @@ -2255,7 +2256,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = { "mcl_core:dirt_with_grass", "mcl_core:dirt" }, + place_on = { "group:grass_block_no_snow", "mcl_core:dirt" }, sidelen = 80, fill_ratio = ratio_mushroom_giant, biomes = { "RoofedForest" }, @@ -2355,7 +2356,7 @@ local function register_decorations() -- Sugar canes minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "mcl_core:dirt_with_grass", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, + place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, sidelen = 16, noise_params = { offset = -0.3, @@ -2375,7 +2376,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "mcl_core:dirt_with_grass", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, + place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, sidelen = 16, noise_params = { offset = 0.0, @@ -2395,8 +2396,10 @@ local function register_decorations() num_spawn_by = 1, }) + local dry_index = minetest.registered_nodes["mcl_core:dirt_with_dry_grass"]._mcl_grass_palette_index + -- Doubletall grass - local register_doubletall_grass = function(offset, scale, biomes) + local register_doubletall_grass = function(offset, scale, biomes, param2) minetest.register_decoration({ deco_type = "schematic", @@ -2404,14 +2407,14 @@ local function register_decorations() size = { x=1, y=3, z=1 }, data = { { name = "air", prob = 0 }, - { name = "mcl_flowers:double_grass", param1=255, }, - { name = "mcl_flowers:double_grass_top", param1=255, }, + { name = "mcl_flowers:double_grass", param1=255, param2=param2 }, + { name = "mcl_flowers:double_grass_top", param1=255, param2=param2 }, }, }, replacements = { - ["mcl_flowers:tallgrass"] = "mcl_flowers:double_grass" + ["mcl_flowers:tallgrass"] = "mcl_flowers:double_grass", }, - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = offset, @@ -2427,9 +2430,9 @@ local function register_decorations() }) end - register_doubletall_grass(-0.01, 0.03, {"Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "MesaPlateauF_grasstop" }) + register_doubletall_grass(-0.01, 0.03, {"Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest"}) register_doubletall_grass(-0.002, 0.03, {"Plains", "SunflowerPlains"}) - register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}) + register_doubletall_grass(-0.0005, -0.03, {"Savanna", "SavannaM"}, dry_index) -- Large ferns local register_double_fern = function(offset, scale, biomes) @@ -2446,7 +2449,7 @@ local function register_decorations() replacements = { ["mcl_flowers:fern"] = "mcl_flowers:double_fern" }, - place_on = {"mcl_core:dirt_with_grass", "mcl_core:podzol"}, + place_on = {"group:grass_block_no_snow", "mcl_core:podzol"}, sidelen = 16, noise_params = { offset = offset, @@ -2493,7 +2496,7 @@ local function register_decorations() { name = "mcl_flowers:"..name.."_top", param1=255, }, }, }, - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 16, noise_params = { @@ -2521,7 +2524,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, noise_params = { offset = 0.0196, @@ -2539,7 +2542,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, noise_params = { offset = 0.05, @@ -2557,7 +2560,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, noise_params = { offset = 0.0085, @@ -2580,7 +2583,7 @@ local function register_decorations() if generate_fallen_logs then minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:podzol", "mcl_core:coarse_dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:podzol", "mcl_core:coarse_dirt"}, sidelen = 80, noise_params = { offset = 0.00018, @@ -2613,7 +2616,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass_snow", "mcl_core:dirt_with_grass", "mcl_core:podzol", "mcl_core:podzol_snow", "mcl_core:coarse_dirt"}, + place_on = {"group:grass_block", "mcl_core:podzol", "mcl_core:podzol_snow", "mcl_core:coarse_dirt"}, sidelen = 80, noise_params = { offset = 0.00018, @@ -2646,7 +2649,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = 0.0, @@ -2679,7 +2682,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, fill_ratio = 0.005, biomes = {"Jungle", "JungleM"}, @@ -2705,7 +2708,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = 0.00018, @@ -2779,7 +2782,7 @@ local function register_decorations() -- Melon minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = -0.01, @@ -2796,7 +2799,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = 0.0, @@ -2813,7 +2816,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = -0.005, @@ -2832,7 +2835,7 @@ local function register_decorations() -- Lots of melons in Jungle Edge M minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 80, noise_params = { offset = 0.013, @@ -2858,7 +2861,7 @@ local function register_decorations() { name = "mcl_farming:pumpkin_face", param1=255, }, }, }, - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = -0.016, @@ -2874,7 +2877,8 @@ local function register_decorations() }) -- Grasses and ferns - local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", "MesaPlateauF_grasstop" } + local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", } + local grass_mpf = {"MesaPlateauF_grasstop"} local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM" } local grass_savanna = {"Savanna", "SavannaM"} local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle", } @@ -2884,12 +2888,16 @@ local function register_decorations() register_grass_decoration("tallgrass", 0, 0.06, grass_forest) register_grass_decoration("tallgrass", 0.015, 0.045, grass_forest) register_grass_decoration("tallgrass", 0.03, 0.03, grass_forest) + register_grass_decoration("tallgrass", -0.03, 0.09, grass_mpf, dry_index) + register_grass_decoration("tallgrass", -0.015, 0.075, grass_mpf, dry_index) + register_grass_decoration("tallgrass", 0, 0.06, grass_mpf, dry_index) + register_grass_decoration("tallgrass", 0.01, 0.045, grass_mpf, dry_index) register_grass_decoration("tallgrass", 0.01, 0.05, grass_forest) register_grass_decoration("tallgrass", 0.03, 0.03, grass_plains) register_grass_decoration("tallgrass", 0.05, 0.01, grass_plains) register_grass_decoration("tallgrass", 0.07, -0.01, grass_plains) register_grass_decoration("tallgrass", 0.09, -0.03, grass_plains) - register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna) + register_grass_decoration("tallgrass", 0.18, -0.03, grass_savanna, dry_index) register_grass_decoration("tallgrass", 0.05, -0.03, grass_sparse) local fern_minimal = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga" } @@ -2911,7 +2919,7 @@ local function register_decorations() -- Place tall grass on snow in Ice Plains and Extreme Hills+ minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block"}, sidelen = 16, noise_params = { offset = -0.08, @@ -2934,7 +2942,7 @@ local function register_decorations() }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt_with_grass_snow"}, + place_on = {"group:grass_block"}, sidelen = 16, noise_params = { offset = 0.0, @@ -2960,7 +2968,7 @@ local function register_decorations() -- Dead bushes minetest.register_decoration({ deco_type = "simple", - place_on = {"group:sand", "mcl_core:podzol", "mcl_core:podzol_snow", "mcl_core:dirt", "mcl_core:coarse_dirt", "group:hardened_clay"}, + place_on = {"group:sand", "mcl_core:podzol", "mcl_core:dirt", "mcl_core:dirt_with_dry_grass", "mcl_core:coarse_dirt", "group:hardened_clay"}, sidelen = 16, noise_params = { offset = 0, @@ -3030,7 +3038,7 @@ local function register_decorations() -- Mushrooms next to trees minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, sidelen = 16, noise_params = { offset = 0, @@ -3050,7 +3058,7 @@ local function register_decorations() -- More mushrooms in Swampland minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, sidelen = 16, noise_params = { offset = 0.05, @@ -3075,7 +3083,7 @@ local function register_decorations() if biomes then minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 16, noise_params = { offset = 0.0008, @@ -3094,7 +3102,7 @@ local function register_decorations() if is_in_flower_forest then minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt"}, sidelen = 80, noise_params= { offset = 0.0008*40, diff --git a/mods/MAPGEN/mcl_mapgen_core/init.lua b/mods/MAPGEN/mcl_mapgen_core/init.lua index cc160e55..3aed74d2 100644 --- a/mods/MAPGEN/mcl_mapgen_core/init.lua +++ b/mods/MAPGEN/mcl_mapgen_core/init.lua @@ -43,8 +43,16 @@ local mg_name = minetest.get_mapgen_setting("mg_name") local WITCH_HUT_HEIGHT = 3 -- Exact Y level to spawn witch huts at. This height refers to the height of the floor +-- End exit portal position. This is temporary. +-- TODO: Remove the exit portal generation when the ender dragon has been implemented. +local END_EXIT_PORTAL_POS = table.copy(mcl_vars.mg_end_platform_pos) +END_EXIT_PORTAL_POS.x = END_EXIT_PORTAL_POS.x - 30 +END_EXIT_PORTAL_POS.z = END_EXIT_PORTAL_POS.z - 3 +END_EXIT_PORTAL_POS.y = END_EXIT_PORTAL_POS.y - 3 + -- Content IDs local c_bedrock = minetest.get_content_id("mcl_core:bedrock") +local c_obsidian = minetest.get_content_id("mcl_core:obsidian") local c_stone = minetest.get_content_id("mcl_core:stone") local c_dirt = minetest.get_content_id("mcl_core:dirt") local c_dirt_with_grass = minetest.get_content_id("mcl_core:dirt_with_grass") @@ -688,7 +696,7 @@ local function register_mgv6_decorations() -- Sugar canes minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "mcl_core:dirt_with_grass", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, + place_on = {"mcl_core:dirt", "mcl_core:coarse_dirt", "group:grass_block_no_snow", "group:sand", "mcl_core:podzol", "mcl_core:reeds"}, sidelen = 16, noise_params = { offset = -0.3, @@ -721,7 +729,7 @@ local function register_mgv6_decorations() replacements = { ["mcl_flowers:tallgrass"] = "mcl_flowers:double_grass" }, - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 8, noise_params = { offset = -0.0025, @@ -752,7 +760,7 @@ local function register_mgv6_decorations() -- v6 hack: This makes sure large ferns only appear in jungles spawn_by = { "mcl_core:jungletree", "mcl_flowers:fern" }, num_spawn_by = 1, - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { @@ -779,7 +787,7 @@ local function register_mgv6_decorations() { name = "mcl_flowers:"..name.."_top", param1=255, }, }, }, - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { @@ -837,7 +845,7 @@ local function register_mgv6_decorations() { name = "mcl_farming:pumpkin_face" }, }, }, - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = -0.008, @@ -855,7 +863,7 @@ local function register_mgv6_decorations() -- Tall grass minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 8, noise_params = { offset = 0.01, @@ -871,7 +879,7 @@ local function register_mgv6_decorations() }) minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 8, noise_params = { offset = 0.04, @@ -888,7 +896,7 @@ local function register_mgv6_decorations() -- Add a small amount of tall grass everywhere to avoid areas completely empty devoid of tall grass minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 8, fill_ratio = 0.004, y_min = 1, @@ -902,7 +910,7 @@ local function register_mgv6_decorations() -- Mushrooms next to trees minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, + place_on = {"group:grass_block_no_snow", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:mycelium", "mcl_core:stone", "mcl_core:andesite", "mcl_core:diorite", "mcl_core:granite"}, sidelen = 16, noise_params = { offset = 0.04, @@ -947,7 +955,7 @@ local function register_mgv6_decorations() end minetest.register_decoration({ deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, + place_on = {"group:grass_block_no_snow"}, sidelen = 16, noise_params = { offset = offset, @@ -1167,7 +1175,7 @@ local function generate_structures(minp, maxp, seed, biomemap) end -- Igloos - elseif not chunk_has_igloo and (nn == "mcl_core:snowblock" or nn == "mcl_core:snow" or nn == "mcl_core:dirt_with_grass_snow") then + elseif not chunk_has_igloo and (nn == "mcl_core:snowblock" or nn == "mcl_core:snow" or (minetest.get_item_group(nn, "grass_block_snow") == 1)) then if math.random(1, 4400) == 1 then -- Check surface local floor = {x=p.x+9, y=p.y-1, z=p.z+9} @@ -1332,6 +1340,22 @@ local function generate_structures(minp, maxp, seed, biomemap) end end end + -- End exit portal + elseif minp.y <= END_EXIT_PORTAL_POS.y and maxp.y >= END_EXIT_PORTAL_POS.y and + minp.x <= END_EXIT_PORTAL_POS.x and maxp.x >= END_EXIT_PORTAL_POS.x and + minp.z <= END_EXIT_PORTAL_POS.z and maxp.z >= END_EXIT_PORTAL_POS.z then + local built = false + for y=maxp.y, minp.y, -1 do + local p = {x=END_EXIT_PORTAL_POS.x, y=y, z=END_EXIT_PORTAL_POS.z} + if minetest.get_node(p).name == "mcl_end:end_stone" then + mcl_structures.call_struct(p, "end_exit_portal") + built = true + break + end + end + if not built then + mcl_structures.call_struct(END_EXIT_PORTAL_POS, "end_exit_portal") + end end end @@ -1424,10 +1448,11 @@ local function generate_tree_decorations(minp, maxp, seed, data, param2_data, ar end local p_pos = area:index(pos.x, pos.y, pos.z) + local l = minetest.get_node_light(pos) if dir < 5 and data[p_pos] == c_air - and minetest.get_node_light(pos) > 12 then + and l ~= nil and l > 12 then local c = math.random(1, 3) if c == 1 then data[p_pos] = c_cocoa_1 @@ -1559,7 +1584,8 @@ local generate_underground_mushrooms = function(minp, maxp, seed) for n = 1, #stone do bpos = {x = stone[n].x, y = stone[n].y + 1, z = stone[n].z } - if bpos.y >= min and bpos.y <= max and minetest.get_node_light(bpos, 0.5) <= 12 and pr_shroom:next(1,1000) < 4 then + local l = minetest.get_node_light(bpos, 0.5) + if bpos.y >= min and bpos.y <= max and l ~= nil and l <= 12 and pr_shroom:next(1,1000) < 4 then if pr_shroom:next(1,2) == 1 then minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"}) else @@ -1612,7 +1638,8 @@ local generate_nether_decorations = function(minp, maxp, seed) -- Mushrooms on netherrack -- Note: Spawned *after* the fire because of light level checks special_deco(rack, function(bpos) - if bpos.y > mcl_vars.mg_lava_nether_max + 6 and minetest.get_node_light(bpos, 0.5) <= 12 and pr_nether:next(1,1000) <= 4 then + local l = minetest.get_node_light(bpos, 0.5) + if bpos.y > mcl_vars.mg_lava_nether_max + 6 and l ~= nil and l <= 12 and pr_nether:next(1,1000) <= 4 then -- TODO: Make mushrooms appear in groups, use Perlin noise if pr_nether:next(1,2) == 1 then minetest.set_node(bpos, {name = "mcl_mushrooms:mushroom_brown"}) @@ -1778,7 +1805,6 @@ minetest.register_on_generated(function(minp, maxp, seed) -- Clear snowy grass blocks without snow above to ensure consistency. -- Solidify floating sand to sandstone (both colors). else - --local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow"}) local nodes = minetest.find_nodes_in_area(minp, maxp, {"mcl_core:dirt_with_grass_snow", "mcl_core:sand", "mcl_core:redsand"}) for n=1, #nodes do local p_pos = area:index(nodes[n].x, nodes[n].y, nodes[n].z) @@ -1827,6 +1853,7 @@ minetest.register_on_generated(function(minp, maxp, seed) -- End block fixes: -- * Replace water with end stone or air (depending on height). -- * Remove stone, sand, dirt in v6 so our End map generator works in v6. + -- * Generate spawn platform (End portal destination) elseif minp.y <= mcl_vars.mg_end_max and maxp.y >= mcl_vars.mg_end_min then local nodes if mg_name == "v6" then @@ -1852,6 +1879,25 @@ minetest.register_on_generated(function(minp, maxp, seed) end end + + -- Obsidian spawn platform + if minp.y <= mcl_vars.mg_end_platform_pos.y and maxp.y >= mcl_vars.mg_end_platform_pos.y and + minp.x <= mcl_vars.mg_end_platform_pos.x and maxp.x >= mcl_vars.mg_end_platform_pos.z and + minp.z <= mcl_vars.mg_end_platform_pos.z and maxp.z >= mcl_vars.mg_end_platform_pos.z then + for x=math.max(minp.x, mcl_vars.mg_end_platform_pos.x-2), math.min(maxp.x, mcl_vars.mg_end_platform_pos.x+2) do + for z=math.max(minp.z, mcl_vars.mg_end_platform_pos.z-2), math.min(maxp.z, mcl_vars.mg_end_platform_pos.z+2) do + for y=math.max(minp.y, mcl_vars.mg_end_platform_pos.y), math.min(maxp.y, mcl_vars.mg_end_platform_pos.y+2) do + local p_pos = area:index(x, y, z) + if y == mcl_vars.mg_end_platform_pos.y then + data[p_pos] = c_obsidian + else + data[p_pos] = c_air + end + end + end + end + lvm_used = true + end end end diff --git a/mods/MAPGEN/mcl_structures/init.lua b/mods/MAPGEN/mcl_structures/init.lua index 91ecabea..e3e6eec6 100644 --- a/mods/MAPGEN/mcl_structures/init.lua +++ b/mods/MAPGEN/mcl_structures/init.lua @@ -38,6 +38,8 @@ mcl_structures.call_struct = function(pos, struct_style, rotation) return mcl_structures.generate_boulder(pos, rotation) elseif struct_style == "fossil" then return mcl_structures.generate_fossil(pos, rotation) + elseif struct_style == "end_exit_portal" then + return mcl_structures.generate_end_exit_portal(pos, rotation) end end @@ -116,6 +118,11 @@ mcl_structures.generate_fossil = function(pos) return minetest.place_schematic(newpos, path, "random", nil, true) end +mcl_structures.generate_end_exit_portal = function(pos) + local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_end_exit_portal.mts" + return minetest.place_schematic(pos, path, "0", nil, true) +end + mcl_structures.generate_desert_temple = function(pos) -- No Generating for the temple ... Why using it ? No Change local path = minetest.get_modpath("mcl_structures").."/schematics/mcl_structures_desert_temple.mts" @@ -194,7 +201,7 @@ end -- Debug command minetest.register_chatcommand("spawnstruct", { - params = "desert_temple | desert_well | igloo | village | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil", + params = "desert_temple | desert_well | igloo | village | witch_hut | boulder | ice_spike_small | ice_spike_large | fossil | end_exit_portal", description = "Generate a pre-defined structure near your position.", privs = {debug = true}, func = function(name, param) @@ -230,6 +237,9 @@ minetest.register_chatcommand("spawnstruct", { elseif param == "ice_spike_large" then mcl_structures.generate_ice_spike_large(pos) minetest.chat_send_player(name, "Large ice spike placed.") + elseif param == "end_exit_portal" then + mcl_structures.generate_end_exit_portal(pos) + minetest.chat_send_player(name, "End exit portal placed.") elseif param == "" then minetest.chat_send_player(name, "Error: No structure type given. Please use “/spawnstruct ”.") errord = true diff --git a/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_exit_portal.mts b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_exit_portal.mts new file mode 100644 index 00000000..bc24f800 Binary files /dev/null and b/mods/MAPGEN/mcl_structures/schematics/mcl_structures_end_exit_portal.mts differ diff --git a/mods/MISC/mcl_temp_helper_recipes/init.lua b/mods/MISC/mcl_temp_helper_recipes/init.lua index 32a76e18..f2422509 100644 --- a/mods/MISC/mcl_temp_helper_recipes/init.lua +++ b/mods/MISC/mcl_temp_helper_recipes/init.lua @@ -91,6 +91,24 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "mcl_mobitems:carrot_on_a_stick", + recipe = { + { "", "", "mcl_core:stick", }, + { "", "mcl_core:stick", "mcl_mobitems:string", }, + { "mcl_core:stick", "", "mcl_farming:carrot_item" }, + }, +}) + +minetest.register_craft({ + output = "mcl_mobitems:carrot_on_a_stick", + recipe = { + { "mcl_core:stick", "", "" }, + { "mcl_mobitems:string", "mcl_core:stick", "", }, + { "mcl_farming:carrot_item", "", "mcl_core:stick" }, + }, +}) + minetest.register_craft({ output = "mcl_jukebox:record_2", recipe = { @@ -115,6 +133,7 @@ minetest.register_craft({ { "mcl_core:glass_black", "mcl_core:glass_black", "mcl_core:glass_black", }, } }) + -- 2 discs are dropped by creeper -- 1 disc is droppd by zombie -- TODO: Remove/fix these drops when creeper drops music discs properly diff --git a/mods/MISC/mcl_wip/init.lua b/mods/MISC/mcl_wip/init.lua index 4d469894..8bcfb74b 100644 --- a/mods/MISC/mcl_wip/init.lua +++ b/mods/MISC/mcl_wip/init.lua @@ -2,7 +2,6 @@ local wip_items = { "mcl_anvils:anvil", "mcl_anvils:anvil_damage_1", "mcl_anvils:anvil_damage_2", - "mcl_core:apple_gold", "mcl_end:chorus_fruit", "mcl_end:chorus_flower", "mcl_end:chorus_flower_dead", @@ -20,9 +19,8 @@ local wip_items = { "mcl_minecarts:furnace_minecart", "mcl_minecarts:tnt_minecart", "mcl_minecarts:activator_rail", - "mcl_portals:end_portal_frame", - "mcl_portals:end_portal_frame_eye", } +local experimental_items = {} for i=1,#wip_items do local def = minetest.registered_items[wip_items[i]] @@ -31,14 +29,12 @@ for i=1,#wip_items do break end local new_description = def.description + local new_groups = table.copy(def.groups) new_description = new_description .. "\n"..core.colorize("#FF0000", "(WIP)") - minetest.override_item(wip_items[i], { description = new_description }) + new_groups.not_in_craft_guide = 1 + minetest.override_item(wip_items[i], { description = new_description, groups = new_groups }) end -local experimental_items = { - "doc_identifier:identifier_solid", - "doc_identifier:identifier_liquid", -} for i=1,#experimental_items do local def = minetest.registered_items[experimental_items[i]] if not def then diff --git a/mods/PLAYER/mcl_hunger/sounds/survival_thirst_drink.ogg b/mods/PLAYER/mcl_hunger/sounds/survival_thirst_drink.ogg index 8a97dfff..7c3df3ca 100644 Binary files a/mods/PLAYER/mcl_hunger/sounds/survival_thirst_drink.ogg and b/mods/PLAYER/mcl_hunger/sounds/survival_thirst_drink.ogg differ diff --git a/mods/PLAYER/mcl_playerplus/depends.txt b/mods/PLAYER/mcl_playerplus/depends.txt index 467d9b13..b634d894 100644 --- a/mods/PLAYER/mcl_playerplus/depends.txt +++ b/mods/PLAYER/mcl_playerplus/depends.txt @@ -6,4 +6,4 @@ mcl_hunger mcl_death_messages mcl_playerinfo 3d_armor? -weather_pack +mcl_weather diff --git a/mods/PLAYER/mcl_playerplus/init.lua b/mods/PLAYER/mcl_playerplus/init.lua index f7db4faf..6ecc922b 100644 --- a/mods/PLAYER/mcl_playerplus/init.lua +++ b/mods/PLAYER/mcl_playerplus/init.lua @@ -126,6 +126,7 @@ minetest.register_globalstep(function(dtime) and (ndef.node_box == nil or ndef.node_box.type == "regular") and (ndef.groups.disable_suffocation ~= 1) and (ndef.groups.opaque == 1) + and (node_head ~= "ignore") -- Check privilege, too and (not minetest.check_player_privs(name, {noclip = true})) then if player:get_hp() > 0 then @@ -157,7 +158,7 @@ minetest.register_globalstep(function(dtime) local _, dim = mcl_util.y_to_layer(pos.y) -- Set dimension skies. -- FIXME: Sky handling in MCL2 is held together with lots of duct tape. - -- This only works beause weather_pack currently does not touch the sky for players below the height used for this check. + -- This only works beause mcl_weather currently does not touch the sky for players below the height used for this check. -- There should be a real skybox API. if dim == "void" then player:set_sky("#000000", "plain", nil, false) @@ -167,7 +168,7 @@ minetest.register_globalstep(function(dtime) elseif dim == "nether" then player:set_sky("#300808", "plain", nil, false) else - skycolor.update_sky_color({player}) + mcl_weather.skycolor.update_sky_color({player}) end if void_deadly then -- Player is deep into the void, deal void damage diff --git a/tools/Texture_Conversion_Table.csv b/tools/Conversion_Table.csv similarity index 61% rename from tools/Texture_Conversion_Table.csv rename to tools/Conversion_Table.csv index aba5d641..9daa1189 100644 --- a/tools/Texture_Conversion_Table.csv +++ b/tools/Conversion_Table.csv @@ -1,864 +1,904 @@ -Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt -/assets/minecraft/textures/particle,particles.png,/mods/CORE/mcl_particles/textures,mcl_particles_bubble.png,0,16,8,8,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hbarmor/textures,hbarmor_icon.png,34,9,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hbarmor/textures,hbarmor_bgicon.png,16,9,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_health.png,52,0,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_bgicon_health.png,16,0,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_breath.png,16,18,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_base_textures/textures,heart.png,52,0,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_base_textures/textures,bubble.png,16,18,9,9,0,0 -/assets/minecraft/textures/items,bucket_empty.png,/mods/ITEMS/bucket/textures,bucket.png,,,,,, -/assets/minecraft/textures/items,bucket_water.png,/mods/ITEMS/bucket/textures,bucket_water.png,,,,,, -/assets/minecraft/textures/items,bucket_lava.png,/mods/ITEMS/bucket/textures,bucket_lava.png,,,,,, -/assets/minecraft/textures/items,painting.png,/mods/ITEMS/gemalde/textures,gemalde_node.png,,,,,, -/assets/minecraft/textures/items,item_frame.png,/mods/ITEMS/itemframes/textures,itemframes_frame.png,,,,,, -/assets/minecraft/textures/blocks,anvil_base.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_base.png,,,,,, -/assets/minecraft/textures/blocks,anvil_top_damaged_0.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_0.png,,,,,, -/assets/minecraft/textures/blocks,anvil_top_damaged_1.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_1.png,,,,,, -/assets/minecraft/textures/blocks,anvil_top_damaged_2.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_2.png,,,,,, -/assets/minecraft/textures/blocks,anvil_side.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_side.png,,,,,, -/assets/minecraft/textures/items,name_tag.png,/mods/ENTITIES/mobs/textures,mobs_nametag.png,,,,,, -/assets/minecraft/textures/gui,icons.png,/mods/ENTITIES/mobs/textures,mobs_blood.png,16,0,9,9,0,0 -/assets/minecraft/textures/blocks,itemframe_background.png,/mods/ITEMS/itemframes/textures,itemframe_background.png,,,,,, -/assets/minecraft/textures/items,bed.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_red.png,,,,,, -/assets/minecraft/textures/items,acacia_boat.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_acacia_boat.png,,,,,, -/assets/minecraft/textures/items,oak_boat.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_oak_boat.png,,,,,, -/assets/minecraft/textures/items,spruce_boat.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_spruce_boat.png,,,,,, -/assets/minecraft/textures/items,dark_oak_boat.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_dark_oak_boat.png,,,,,, -/assets/minecraft/textures/items,jungle_boat.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_jungle_boat.png,,,,,, -/assets/minecraft/textures/items,birch_boat.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_birch_boat.png,,,,,, -/assets/minecraft/textures/entity/boat,boat_acacia.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_texture_acacia_boat.png,,,,,, -/assets/minecraft/textures/entity/boat,boat_oak.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_texture_oak_boat.png,,,,,, -/assets/minecraft/textures/entity/boat,boat_darkoak.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_texture_dark_oak_boat.png,,,,,, -/assets/minecraft/textures/entity/boat,boat_spruce.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_texture_spruce_boat.png,,,,,, -/assets/minecraft/textures/entity/boat,boat_birch.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_texture_birch_boat.png,,,,,, -/assets/minecraft/textures/entity/boat,boat_jungle.png,/mods/ITEMS/mcl_boats/textures,mcl_boats_texture_jungle_boat.png,,,,,, -/assets/minecraft/textures/items,book_normal.png,/mods/ITEMS/mcl_books/textures,default_book.png,,,,,, -/assets/minecraft/textures/blocks,bookshelf.png,/mods/ITEMS/mcl_books/textures,default_bookshelf.png,,,,,, -/assets/minecraft/textures/blocks,bookshelf_top.png,/mods/ITEMS/mcl_books/textures,mcl_books_bookshelf_top.png,,,,,, -/assets/minecraft/textures/items,book_writable.png,/mods/ITEMS/mcl_books/textures,mcl_books_book_writable.png,,,,,, -/assets/minecraft/textures/items,book_written.png,/mods/ITEMS/mcl_books/textures,mcl_books_book_written.png,,,,,, -/assets/minecraft/textures/items,cake.png,/mods/ITEMS/mcl_cake/textures,cake.png,,,,,, -/assets/minecraft/textures/blocks,cake_bottom.png,/mods/ITEMS/mcl_cake/textures,cake_bottom.png,,,,,, -/assets/minecraft/textures/blocks,cake_top.png,/mods/ITEMS/mcl_cake/textures,cake_top.png,,,,,, -/assets/minecraft/textures/blocks,cake_side.png,/mods/ITEMS/mcl_cake/textures,cake_side.png,,,,,, -/assets/minecraft/textures/blocks,cake_inner.png,/mods/ITEMS/mcl_cake/textures,cake_inner.png,,,,,, -/assets/minecraft/textures/items,cauldron.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron.png,,,,,, -/assets/minecraft/textures/blocks,cauldron_bottom.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_bottom.png,,,,,, -/assets/minecraft/textures/blocks,cauldron_top.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_top.png,,,,,, -/assets/minecraft/textures/blocks,cauldron_side.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_side.png,,,,,, -/assets/minecraft/textures/blocks,cauldron_inner.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_inner.png,,,,,, -/assets/minecraft/textures/items,clock.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock.png,,,,,, -/assets/minecraft/textures/blocks,cocoa_stage_0.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_0.png,,,,,, -/assets/minecraft/textures/blocks,cocoa_stage_1.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_1.png,,,,,, -/assets/minecraft/textures/blocks,cocoa_stage_2.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_2.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_black.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_black.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_blue.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_blue.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_brown.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_brown.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_cyan.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_gray.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_grey.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_green.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_green.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_lime.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_lime.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_magenta.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_orange.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_orange.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_pink.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_pink.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_purple.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_purple.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_red.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_red.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_silver.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_silver.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_white.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_white.png,,,,,, -/assets/minecraft/textures/blocks,hardened_clay_stained_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_yellow.png,,,,,, -/assets/minecraft/textures/blocks,concrete_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_black.png,,,,,, -/assets/minecraft/textures/blocks,concrete_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_blue.png,,,,,, -/assets/minecraft/textures/blocks,concrete_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_brown.png,,,,,, -/assets/minecraft/textures/blocks,concrete_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_cyan.png,,,,,, -/assets/minecraft/textures/blocks,concrete_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_grey.png,,,,,, -/assets/minecraft/textures/blocks,concrete_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_green.png,,,,,, -/assets/minecraft/textures/blocks,concrete_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,concrete_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_lime.png,,,,,, -/assets/minecraft/textures/blocks,concrete_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_magenta.png,,,,,, -/assets/minecraft/textures/blocks,concrete_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_orange.png,,,,,, -/assets/minecraft/textures/blocks,concrete_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_pink.png,,,,,, -/assets/minecraft/textures/blocks,concrete_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_purple.png,,,,,, -/assets/minecraft/textures/blocks,concrete_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_red.png,,,,,, -/assets/minecraft/textures/blocks,concrete_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_silver.png,,,,,, -/assets/minecraft/textures/blocks,concrete_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_white.png,,,,,, -/assets/minecraft/textures/blocks,concrete_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_yellow.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_black.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_blue.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_brown.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_cyan.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_grey.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_green.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_lime.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_magenta.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_orange.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_pink.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_purple.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_red.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_silver.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_white.png,,,,,, -/assets/minecraft/textures/blocks,concrete_powder_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_yellow.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_black.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_blue.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_brown.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_cyan.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_grey.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_green.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_lime.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_magenta.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_orange.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_pink.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_purple.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_red.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_silver.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_white.png,,,,,, -/assets/minecraft/textures/blocks,glazed_terracotta_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_yellow.png,,,,,, -/assets/minecraft/textures/blocks,sapling_oak.png,/mods/ITEMS/mcl_core/textures,default_sapling.png,,,,,, -/assets/minecraft/textures/blocks,sapling_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_sapling.png,,,,,, -/assets/minecraft/textures/blocks,sapling_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_spruce.png,,,,,, -/assets/minecraft/textures/blocks,sapling_jungle.png,/mods/ITEMS/mcl_core/textures,default_junglesapling.png,,,,,, -/assets/minecraft/textures/blocks,sapling_roofed_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_big_oak.png,,,,,, -/assets/minecraft/textures/blocks,sapling_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_birch.png,,,,,, -/assets/minecraft/textures/items,apple.png,/mods/ITEMS/mcl_core/textures,default_apple.png,,,,,, -/assets/minecraft/textures/items,apple_golden.png,/mods/ITEMS/mcl_core/textures,mcl_core_apple_golden.png,,,,,, -/assets/minecraft/textures/blocks,brick.png,/mods/ITEMS/mcl_core/textures,default_brick.png,,,,,, -/assets/minecraft/textures/blocks,cactus_side.png,/mods/ITEMS/mcl_core/textures,default_cactus_side.png,,,,,, -/assets/minecraft/textures/blocks,cactus_top.png,/mods/ITEMS/mcl_core/textures,default_cactus_top.png,,,,,, -/assets/minecraft/textures/blocks,cactus_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_bottom.png,,,,,, -/assets/minecraft/textures/items,brick.png,/mods/ITEMS/mcl_core/textures,default_clay_brick.png,,,,,, -/assets/minecraft/textures/items,clay_ball.png,/mods/ITEMS/mcl_core/textures,default_clay_lump.png,,,,,, -/assets/minecraft/textures/blocks,clay.png,/mods/ITEMS/mcl_core/textures,default_clay.png,,,,,, -/assets/minecraft/textures/blocks,coal_block.png,/mods/ITEMS/mcl_core/textures,default_coal_block.png,,,,,, -/assets/minecraft/textures/items,coal.png,/mods/ITEMS/mcl_core/textures,default_coal_lump.png,,,,,, -/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_core/textures,default_cobble.png,,,,,, -/assets/minecraft/textures/blocks,diamond_block.png,/mods/ITEMS/mcl_core/textures,default_diamond_block.png,,,,,, -/assets/minecraft/textures/items,diamond.png,/mods/ITEMS/mcl_core/textures,default_diamond.png,,,,,, -/assets/minecraft/textures/blocks,dirt.png,/mods/ITEMS/mcl_core/textures,default_dirt.png,,,,,, -/assets/minecraft/textures/blocks,deadbush.png,/mods/ITEMS/mcl_core/textures,default_dry_shrub.png,,,,,, -/assets/minecraft/textures/blocks,log_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_tree.png,,,,,, -/assets/minecraft/textures/blocks,log_acacia_top.png,/mods/ITEMS/mcl_core/textures,default_acacia_tree_top.png,,,,,, -/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_wood.png,,,,,, -/assets/minecraft/textures/items,flint.png,/mods/ITEMS/mcl_core/textures,default_flint.png,,,,,, -/assets/minecraft/textures/blocks,glass.png,/mods/ITEMS/mcl_core/textures,default_glass.png,,,,,, -/assets/minecraft/textures/blocks,glass_black.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_black.png,,,,,, -/assets/minecraft/textures/blocks,glass_blue.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_blue.png,,,,,, -/assets/minecraft/textures/blocks,glass_brown.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_brown.png,,,,,, -/assets/minecraft/textures/blocks,glass_cyan.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_cyan.png,,,,,, -/assets/minecraft/textures/blocks,glass_gray.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_gray.png,,,,,, -/assets/minecraft/textures/blocks,glass_green.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_green.png,,,,,, -/assets/minecraft/textures/blocks,glass_light_blue.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,glass_lime.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_lime.png,,,,,, -/assets/minecraft/textures/blocks,glass_magenta.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_magenta.png,,,,,, -/assets/minecraft/textures/blocks,glass_orange.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_orange.png,,,,,, -/assets/minecraft/textures/blocks,glass_pink.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_pink.png,,,,,, -/assets/minecraft/textures/blocks,glass_purple.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_purple.png,,,,,, -/assets/minecraft/textures/blocks,glass_red.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_red.png,,,,,, -/assets/minecraft/textures/blocks,glass_silver.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_silver.png,,,,,, -/assets/minecraft/textures/blocks,glass_white.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_white.png,,,,,, -/assets/minecraft/textures/blocks,glass_yellow.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_yellow.png,,,,,, -/assets/minecraft/textures/blocks,gold_block.png,/mods/ITEMS/mcl_core/textures,default_gold_block.png,,,,,, -/assets/minecraft/textures/items,gold_ingot.png,/mods/ITEMS/mcl_core/textures,default_gold_ingot.png,,,,,, -/assets/minecraft/textures/blocks,grass_side.png,/mods/ITEMS/mcl_core/textures,default_grass_side.png,,,,,, -/assets/minecraft/textures/blocks,gravel.png,/mods/ITEMS/mcl_core/textures,default_gravel.png,,,,,, -/assets/minecraft/textures/blocks,ice.png,/mods/ITEMS/mcl_core/textures,default_ice.png,,,,,, -/assets/minecraft/textures/blocks,log_jungle.png,/mods/ITEMS/mcl_core/textures,default_jungletree.png,,,,,, -/assets/minecraft/textures/blocks,log_jungle_top.png,/mods/ITEMS/mcl_core/textures,default_jungletree_top.png,,,,,, -/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_core/textures,default_junglewood.png,,,,,, -/assets/minecraft/textures/blocks,ladder.png,/mods/ITEMS/mcl_core/textures,default_ladder.png,,,,,, -/assets/minecraft/textures/blocks,lava_still.png,/mods/ITEMS/mcl_core/textures,default_lava_source_animated.png,,,,,, -/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_core/textures,default_mossycobble.png,,,,,, -/assets/minecraft/textures/blocks,obsidian.png,/mods/ITEMS/mcl_core/textures,default_obsidian.png,,,,,, -/assets/minecraft/textures/items,paper.png,/mods/ITEMS/mcl_core/textures,default_paper.png,,,,,, -/assets/minecraft/textures/blocks,reeds.png,/mods/ITEMS/mcl_core/textures,default_papyrus.png,,,,,, -/assets/minecraft/textures/blocks,sand.png,/mods/ITEMS/mcl_core/textures,default_sand.png,,,,,, -/assets/minecraft/textures/blocks,snow.png,/mods/ITEMS/mcl_core/textures,default_snow.png,,,,,, -/assets/minecraft/textures/blocks,iron_block.png,/mods/ITEMS/mcl_core/textures,default_steel_block.png,,,,,, -/assets/minecraft/textures/items,iron_ingot.png,/mods/ITEMS/mcl_core/textures,default_steel_ingot.png,,,,,, -/assets/minecraft/textures/items,stick.png,/mods/ITEMS/mcl_core/textures,default_stick.png,,,,,, -/assets/minecraft/textures/blocks,stonebrick.png,/mods/ITEMS/mcl_core/textures,default_stone_brick.png,,,,,, -/assets/minecraft/textures/blocks,stone.png,/mods/ITEMS/mcl_core/textures,default_stone.png,,,,,, -/assets/minecraft/textures/blocks,log_oak.png,/mods/ITEMS/mcl_core/textures,default_tree.png,,,,,, -/assets/minecraft/textures/blocks,log_oak_top.png,/mods/ITEMS/mcl_core/textures,default_tree_top.png,,,,,, -/assets/minecraft/textures/blocks,water_still.png,/mods/ITEMS/mcl_core/textures,default_water_source_animated.png,,,,,, -/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_core/textures,default_wood.png,,,,,, -/assets/minecraft/textures/blocks,stone_andesite.png,/mods/ITEMS/mcl_core/textures,mcl_core_andesite.png,,,,,, -/assets/minecraft/textures/blocks,stone_andesite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_andesite_smooth.png,,,,,, -/assets/minecraft/textures/items,barrier.png,/mods/ITEMS/mcl_core/textures,mcl_core_barrier.png,,,,,, -/assets/minecraft/textures/blocks,bedrock.png,/mods/ITEMS/mcl_core/textures,mcl_core_bedrock.png,,,,,, -/assets/minecraft/textures/blocks,bone_block_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_bone_block_side.png,,,,,, -/assets/minecraft/textures/blocks,bone_block_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_bone_block_top.png,,,,,, -/assets/minecraft/textures/items,bowl.png,/mods/ITEMS/mcl_core/textures,mcl_core_bowl.png,,,,,, -/assets/minecraft/textures/blocks,cactus_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_bottom.png,,,,,, -/assets/minecraft/textures/items,charcoal.png,/mods/ITEMS/mcl_core/textures,mcl_core_charcoal.png,,,,,, -/assets/minecraft/textures/blocks,coal_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_coal_ore.png,,,,,, -/assets/minecraft/textures/blocks,coarse_dirt.png,/mods/ITEMS/mcl_core/textures,mcl_core_coarse_dirt.png,,,,,, -/assets/minecraft/textures/blocks,diamond_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_diamond_ore.png,,,,,, -/assets/minecraft/textures/blocks,stone_diorite.png,/mods/ITEMS/mcl_core/textures,mcl_core_diorite.png,,,,,, -/assets/minecraft/textures/blocks,stone_diorite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_diorite_smooth.png,,,,,, -/assets/minecraft/textures/blocks,dirt_podzol_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_dirt_podzol_side.png,,,,,, -/assets/minecraft/textures/blocks,dirt_podzol_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_dirt_podzol_top.png,,,,,, -/assets/minecraft/textures/blocks,emerald_block.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald_block.png,,,,,, -/assets/minecraft/textures/blocks,emerald_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald_ore.png,,,,,, -/assets/minecraft/textures/items,emerald.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald.png,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_0.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_0.png,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_1.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_1.png,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_2.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_2.png,,,,,, -/assets/minecraft/textures/blocks,frosted_ice_3.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_3.png,,,,,, -/assets/minecraft/textures/items,gold_nugget.png,/mods/ITEMS/mcl_core/textures,mcl_core_gold_nugget.png,,,,,, -/assets/minecraft/textures/blocks,gold_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_gold_ore.png,,,,,, -/assets/minecraft/textures/blocks,stone_granite.png,/mods/ITEMS/mcl_core/textures,mcl_core_granite.png,,,,,, -/assets/minecraft/textures/blocks,stone_granite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_granite_smooth.png,,,,,, -/assets/minecraft/textures/blocks,grass_path_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_path_side.png,,,,,, -/assets/minecraft/textures/blocks,grass_path_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_path_top.png,,,,,, -/assets/minecraft/textures/blocks,grass_side_snowed.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_side_snowed.png,,,,,, -/assets/minecraft/textures/blocks,ice_packed.png,/mods/ITEMS/mcl_core/textures,mcl_core_ice_packed.png,,,,,, -/assets/minecraft/textures/items,iron_nugget.png,/mods/ITEMS/mcl_core/textures,mcl_core_iron_nugget.png,,,,,, -/assets/minecraft/textures/blocks,iron_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_iron_ore.png,,,,,, -/assets/minecraft/textures/blocks,lapis_block.png,/mods/ITEMS/mcl_core/textures,mcl_core_lapis_block.png,,,,,, -/assets/minecraft/textures/blocks,lapis_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_lapis_ore.png,,,,,, -/assets/minecraft/textures/blocks,log_big_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_big_oak.png,,,,,, -/assets/minecraft/textures/blocks,log_big_oak_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_big_oak_top.png,,,,,, -/assets/minecraft/textures/blocks,log_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_birch.png,,,,,, -/assets/minecraft/textures/blocks,log_birch_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_birch_top.png,,,,,, -/assets/minecraft/textures/blocks,log_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_spruce.png,,,,,, -/assets/minecraft/textures/blocks,log_spruce_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_spruce_top.png,,,,,, -/assets/minecraft/textures/blocks,mycelium_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_mycelium_side.png,,,,,, -/assets/minecraft/textures/blocks,mycelium_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_mycelium_top.png,,,,,, -/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_big_oak.png,,,,,, -/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_birch.png,,,,,, -/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_spruce.png,,,,,, -/assets/minecraft/textures/blocks,red_sand.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sand.png,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_bottom.png,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_carved.png,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_normal.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_normal.png,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_smooth.png,,,,,, -/assets/minecraft/textures/blocks,red_sandstone_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_top.png,,,,,, -/assets/minecraft/textures/blocks,redstone_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_redstone_ore.png,,,,,, -/assets/minecraft/textures/items,reeds.png,/mods/ITEMS/mcl_core/textures,mcl_core_reeds.png,,,,,, -/assets/minecraft/textures/blocks,sandstone_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_bottom.png,,,,,, -/assets/minecraft/textures/blocks,sandstone_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_carved.png,,,,,, -/assets/minecraft/textures/blocks,sandstone_normal.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_normal.png,,,,,, -/assets/minecraft/textures/blocks,sandstone_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_smooth.png,,,,,, -/assets/minecraft/textures/blocks,sandstone_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_top.png,,,,,, -/assets/minecraft/textures/blocks,slime.png,/mods/ITEMS/mcl_core/textures,mcl_core_slime.png,,,,,, -/assets/minecraft/textures/blocks,stonebrick_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_carved.png,,,,,, -/assets/minecraft/textures/blocks,stonebrick_cracked.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_cracked.png,,,,,, -/assets/minecraft/textures/blocks,stonebrick_mossy.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_mossy.png,,,,,, -/assets/minecraft/textures/items,sugar.png,/mods/ITEMS/mcl_core/textures,mcl_core_sugar.png,,,,,, -/assets/minecraft/textures/blocks,vine.png,/mods/ITEMS/mcl_core/textures,mcl_core_vine.png,,,,,, -/assets/minecraft/textures/blocks,web.png,/mods/ITEMS/mcl_core/textures,mcl_core_web.png,,,,,, -/assets/minecraft/textures/blocks,crafting_table_front.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_front.png,,,,,, -/assets/minecraft/textures/blocks,crafting_table_side.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_side.png,,,,,, -/assets/minecraft/textures/blocks,crafting_table_top.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_top.png,,,,,, -/assets/minecraft/textures/blocks,door_acacia_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_acacia_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_upper.png,,,,,, -/assets/minecraft/textures/blocks,door_birch_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_birch_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_upper.png,,,,,, -/assets/minecraft/textures/blocks,door_dark_oak_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_dark_oak_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_upper.png,,,,,, -/assets/minecraft/textures/blocks,door_iron_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_iron_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_upper.png,,,,,, -/assets/minecraft/textures/blocks,door_jungle_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_jungle_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_upper.png,,,,,, -/assets/minecraft/textures/blocks,door_spruce_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_spruce_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_upper.png,,,,,, -/assets/minecraft/textures/blocks,door_wood_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_lower.png,,,,,, -/assets/minecraft/textures/blocks,door_wood_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_upper.png,,,,,, -/assets/minecraft/textures/blocks,trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor.png,,,,,, -/assets/minecraft/textures/blocks,iron_trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor_steel.png,,,,,, -/assets/minecraft/textures/items,door_acacia.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia.png,,,,,, -/assets/minecraft/textures/items,door_birch.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch.png,,,,,, -/assets/minecraft/textures/items,door_dark_oak.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak.png,,,,,, -/assets/minecraft/textures/items,door_jungle.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle.png,,,,,, -/assets/minecraft/textures/items,door_spruce.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce.png,,,,,, -/assets/minecraft/textures/items,door_wood.png,/mods/ITEMS/mcl_doors/textures,doors_item_wood.png,,,,,, -/assets/minecraft/textures/items,door_iron.png,/mods/ITEMS/mcl_doors/textures,doors_item_steel.png,,,,,, -/assets/minecraft/textures/items,dye_powder_black.png,/mods/ITEMS/mcl_dye/textures,dye_black.png,,,,,, -/assets/minecraft/textures/items,dye_powder_blue.png,/mods/ITEMS/mcl_dye/textures,dye_blue.png,,,,,, -/assets/minecraft/textures/items,dye_powder_brown.png,/mods/ITEMS/mcl_dye/textures,dye_brown.png,,,,,, -/assets/minecraft/textures/items,dye_powder_cyan.png,/mods/ITEMS/mcl_dye/textures,dye_cyan.png,,,,,, -/assets/minecraft/textures/items,dye_powder_gray.png,/mods/ITEMS/mcl_dye/textures,dye_dark_grey.png,,,,,, -/assets/minecraft/textures/items,dye_powder_green.png,/mods/ITEMS/mcl_dye/textures,dye_dark_green.png,,,,,, -/assets/minecraft/textures/items,dye_powder_light_blue.png,/mods/ITEMS/mcl_dye/textures,dye_lightblue.png,,,,,, -/assets/minecraft/textures/items,dye_powder_lime.png,/mods/ITEMS/mcl_dye/textures,dye_green.png,,,,,, -/assets/minecraft/textures/items,dye_powder_magenta.png,/mods/ITEMS/mcl_dye/textures,dye_magenta.png,,,,,, -/assets/minecraft/textures/items,dye_powder_orange.png,/mods/ITEMS/mcl_dye/textures,dye_orange.png,,,,,, -/assets/minecraft/textures/items,dye_powder_pink.png,/mods/ITEMS/mcl_dye/textures,dye_pink.png,,,,,, -/assets/minecraft/textures/items,dye_powder_purple.png,/mods/ITEMS/mcl_dye/textures,dye_violet.png,,,,,, -/assets/minecraft/textures/items,dye_powder_red.png,/mods/ITEMS/mcl_dye/textures,dye_red.png,,,,,, -/assets/minecraft/textures/items,dye_powder_silver.png,/mods/ITEMS/mcl_dye/textures,dye_grey.png,,,,,, -/assets/minecraft/textures/items,dye_powder_white.png,/mods/ITEMS/mcl_dye/textures,dye_white.png,,,,,, -/assets/minecraft/textures/items,dye_powder_yellow.png,/mods/ITEMS/mcl_dye/textures,dye_yellow.png,,,,,, -/assets/minecraft/textures/blocks,chorus_flower_dead.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_flower_dead.png,,,,,, -/assets/minecraft/textures/blocks,chorus_flower.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_flower.png,,,,,, -/assets/minecraft/textures/items,chorus_fruit.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_fruit.png,,,,,, -/assets/minecraft/textures/items,chorus_fruit_popped.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_fruit_popped.png,,,,,, -/assets/minecraft/textures/blocks,chorus_plant.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_plant.png,,,,,, -/assets/minecraft/textures/blocks,dragon_egg.png,/mods/ITEMS/mcl_end/textures,mcl_end_dragon_egg.png,,,,,, -/assets/minecraft/textures/blocks,end_bricks.png,/mods/ITEMS/mcl_end/textures,mcl_end_end_bricks.png,,,,,, -/assets/minecraft/textures/items,ender_eye.png,/mods/ITEMS/mcl_end/textures,mcl_end_ender_eye.png,,,,,, -/assets/minecraft/textures/blocks,endframe_eye.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_eye.png,,,,,, -/assets/minecraft/textures/blocks,endframe_side.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_side.png,,,,,, -/assets/minecraft/textures/blocks,endframe_top.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_top.png,,,,,, -/assets/minecraft/textures/blocks,end_stone.png,/mods/ITEMS/mcl_end/textures,mcl_end_end_stone.png,,,,,, -/assets/minecraft/textures/blocks,purpur_block.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_block.png,,,,,, -/assets/minecraft/textures/blocks,purpur_pillar.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_pillar.png,,,,,, -/assets/minecraft/textures/blocks,purpur_pillar_top.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_pillar_top.png,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_0.png,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_1.png,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_2.png,,,,,, -/assets/minecraft/textures/blocks,potatoes_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_3.png,,,,,, -/assets/minecraft/textures/items,pumpkin_pie.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_pie.png,,,,,, -/assets/minecraft/textures/items,bread.png,/mods/ITEMS/mcl_farming/textures,farming_bread.png,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_0.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_1.png,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_1.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_2.png,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_2.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_3.png,,,,,, -/assets/minecraft/textures/blocks,carrots_stage_3.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_4.png,,,,,, -/assets/minecraft/textures/items,carrot_golden.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_gold.png,,,,,, -/assets/minecraft/textures/items,carrot.png,/mods/ITEMS/mcl_farming/textures,farming_carrot.png,,,,,, -/assets/minecraft/textures/items,cookie.png,/mods/ITEMS/mcl_farming/textures,farming_cookie.png,,,,,, -/assets/minecraft/textures/items,melon.png,/mods/ITEMS/mcl_farming/textures,farming_melon.png,,,,,, -/assets/minecraft/textures/items,seeds_melon.png,/mods/ITEMS/mcl_farming/textures,farming_melon_seed.png,,,,,, -/assets/minecraft/textures/blocks,melon_side.png,/mods/ITEMS/mcl_farming/textures,farming_melon_side.png,,,,,, -/assets/minecraft/textures/blocks,melon_top.png,/mods/ITEMS/mcl_farming/textures,farming_melon_top.png,,,,,, -/assets/minecraft/textures/items,potato_baked.png,/mods/ITEMS/mcl_farming/textures,farming_potato_baked.png,,,,,, -/assets/minecraft/textures/items,potato.png,/mods/ITEMS/mcl_farming/textures,farming_potato.png,,,,,, -/assets/minecraft/textures/items,potato_poisonous.png,/mods/ITEMS/mcl_farming/textures,farming_potato_poison.png,,,,,, -/assets/minecraft/textures/blocks,pumpkin_face_on.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_face_light.png,,,,,, -/assets/minecraft/textures/blocks,pumpkin_face_off.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_face.png,,,,,, -/assets/minecraft/textures/items,seeds_pumpkin.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_seed.png,,,,,, -/assets/minecraft/textures/blocks,pumpkin_side.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_side.png,,,,,, -/assets/minecraft/textures/blocks,pumpkin_top.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_top.png,,,,,, -/assets/minecraft/textures/blocks,farmland_dry.png,/mods/ITEMS/mcl_farming/textures,farming_soil.png,,,,,, -/assets/minecraft/textures/blocks,farmland_wet.png,/mods/ITEMS/mcl_farming/textures,farming_soil_wet.png,,,,,, -/assets/minecraft/textures/items,diamond_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_diamondhoe.png,,,,,, -/assets/minecraft/textures/items,gold_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_goldhoe.png,,,,,, -/assets/minecraft/textures/items,iron_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_steelhoe.png,,,,,, -/assets/minecraft/textures/items,stone_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_stonehoe.png,,,,,, -/assets/minecraft/textures/items,wood_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_woodhoe.png,,,,,, -/assets/minecraft/textures/items,wheat.png,/mods/ITEMS/mcl_farming/textures,farming_wheat_harvested.png,,,,,, -/assets/minecraft/textures/items,seeds_wheat.png,/mods/ITEMS/mcl_farming/textures,farming_wheat_seed.png,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_0.png,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_1.png,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_2.png,,,,,, -/assets/minecraft/textures/blocks,beetroots_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_3.png,,,,,, -/assets/minecraft/textures/items,beetroot.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot.png,,,,,, -/assets/minecraft/textures/items,beetroot_seeds.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_seeds.png,,,,,, -/assets/minecraft/textures/items,beetroot_soup.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_soup.png,,,,,, -/assets/minecraft/textures/blocks,hay_block_side.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_hayblock_side.png,,,,,, -/assets/minecraft/textures/blocks,hay_block_top.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_hayblock_top.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_0.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_1.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_2.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_3.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_4.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_4.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_5.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_5.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_6.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_6.png,,,,,, -/assets/minecraft/textures/blocks,wheat_stage_7.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_7.png,,,,,, -/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,fire_basic_flame_animated.png,,,,,, -/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,fire_basic_flame.png,0,0,16,16,0,0 -/assets/minecraft/textures/items,fireball.png,/mods/ITEMS/mcl_fire/textures,mcl_fire_fire_charge.png,,,,,, -/assets/minecraft/textures/items,flint_and_steel.png,/mods/ITEMS/mcl_fire/textures,mcl_fire_flint_and_steel.png,,,,,, -/assets/minecraft/textures/items,fish_clownfish_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_clownfish_raw.png,,,,,, -/assets/minecraft/textures/items,fish_cod_cooked.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fish_cooked.png,,,,,, -/assets/minecraft/textures/items,fishing_rod_uncast.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fishing_rod.png,,,,,, -/assets/minecraft/textures/items,fish_cod_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fish_raw.png,,,,,, -/assets/minecraft/textures/items,fish_pufferfish_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_pufferfish_raw.png,,,,,, -/assets/minecraft/textures/items,fish_salmon_cooked.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_salmon_cooked.png,,,,,, -/assets/minecraft/textures/items,fish_salmon_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_salmon_raw.png,,,,,, -/assets/minecraft/textures/blocks,flower_allium.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_allium.png,,,,,, -/assets/minecraft/textures/blocks,flower_houstonia.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_azure_bluet.png,,,,,, -/assets/minecraft/textures/blocks,flower_blue_orchid.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_blue_orchid.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_paeonia_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_paeonia_bottom.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_paeonia_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_paeonia_top.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_rose_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_rose_bottom.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_rose_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_rose_top.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_back.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_back.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_bottom.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_front.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_front.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_sunflower_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_top.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_syringa_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_syringa_bottom.png,,,,,, -/assets/minecraft/textures/blocks,double_plant_syringa_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_syringa_top.png,,,,,, -/assets/minecraft/textures/blocks,flower_oxeye_daisy.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_oxeye_daisy.png,,,,,, -/assets/minecraft/textures/blocks,flower_rose.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_poppy.png,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_pink.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_pink.png,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_red.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_red.png,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_white.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_white.png,,,,,, -/assets/minecraft/textures/blocks,flower_dandelion.png,/mods/ITEMS/mcl_flowers/textures,flowers_dandelion_yellow.png,,,,,, -/assets/minecraft/textures/blocks,flower_tulip_orange.png,/mods/ITEMS/mcl_flowers/textures,flowers_tulip.png,,,,,, -/assets/minecraft/textures/blocks,furnace_front_off.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_front.png,,,,,, -/assets/minecraft/textures/blocks,furnace_front_on.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_front_active.png,,,,,, -/assets/minecraft/textures/blocks,furnace_side.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_side.png,,,,,, -/assets/minecraft/textures/blocks,furnace_top.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_top.png,,,,,, -/assets/minecraft/textures/blocks,furnace_top.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_bottom.png,,,,,, -/assets/minecraft/textures/blocks,hopper_inside.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_inside.png,,,,,, -/assets/minecraft/textures/blocks,hopper_outside.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_outside.png,,,,,, -/assets/minecraft/textures/blocks,hopper_top.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_top.png,,,,,, -/assets/minecraft/textures/items,hopper.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_item.png,,,,,, -/assets/minecraft/textures/items,record_11.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_11.png,,,,,, -/assets/minecraft/textures/items,record_13.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_13.png,,,,,, -/assets/minecraft/textures/items,record_blocks.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_blocks.png,,,,,, -/assets/minecraft/textures/items,record_cat.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_cat.png,,,,,, -/assets/minecraft/textures/items,record_chirp.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_chirp.png,,,,,, -/assets/minecraft/textures/items,record_far.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_far.png,,,,,, -/assets/minecraft/textures/items,record_mall.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_mall.png,,,,,, -/assets/minecraft/textures/items,record_mellohi.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_mellohi.png,,,,,, -/assets/minecraft/textures/items,record_stal.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_stal.png,,,,,, -/assets/minecraft/textures/items,record_strad.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_strad.png,,,,,, -/assets/minecraft/textures/items,record_wait.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_wait.png,,,,,, -/assets/minecraft/textures/items,record_ward.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_ward.png,,,,,, -/assets/minecraft/textures/blocks,jukebox_side.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_side.png,,,,,, -/assets/minecraft/textures/blocks,jukebox_top.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_top.png,,,,,, -/assets/minecraft/textures/items,map_empty.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_empty.png,,,,,, -/assets/minecraft/textures/items,map_filled_markings.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_filled_markings.png,,,,,, -/assets/minecraft/textures/items,map_filled.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_filled.png,,,,,, -/assets/minecraft/textures/blocks,rail_golden.png,/mods/ITEMS/mcl_minecarts/textures,carts_rail_pwr.png,,,,,, -/assets/minecraft/textures/blocks,rail_normal_turned.png,/mods/ITEMS/mcl_minecarts/textures,default_rail_curved.png,,,,,, -/assets/minecraft/textures/blocks,rail_normal.png,/mods/ITEMS/mcl_minecarts/textures,default_rail.png,,,,,, -/assets/minecraft/textures/blocks,rail_detector.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_rail_detector.png,,,,,, -/assets/minecraft/textures/blocks,rail_detector_powered.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_rail_detector_powered.png,,,,,, -/assets/minecraft/textures/blocks,rail_activator.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_rail_activator.png,,,,,, -/assets/minecraft/textures/blocks,rail_activator_powered.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_rail_activator_powered.png,,,,,, -/assets/minecraft/textures/items,minecart_normal.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_normal.png,,,,,, -/assets/minecraft/textures/items,minecart_chest.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_chest.png,,,,,, -/assets/minecraft/textures/items,minecart_tnt.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_tnt.png,,,,,, -/assets/minecraft/textures/items,minecart_command_block.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_command_block.png,,,,,, -/assets/minecraft/textures/items,minecart_furnace.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_furnace.png,,,,,, -/assets/minecraft/textures/items,minecart_hopper.png,/mods/ITEMS/mcl_minecarts/textures,mcl_minecarts_minecart_hopper.png,,,,,, -/assets/minecraft/textures/blocks,rail_detector.png,/mods/ITEMS/mcl_minecarts/textures,rail_detector.png,,,,,, -/assets/minecraft/textures/blocks,rail_detector_powered.png,/mods/ITEMS/mcl_minecarts/textures,rail_detector_powered.png,,,,,, -/assets/minecraft/textures/blocks,rail_golden_powered.png,/mods/ITEMS/mcl_minecarts/textures,rail_golden_powered.png,,,,,, -/assets/minecraft/textures/items,gunpowder.png,/mods/ITEMS/mcl_mobitems/textures,default_gunpowder.png,,,,,, -/assets/minecraft/textures/items,beef_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_beef_cooked.png,,,,,, -/assets/minecraft/textures/items,beef_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_beef_raw.png,,,,,, -/assets/minecraft/textures/items,blaze_powder.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_blaze_powder.png,,,,,, -/assets/minecraft/textures/items,blaze_rod.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_blaze_rod.png,,,,,, -/assets/minecraft/textures/items,bone.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_bone.png,,,,,, -/assets/minecraft/textures/items,bucket_milk.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_bucket_milk.png,,,,,, -/assets/minecraft/textures/items,carrot_on_a_stick.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_carrot_on_a_stick.png,,,,,, -/assets/minecraft/textures/items,chicken_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_chicken_cooked.png,,,,,, -/assets/minecraft/textures/items,chicken_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_chicken_raw.png,,,,,, -/assets/minecraft/textures/items,feather.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_feather.png,,,,,, -/assets/minecraft/textures/items,ghast_tear.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_ghast_tear.png,,,,,, -/assets/minecraft/textures/items,leather.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_leather.png,,,,,, -/assets/minecraft/textures/items,magma_cream.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_magma_cream.png,,,,,, -/assets/minecraft/textures/items,mutton_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_mutton_cooked.png,,,,,, -/assets/minecraft/textures/items,mutton_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_mutton_raw.png,,,,,, -/assets/minecraft/textures/items,nether_star.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_nether_star.png,,,,,, -/assets/minecraft/textures/items,porkchop_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_porkchop_cooked.png,,,,,, -/assets/minecraft/textures/items,porkchop_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_porkchop_raw.png,,,,,, -/assets/minecraft/textures/items,rabbit_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_cooked.png,,,,,, -/assets/minecraft/textures/items,rabbit_foot.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_foot.png,,,,,, -/assets/minecraft/textures/items,rabbit_hide.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_hide.png,,,,,, -/assets/minecraft/textures/items,rabbit_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_raw.png,,,,,, -/assets/minecraft/textures/items,rabbit_stew.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_stew.png,,,,,, -/assets/minecraft/textures/items,rotten_flesh.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rotten_flesh.png,,,,,, -/assets/minecraft/textures/items,saddle.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_saddle.png,,,,,, -/assets/minecraft/textures/items,shulker_shell.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_shulker_shell.png,,,,,, -/assets/minecraft/textures/items,slimeball.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_slimeball.png,,,,,, -/assets/minecraft/textures/items,spider_eye.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_spider_eye.png,,,,,, -/assets/minecraft/textures/items,string.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_string.png,,,,,, -/assets/minecraft/textures/blocks,mob_spawner.png,/mods/ITEMS/mcl_mobspawners/textures,mob_spawner.png,,,,,, -/assets/minecraft/textures/blocks,mushroom_brown.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_brown.png,,,,,, -/assets/minecraft/textures/blocks,mushroom_red.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_red.png,,,,,, -/assets/minecraft/textures/items,mushroom_stew.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_stew.png,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_inside.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_inside.png,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_skin_brown.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_brown.png,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_skin_red.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_red.png,,,,,, -/assets/minecraft/textures/blocks,mushroom_block_skin_stem.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_stem.png,,,,,, -/assets/minecraft/textures/items,glowstone_dust.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_glowstone_dust.png,,,,,, -/assets/minecraft/textures/blocks,glowstone.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_glowstone.png,,,,,, -/assets/minecraft/textures/blocks,magma.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_magma.png,,,,,, -/assets/minecraft/textures/blocks,nether_brick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_brick.png,,,,,, -/assets/minecraft/textures/items,netherbrick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_netherbrick.png,,,,,, -/assets/minecraft/textures/blocks,netherrack.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_netherrack.png,,,,,, -/assets/minecraft/textures/blocks,nether_wart_block.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_block.png,,,,,, -/assets/minecraft/textures/items,nether_wart.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart.png,,,,,, -/assets/minecraft/textures/blocks,nether_wart_stage_0.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_0.png,,,,,, -/assets/minecraft/textures/blocks,nether_wart_stage_1.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_1.png,,,,,, -/assets/minecraft/textures/blocks,nether_wart_stage_2.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_2.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_bottom.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_bottom.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_side.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_side.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_top.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_chiseled.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_chiseled_side.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_chiseled_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_chiseled_top.png,,,,,, -/assets/minecraft/textures/blocks,quartz_ore.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_ore.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_lines.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_pillar_side.png,,,,,, -/assets/minecraft/textures/blocks,quartz_block_lines_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_pillar_top.png,,,,,, -/assets/minecraft/textures/items,quartz.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz.png,,,,,, -/assets/minecraft/textures/blocks,red_nether_brick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_red_nether_brick.png,,,,,, -/assets/minecraft/textures/blocks,soul_sand.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_soul_sand.png,,,,,, -/assets/minecraft/textures/blocks,prismarine_rough.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_anim.png,,,,,, -/assets/minecraft/textures/blocks,prismarine_bricks.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_bricks.png,,,,,, -/assets/minecraft/textures/items,prismarine_crystals.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_crystals.png,,,,,, -/assets/minecraft/textures/blocks,prismarine_dark.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_dark.png,,,,,, -/assets/minecraft/textures/items,prismarine_shard.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_shard.png,,,,,, -/assets/minecraft/textures/blocks,sea_lantern.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_sea_lantern.png,,,,,, -/assets/minecraft/textures/items,dragon_breath.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_dragon_breath.png,,,,,, -/assets/minecraft/textures/items,melon_speckled.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_melon_speckled.png,,,,,, -/assets/minecraft/textures/items,potion_bottle_drinkable.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_bottle_drinkable.png,,,,,, -/assets/minecraft/textures/items,potion_bottle_empty.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_bottle_empty.png,,,,,, -/assets/minecraft/textures/items,potion_overlay.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_overlay.png,,,,,, -/assets/minecraft/textures/items,spider_eye_fermented.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_spider_eye_fermented.png,,,,,, -/assets/minecraft/textures/blocks,sponge.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge.png,,,,,, -/assets/minecraft/textures/blocks,sponge_wet.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge_wet.png,,,,,, -/assets/minecraft/textures/blocks,stone_slab_side.png,/mods/ITEMS/mcl_stairs/textures,mcl_stairs_stone_slab_side.png,,,,,, -/assets/minecraft/textures/blocks,stone_slab_top.png,/mods/ITEMS/mcl_stairs/textures,mcl_stairs_stone_slab_top.png,,,,,, -/assets/minecraft/textures/items,arrow.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_arrow_inv.png,,,,,, -/assets/minecraft/textures/items,bow_pulling_0.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow_0.png,,,,,, -/assets/minecraft/textures/items,bow_pulling_1.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow_1.png,,,,,, -/assets/minecraft/textures/items,bow_pulling_2.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow_2.png,,,,,, -/assets/minecraft/textures/items,bow_standby.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow.png,,,,,, -/assets/minecraft/textures/items,egg.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_egg.png,,,,,, -/assets/minecraft/textures/items,ender_pearl.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_ender_pearl.png,,,,,, -/assets/minecraft/textures/items,snowball.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_snowball.png,,,,,, -/assets/minecraft/textures/blocks,tnt_bottom.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_bottom.png,,,,,, -/assets/minecraft/textures/blocks,tnt_side.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_side.png,,,,,, -/assets/minecraft/textures/blocks,tnt_top.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_top.png,,,,,, -/assets/minecraft/textures/items,diamond_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondaxe.png,,,,,, -/assets/minecraft/textures/items,diamond_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondpick.png,,,,,, -/assets/minecraft/textures/items,diamond_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondshovel.png,,,,,, -/assets/minecraft/textures/items,diamond_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondsword.png,,,,,, -/assets/minecraft/textures/items,gold_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldaxe.png,,,,,, -/assets/minecraft/textures/items,gold_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldpick.png,,,,,, -/assets/minecraft/textures/items,gold_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldshovel.png,,,,,, -/assets/minecraft/textures/items,gold_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldsword.png,,,,,, -/assets/minecraft/textures/items,shears.png,/mods/ITEMS/mcl_tools/textures,default_tool_shears.png,,,,,, -/assets/minecraft/textures/items,iron_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelaxe.png,,,,,, -/assets/minecraft/textures/items,iron_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelpick.png,,,,,, -/assets/minecraft/textures/items,iron_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelshovel.png,,,,,, -/assets/minecraft/textures/items,iron_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelsword.png,,,,,, -/assets/minecraft/textures/items,stone_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_stoneaxe.png,,,,,, -/assets/minecraft/textures/items,stone_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_stonepick.png,,,,,, -/assets/minecraft/textures/items,stone_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_stoneshovel.png,,,,,, -/assets/minecraft/textures/items,stone_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_stonesword.png,,,,,, -/assets/minecraft/textures/items,wood_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodaxe.png,,,,,, -/assets/minecraft/textures/items,wood_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodpick.png,,,,,, -/assets/minecraft/textures/items,wood_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodshovel.png,,,,,, -/assets/minecraft/textures/items,wood_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodsword.png,,,,,, -/assets/minecraft/textures/blocks,torch_on.png,/mods/ITEMS/mcl_torches/textures,default_torch_on_floor_animated.png,,,,,, -/assets/minecraft/textures/blocks,torch_on.png,/mods/ITEMS/mcl_torches/textures,default_torch_on_floor.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_black.png,/mods/ITEMS/mcl_wool/textures,wool_black.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_blue.png,/mods/ITEMS/mcl_wool/textures,wool_blue.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_brown.png,/mods/ITEMS/mcl_wool/textures,wool_brown.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_cyan.png,/mods/ITEMS/mcl_wool/textures,wool_cyan.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_gray.png,/mods/ITEMS/mcl_wool/textures,wool_dark_grey.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_green.png,/mods/ITEMS/mcl_wool/textures,wool_green.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_silver.png,/mods/ITEMS/mcl_wool/textures,wool_grey.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_light_blue.png,/mods/ITEMS/mcl_wool/textures,wool_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_lime.png,/mods/ITEMS/mcl_wool/textures,wool_lime.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_magenta.png,/mods/ITEMS/mcl_wool/textures,wool_magenta.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_orange.png,/mods/ITEMS/mcl_wool/textures,wool_orange.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_pink.png,/mods/ITEMS/mcl_wool/textures,wool_pink.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_red.png,/mods/ITEMS/mcl_wool/textures,wool_red.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_purple.png,/mods/ITEMS/mcl_wool/textures,wool_violet.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_white.png,/mods/ITEMS/mcl_wool/textures,wool_white.png,,,,,, -/assets/minecraft/textures/blocks,wool_colored_yellow.png,/mods/ITEMS/mcl_wool/textures,wool_yellow.png,,,,,, -/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_chain.png,,,,,, -/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_diamond.png,,,,,, -/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_gold.png,,,,,, -/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_iron.png,,,,,, -/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_leather.png,,,,,, -/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_chain.png,,,,,, -/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_diamond.png,,,,,, -/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_gold.png,,,,,, -/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_iron.png,,,,,, -/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_leather.png,,,,,, -/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_chain.png,,,,,, -/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_diamond.png,,,,,, -/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_gold.png,,,,,, -/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_iron.png,,,,,, -/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_leather.png,,,,,, -/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_chain.png,,,,,, -/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_diamond.png,,,,,, -/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_gold.png,,,,,, -/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_iron.png,,,,,, -/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_leather.png,,,,,, -/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/minetest-3d_armor/3d_armor_stand/textures,3d_armor_stand_item.png,,,,,, -/assets/minecraft/textures/blocks,dispenser_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_horizontal.png,,,,,, -/assets/minecraft/textures/blocks,dispenser_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_vertical.png,,,,,, -/assets/minecraft/textures/blocks,dropper_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_horizontal.png,,,,,, -/assets/minecraft/textures/blocks,dropper_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_vertical.png,,,,,, -/assets/minecraft/textures/blocks,observer_back_lit.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_back_lit.png,,,,,, -/assets/minecraft/textures/blocks,observer_back.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_back.png,,,,,, -/assets/minecraft/textures/blocks,observer_front.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_front.png,,,,,, -/assets/minecraft/textures/blocks,observer_side.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_side.png,,,,,, -/assets/minecraft/textures/blocks,observer_top.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_top.png,,,,,, -/assets/minecraft/textures/items,redstone_dust.png,/mods/ITEMS/REDSTONE/mesecons/textures,redstone_redstone_dust.png,,,,,, -/assets/minecraft/textures/items,repeater.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_item.png,,,,,, -/assets/minecraft/textures/blocks,repeater_off.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_off.png,,,,,, -/assets/minecraft/textures/blocks,repeater_on.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_on.png,,,,,, -/assets/minecraft/textures/blocks,noteblock.png,/mods/ITEMS/REDSTONE/mesecons_noteblock/textures,mesecons_noteblock.png,,,,,, -/assets/minecraft/textures/blocks,command_block_back.png,/mods/ITEMS/REDSTONE/mesecons_commandblock/textures,jeija_commandblock_off.png,,,,,, -/assets/minecraft/textures/blocks,command_block_back.png,/mods/ITEMS/REDSTONE/mesecons_commandblock/textures,jeija_commandblock_on.png,,,,,, -/assets/minecraft/textures/blocks,redstone_lamp_off.png,/mods/ITEMS/REDSTONE/mesecons_lightstone/textures,jeija_lightstone_gray_off.png,,,,,, -/assets/minecraft/textures/blocks,redstone_lamp_on.png,/mods/ITEMS/REDSTONE/mesecons_lightstone/textures,jeija_lightstone_gray_on.png,,,,,, -/assets/minecraft/textures/blocks,daylight_detector_inverted_top.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel_inverted.png,,,,,, -/assets/minecraft/textures/blocks,daylight_detector_top.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel.png,,,,,, -/assets/minecraft/textures/blocks,daylight_detector_side.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel_side.png,,,,,, -/assets/minecraft/textures/blocks,redstone_torch_off.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,jeija_torches_off.png,,,,,, -/assets/minecraft/textures/blocks,redstone_torch_on.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,jeija_torches_on.png,,,,,, -/assets/minecraft/textures/blocks,lever.png,/mods/ITEMS/REDSTONE/mesecons_walllever/textures,jeija_wall_lever.png,,,,,, -/assets/minecraft/textures/blocks,piston_bottom.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_back.png,,,,,, -/assets/minecraft/textures/blocks,piston_side.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_bottom.png,,,,,, -/assets/minecraft/textures/blocks,piston_inner.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_on_front.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_back.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_bottom.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_front.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_sticky.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_front_sticky.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_left.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_right.png,,,,,, -/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_top.png,,,,,, -/assets/minecraft/textures/blocks,redstone_block.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,redstone_redstone_block.png,,,,,, -/assets/minecraft/textures/items,sign.png,/mods/ITEMS/mcl_signs/textures,default_sign.png,,,,,, -/assets/minecraft/textures/blocks,iron_bars.png,/mods/ITEMS/xpanes/textures,xpanes_pane_iron.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_black.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_black.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_blue.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_blue.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_brown.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_brown.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_cyan.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_cyan.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_gray.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_gray.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_green.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_green.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_light_blue.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_light_blue.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_lime.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_lime.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_magenta.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_magenta.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_natural.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_orange.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_orange.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_pink.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_pink.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_purple.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_purple.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_red.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_red.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_silver.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_silver.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_white.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_white.png,,,,,, -/assets/minecraft/textures/blocks,glass_pane_top_yellow.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_yellow.png,,,,,, -/assets/minecraft/textures/items,totem.png,/mods/ENTITIES/mobs_mc/textures,mcl_mobitems_totem.png,,,,,, -/assets/minecraft/textures/entity,bat.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_bat.png,,,,,, -/assets/minecraft/textures/entity,blaze.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_blaze.png,,,,,, -/assets/minecraft/textures/entity/cat,black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_black.png,,,,,, -/assets/minecraft/textures/entity/cat,ocelot.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_ocelot.png,,,,,, -/assets/minecraft/textures/entity/cat,red.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_red.png,,,,,, -/assets/minecraft/textures/entity/cat,siamese.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_siamese.png,,,,,, -/assets/minecraft/textures/entity/spider,cave_spider.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cave_spider.png,,,,,, -/assets/minecraft/textures/entity,chicken.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_chicken.png,,,,,, -/assets/minecraft/textures/entity/cow,cow.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cow.png,,,,,, -/assets/minecraft/textures/entity/creeper,creeper.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_creeper.png,,,,,, -/assets/minecraft/textures/items,diamond_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_diamond_horse_armor.png,,,,,, -/assets/minecraft/textures/entity/horse,donkey.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_donkey.png,,,,,, -/assets/minecraft/textures/entity/enderdragon,dragon.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_dragon.png,,,,,, -/assets/minecraft/textures/entity/shulker,endergolem.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_endergolem.png,,,,,, -/assets/minecraft/textures/entity/enderman,enderman_eyes.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_enderman_eyes.png,,,,,, -/assets/minecraft/textures/entity/enderman,enderman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_enderman.png,,,,,, -/assets/minecraft/textures/entity,endermite.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_endermite.png,,,,,, -/assets/minecraft/textures/entity/ghast,ghast.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_ghast.png,,,,,, -/assets/minecraft/textures/items,gold_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_gold_horse_armor.png,,,,,, -/assets/minecraft/textures/entity,guardian_elder.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_guardian_elder.png,,,,,, -/assets/minecraft/textures/entity,guardian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_guardian.png,,,,,, -/assets/minecraft/textures/entity/horse/armor,horse_armor_diamond.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_diamond.png,,,,,, -/assets/minecraft/textures/entity/horse/armor,horse_armor_gold.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_gold.png,,,,,, -/assets/minecraft/textures/entity/horse/armor,horse_armor_iron.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_iron.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_black.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_brown.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_chestnut.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_chestnut.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_darkbrown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_darkbrown.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_gray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_gray.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_blackdots.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_blackdots.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_whitedots.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_whitedots.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_whitefield.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_whitefield.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_markings_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_white.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_white.png,,,,,, -/assets/minecraft/textures/entity/horse,horse_zombie.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_zombie.png,,,,,, -/assets/minecraft/textures/entity/zombie,husk.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_husk.png,,,,,, -/assets/minecraft/textures/entity,iron_golem.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_iron_golem.png,,,,,, -/assets/minecraft/textures/items,iron_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_iron_horse_armor.png,,,,,, -/assets/minecraft/textures/entity/slime,magmacube.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_magmacube.png,,,,,, -/assets/minecraft/textures/entity/cow,mooshroom.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_mooshroom.png,,,,,, -/assets/minecraft/textures/entity/horse,mule.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_mule.png,,,,,, -/assets/minecraft/textures/entity/pig,pig.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_pig.png,,,,,, -/assets/minecraft/textures/entity/pig,pig_saddle.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_pig_saddle.png,,,,,, -/assets/minecraft/textures/entity/bear,polarbear.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_polarbear.png,,,,,, -/assets/minecraft/textures/entity/rabbit,black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_black.png,,,,,, -/assets/minecraft/textures/entity/rabbit,brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_brown.png,,,,,, -/assets/minecraft/textures/entity/rabbit,caerbannog.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_caerbannog.png,,,,,, -/assets/minecraft/textures/entity/rabbit,gold.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_gold.png,,,,,, -/assets/minecraft/textures/entity/rabbit,salt.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_salt.png,,,,,, -/assets/minecraft/textures/entity/rabbit,toast.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_toast.png,,,,,, -/assets/minecraft/textures/entity/rabbit,white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_white.png,,,,,, -/assets/minecraft/textures/entity/rabbit,white_splotched.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_white_splotched.png,,,,,, -/assets/minecraft/textures/entity/sheep,sheep_fur.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_sheep_fur.png,,,,,, -/assets/minecraft/textures/entity/sheep,sheep.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_sheep.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_black.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_blue.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_blue.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_brown.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_cyan.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_cyan.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_gray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_gray.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_green.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_green.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_light_blue.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_light_blue.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_lime.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_lime.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_magenta.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_magenta.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_orange.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_orange.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_pink.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_pink.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_purple.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_purple.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_red.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_red.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_silver.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_silver.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_white.png,,,,,, -/assets/minecraft/textures/entity/shulker,shulker_yellow.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_yellow.png,,,,,, -/assets/minecraft/textures/entity,silverfish.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_silverfish.png,,,,,, -/assets/minecraft/textures/entity/skeleton,skeleton.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_skeleton.png,,,,,, -/assets/minecraft/textures/entity/slime,slime.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_slime.png,,,,,, -/assets/minecraft/textures/entity,snowman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_snowman.png,,,,,, -/assets/minecraft/textures/entity,spider_eyes.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_spider_eyes.png,,,,,, -/assets/minecraft/textures/entity/spider,spider.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_spider.png,,,,,, -/assets/minecraft/textures/entity,squid.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_squid.png,,,,,, -/assets/minecraft/textures/entity/skeleton,stray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_stray.png,,,,,, -/assets/minecraft/textures/entity/villager,butcher.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_butcher.png,,,,,, -/assets/minecraft/textures/entity/villager,farmer.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_farmer.png,,,,,, -/assets/minecraft/textures/entity/villager,librarian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_librarian.png,,,,,, -/assets/minecraft/textures/entity/villager,villager.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager.png,,,,,, -/assets/minecraft/textures/entity/villager,priest.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_priest.png,,,,,, -/assets/minecraft/textures/entity/villager,smith.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_smith.png,,,,,, -/assets/minecraft/textures/entity,witch.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_witch.png,,,,,, -/assets/minecraft/textures/entity/wither,wither.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wither.png,,,,,, -/assets/minecraft/textures/entity/skeleton,wither_skeleton.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wither_skeleton.png,,,,,, -/assets/minecraft/textures/entity/wolf,wolf_angry.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_angry.png,,,,,, -/assets/minecraft/textures/entity/wolf,wolf_collar.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_collar.png,,,,,, -/assets/minecraft/textures/entity/wolf,wolf.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf.png,,,,,, -/assets/minecraft/textures/entity/wolf,wolf_tame.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_tame.png,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_butcher.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_butcher.png,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_farmer.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_farmer.png,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_librarian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_librarian.png,,,,,, -/assets/minecraft/textures/entity,zombie_pigman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_pigman.png,,,,,, -/assets/minecraft/textures/entity/zombie,zombie.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie.png,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_priest.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_priest.png,,,,,, -/assets/minecraft/textures/entity/zombie_villager,zombie_smith.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_smith.png,,,,,, -/assets/minecraft/textures/entity/zombie,zombie_villager.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_villager.png,,,,,, -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_bgicon.png,16,27,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_icon_health_poison.png,88,0,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_icon.png,52,27,9,9,0,0 -/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,mcl_hunger_icon_foodpoison.png,88,27,9,9,0,0 -/assets/minecraft/textures/particle,particles.png,/mods/ITEMS/mcl_tnt/textures,tnt_smoke.png,56,0,8,8,0,0 -/assets/minecraft/textures/blocks,shulker_top_black.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_black_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_blue.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_blue_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_brown.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_brown_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_cyan.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_cyan_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_gray.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_dark_grey_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_green.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_dark_green_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_light_blue.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_lightblue_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_lime.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_green_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_magenta.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_magenta_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_orange.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_orange_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_pink.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_pink_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_purple.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_violet_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_red.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_red_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_silver.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_grey_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_white.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_white_shulker_box_top.png,,,,,, -/assets/minecraft/textures/blocks,shulker_top_yellow.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_yellow_shulker_box_top.png,,,,,, -/assets/minecraft/textures/items,flower_pot.png,/mods/ITEMS/mcl_flowerpots/textures,mcl_flowerpots_flowerpot_inventory.png,,,,,, -/assets/minecraft/textures/gui,widgets.png,/mods/HUD/mcl_inventory/textures,gui_hotbar.png,0,0,182,22,0,0 -/assets/minecraft/textures/gui,widgets.png,/mods/HUD/mcl_inventory/textures,gui_hotbar_selected.png,0,22,24,24,0,0 -/assets/minecraft/textures/blocks,bed_feet_end.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_red.png,,,,,, -/assets/minecraft/textures/blocks,bed_feet_side.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_r_red.png,,,,,, -/assets/minecraft/textures/blocks,bed_feet_top.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_top_bottom_red.png,,,,,, -/assets/minecraft/textures/blocks,bed_head_end.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_red.png,,,,,, -/assets/minecraft/textures/blocks,bed_head_side.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_top_r_red.png,,,,,, -/assets/minecraft/textures/blocks,bed_head_top.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_top_top_red.png,,,,,, -/assets/minecraft/textures/items,compass_00.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_00.png,,,,,, -/assets/minecraft/textures/items,compass_01.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_01.png,,,,,, -/assets/minecraft/textures/items,compass_02.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_02.png,,,,,, -/assets/minecraft/textures/items,compass_03.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_03.png,,,,,, -/assets/minecraft/textures/items,compass_04.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_04.png,,,,,, -/assets/minecraft/textures/items,compass_05.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_05.png,,,,,, -/assets/minecraft/textures/items,compass_06.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_06.png,,,,,, -/assets/minecraft/textures/items,compass_07.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_07.png,,,,,, -/assets/minecraft/textures/items,compass_08.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_08.png,,,,,, -/assets/minecraft/textures/items,compass_09.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_09.png,,,,,, -/assets/minecraft/textures/items,compass_10.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_10.png,,,,,, -/assets/minecraft/textures/items,compass_11.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_11.png,,,,,, -/assets/minecraft/textures/items,compass_12.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_12.png,,,,,, -/assets/minecraft/textures/items,compass_13.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_13.png,,,,,, -/assets/minecraft/textures/items,compass_14.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_14.png,,,,,, -/assets/minecraft/textures/items,compass_15.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_15.png,,,,,, -/assets/minecraft/textures/items,compass_16.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_16.png,,,,,, -/assets/minecraft/textures/items,compass_17.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_17.png,,,,,, -/assets/minecraft/textures/items,compass_18.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_18.png,,,,,, -/assets/minecraft/textures/items,compass_19.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_19.png,,,,,, -/assets/minecraft/textures/items,compass_20.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_20.png,,,,,, -/assets/minecraft/textures/items,compass_21.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_21.png,,,,,, -/assets/minecraft/textures/items,compass_22.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_22.png,,,,,, -/assets/minecraft/textures/items,compass_23.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_23.png,,,,,, -/assets/minecraft/textures/items,compass_24.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_24.png,,,,,, -/assets/minecraft/textures/items,compass_25.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_25.png,,,,,, -/assets/minecraft/textures/items,compass_26.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_26.png,,,,,, -/assets/minecraft/textures/items,compass_27.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_27.png,,,,,, -/assets/minecraft/textures/items,compass_28.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_28.png,,,,,, -/assets/minecraft/textures/items,compass_29.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_29.png,,,,,, -/assets/minecraft/textures/items,compass_30.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_30.png,,,,,, -/assets/minecraft/textures/items,compass_31.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_31.png,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_boots.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_boots.png,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_chestplate.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_chestplate.png,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_helmet.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_helmet.png,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_leggings.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_leggings.png,,,,,, -/assets/minecraft/textures/items,empty_armor_slot_shield.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_shield.png,,,,,, -/assets/minecraft/textures/items,knowledge_book.png,/mods/HELP/mcl_craftguide/textures,craftguide_book.png,,,,,, -/assets/minecraft/textures/blocks,redstone_dust_dot.png,/mods/ITEMS/REDSTONE/mesecons/textures,redstone_redstone_dust_dot.png,,,,,, -/assets/minecraft/textures/blocks,redstone_dust_line0.png,/mods/ITEMS/REDSTONE/mesecons/textures,redstone_redstone_dust_line0.png,,,,,, -/assets/minecraft/textures/blocks,redstone_dust_line1.png,/mods/ITEMS/REDSTONE/mesecons/textures,redstone_redstone_dust_line1.png,,,,,, -/assets/minecraft/textures/blocks,pumpkin_stem_connected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_stem_connected.png,,,,,, -/assets/minecraft/textures/blocks,melon_stem_connected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_stem_connected.png,,,,,, -/assets/minecraft/textures/blocks,pumpkin_stem_disconnected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_stem_disconnected.png,,,,,, -/assets/minecraft/textures/blocks,melon_stem_disconnected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_stem_disconnected.png,,,,,, -/assets/minecraft/textures/blocks,fence_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_acacia.png,,,,,, -/assets/minecraft/textures/blocks,fence_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_big_oak.png,,,,,, -/assets/minecraft/textures/blocks,fence_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_birch.png,,,,,, -/assets/minecraft/textures/blocks,fence_gate_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_acacia.png,,,,,, -/assets/minecraft/textures/blocks,fence_gate_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_big_oak.png,,,,,, -/assets/minecraft/textures/blocks,fence_gate_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_birch.png,,,,,, -/assets/minecraft/textures/blocks,fence_gate_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_jungle.png,,,,,, -/assets/minecraft/textures/blocks,fence_gate_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_oak.png,,,,,, -/assets/minecraft/textures/blocks,fence_gate_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_spruce.png,,,,,, -/assets/minecraft/textures/blocks,fence_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_jungle.png,,,,,, -/assets/minecraft/textures/blocks,fence_nether_brick.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_nether_brick.png,,,,,, -/assets/minecraft/textures/blocks,fence_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_oak.png,,,,,, -/assets/minecraft/textures/blocks,fence_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_spruce.png,,,,,, -/assets/minecraft/textures/entity,sign.png,/mods/ITEMS/mcl_signs/textures,mcl_signs_sign.png,,,,,, -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_1.png,0,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_2.png,16,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_3.png,32,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_4.png,48,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_5.png,64,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_6.png,80,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_7.png,96,0,16,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_8.png,0,32,32,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_9.png,32,32,32,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_10.png,64,32,32,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_11.png,96,32,32,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_12.png,128,32,32,16,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_13.png,0,64,16,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_14.png,16,64,16,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_15.png,0,128,32,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_16.png,32,128,32,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_17.png,64,128,32,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_18.png,96,128,32,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_19.png,128,128,32,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_20.png,160,128,32,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_21.png,0,96,64,32,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_22.png,0,192,64,64,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_23.png,64,192,64,64,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_24.png,128,192,64,64,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_25.png,192,64,64,48,0,0 -/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_26.png,192,112,64,48,0,0 -/assets/minecraft/textures/entity,banner_base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_banner_base.png,,,,,, -/assets/minecraft/textures/entity/banner,base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_base.png,,,,,, -/assets/minecraft/textures/items,banner_base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_item_base.png,,,,,, -/assets/minecraft/textures/items,banner_overlay.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_item_overlay.png,,,,,, -/assets/minecraft/textures/blocks,portal.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_portal.png,,,,,, -/assets/minecraft/textures/entity,end_portal.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_end_portal.png,,,,,, -/assets/minecraft/textures/environment,end_sky.png,/mods/PLAYER/mcl_playerplus/textures,mcl_playerplus_end_sky.png,,,,,, -/assets/minecraft/textures/entity/chest,normal.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_normal.png,,,,,, -/assets/minecraft/textures/entity/chest,normal_double.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_normal_double.png,,,,,, -/assets/minecraft/textures/entity/chest,ender.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_ender.png,,,,,, -/assets/minecraft/textures/blocks,endframe_top.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_top.png,,,,,, -/assets/minecraft/textures/blocks,endframe_side.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_side.png,,,,,, -/assets/minecraft/textures/blocks,endframe_eye.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_eye.png,,,,,, -/assets/minecraft/textures/blocks,end_stone.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_bottom.png,,,,,, +Source path,Source file,Target path,Target file,xs,ys,xl,yl,xt,yt,Blacklisted? +/assets/minecraft/textures/particle,particles.png,/mods/CORE/mcl_particles/textures,mcl_particles_bubble.png,0,16,8,8,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/hbarmor/textures,hbarmor_icon.png,34,9,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/hbarmor/textures,hbarmor_bgicon.png,16,9,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_health.png,52,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_bgicon_health.png,16,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/hudbars/textures,hudbars_icon_breath.png,16,18,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_base_textures/textures,heart.png,52,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/HUD/mcl_base_textures/textures,bubble.png,16,18,9,9,0,0,y +/assets/minecraft/textures/items,bucket_empty.png,/mods/ITEMS/mcl_buckets/textures,bucket.png,,,,,,, +/assets/minecraft/textures/items,bucket_water.png,/mods/ITEMS/mcl_buckets/textures,bucket_water.png,,,,,,, +/assets/minecraft/textures/items,bucket_lava.png,/mods/ITEMS/mcl_buckets/textures,bucket_lava.png,,,,,,, +/assets/minecraft/textures/items,painting.png,/mods/ITEMS/gemalde/textures,gemalde_node.png,,,,,,, +/assets/minecraft/textures/items,item_frame.png,/mods/ITEMS/itemframes/textures,itemframes_frame.png,,,,,,, +/assets/minecraft/textures/blocks,anvil_base.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_base.png,,,,,,, +/assets/minecraft/textures/blocks,anvil_top_damaged_0.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_0.png,,,,,,, +/assets/minecraft/textures/blocks,anvil_top_damaged_1.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_1.png,,,,,,, +/assets/minecraft/textures/blocks,anvil_top_damaged_2.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_top_damaged_2.png,,,,,,, +/assets/minecraft/textures/blocks,anvil_base.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_side.png,,,,,,, +/assets/minecraft/textures/blocks,anvil_side.png,/mods/ITEMS/mcl_anvils/textures,mcl_anvils_anvil_side.png,,,,,,, +/assets/minecraft/textures/items,name_tag.png,/mods/ENTITIES/mobs/textures,mobs_nametag.png,,,,,,, +/assets/minecraft/textures/gui,icons.png,/mods/ENTITIES/mobs/textures,mobs_blood.png,16,0,9,9,0,0,y +/assets/minecraft/textures/blocks,itemframe_background.png,/mods/ITEMS/itemframes/textures,itemframe_background.png,,,,,,, +/assets/minecraft/textures/items,bed.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_red.png,,,,,,, +/assets/minecraft/textures/items,acacia_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_acacia_boat.png,,,,,,, +/assets/minecraft/textures/items,oak_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_oak_boat.png,,,,,,, +/assets/minecraft/textures/items,spruce_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_spruce_boat.png,,,,,,, +/assets/minecraft/textures/items,dark_oak_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_dark_oak_boat.png,,,,,,, +/assets/minecraft/textures/items,jungle_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_jungle_boat.png,,,,,,, +/assets/minecraft/textures/items,birch_boat.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_birch_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,boat_acacia.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_acacia_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,boat_oak.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_oak_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,boat_darkoak.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_dark_oak_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,boat_spruce.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_spruce_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,boat_birch.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_birch_boat.png,,,,,,, +/assets/minecraft/textures/entity/boat,boat_jungle.png,/mods/ENTITIES/mcl_boats/textures,mcl_boats_texture_jungle_boat.png,,,,,,, +/assets/minecraft/textures/items,book_normal.png,/mods/ITEMS/mcl_books/textures,default_book.png,,,,,,, +/assets/minecraft/textures/blocks,bookshelf.png,/mods/ITEMS/mcl_books/textures,default_bookshelf.png,,,,,,, +/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_books/textures,mcl_books_bookshelf_top.png,,,,,,, +/assets/minecraft/textures/blocks,bookshelf_top.png,/mods/ITEMS/mcl_books/textures,mcl_books_bookshelf_top.png,,,,,,, +/assets/minecraft/textures/items,book_writable.png,/mods/ITEMS/mcl_books/textures,mcl_books_book_writable.png,,,,,,, +/assets/minecraft/textures/items,book_written.png,/mods/ITEMS/mcl_books/textures,mcl_books_book_written.png,,,,,,, +/assets/minecraft/textures/items,cake.png,/mods/ITEMS/mcl_cake/textures,cake.png,,,,,,, +/assets/minecraft/textures/blocks,cake_bottom.png,/mods/ITEMS/mcl_cake/textures,cake_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,cake_top.png,/mods/ITEMS/mcl_cake/textures,cake_top.png,,,,,,, +/assets/minecraft/textures/blocks,cake_side.png,/mods/ITEMS/mcl_cake/textures,cake_side.png,,,,,,, +/assets/minecraft/textures/blocks,cake_inner.png,/mods/ITEMS/mcl_cake/textures,cake_inner.png,,,,,,, +/assets/minecraft/textures/items,cauldron.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron.png,,,,,,, +/assets/minecraft/textures/blocks,cauldron_bottom.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,cauldron_top.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_top.png,,,,,,, +/assets/minecraft/textures/blocks,cauldron_side.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_side.png,,,,,,, +/assets/minecraft/textures/blocks,cauldron_inner.png,/mods/ITEMS/mcl_cauldrons/textures,mcl_cauldrons_cauldron_inner.png,,,,,,, +/assets/minecraft/textures/items,clock.png,/mods/ITEMS/mcl_clock/textures,mcl_clock_clock.png,,,,,,, +/assets/minecraft/textures/blocks,cocoa_stage_0.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_0.png,,,,,,,y +/assets/minecraft/textures/blocks,cocoa_stage_1.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_1.png,,,,,,,y +/assets/minecraft/textures/blocks,cocoa_stage_2.png,/mods/ITEMS/mcl_cocoas/textures,mcl_cocoas_cocoa_stage_2.png,,,,,,,y +/assets/minecraft/textures/blocks,hardened_clay.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_black.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_black.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_blue.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_blue.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_brown.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_brown.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_gray.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_grey.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_green.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_green.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_lime.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_lime.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_orange.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_orange.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_pink.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_pink.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_purple.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_purple.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_red.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_red.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_silver.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_silver.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_white.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_white.png,,,,,,, +/assets/minecraft/textures/blocks,hardened_clay_stained_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,hardened_clay_stained_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_black.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_blue.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_brown.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_grey.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_green.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_lime.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_orange.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_pink.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_purple.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_red.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_silver.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_white.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_black.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_blue.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_brown.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_grey.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_green.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_lime.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_orange.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_pink.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_purple.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_red.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_silver.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_white.png,,,,,,, +/assets/minecraft/textures/blocks,concrete_powder_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_concrete_powder_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_black.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_black.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_blue.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_brown.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_brown.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_cyan.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_gray.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_grey.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_green.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_green.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_light_blue.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_lime.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_lime.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_magenta.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_orange.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_orange.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_pink.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_pink.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_purple.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_purple.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_red.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_red.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_silver.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_silver.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_white.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_white.png,,,,,,, +/assets/minecraft/textures/blocks,glazed_terracotta_yellow.png,/mods/ITEMS/mcl_colorblocks/textures,mcl_colorblocks_glazed_terracotta_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,sapling_oak.png,/mods/ITEMS/mcl_core/textures,default_sapling.png,,,,,,, +/assets/minecraft/textures/blocks,sapling_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_sapling.png,,,,,,, +/assets/minecraft/textures/blocks,sapling_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_spruce.png,,,,,,, +/assets/minecraft/textures/blocks,sapling_jungle.png,/mods/ITEMS/mcl_core/textures,default_junglesapling.png,,,,,,, +/assets/minecraft/textures/blocks,sapling_roofed_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,sapling_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_sapling_birch.png,,,,,,, +/assets/minecraft/textures/items,apple.png,/mods/ITEMS/mcl_core/textures,default_apple.png,,,,,,, +/assets/minecraft/textures/items,apple_golden.png,/mods/ITEMS/mcl_core/textures,mcl_core_apple_golden.png,,,,,,, +/assets/minecraft/textures/blocks,brick.png,/mods/ITEMS/mcl_core/textures,default_brick.png,,,,,,, +/assets/minecraft/textures/blocks,cactus_side.png,/mods/ITEMS/mcl_core/textures,default_cactus_side.png,,,,,,, +/assets/minecraft/textures/blocks,cactus_top.png,/mods/ITEMS/mcl_core/textures,default_cactus_top.png,,,,,,, +/assets/minecraft/textures/blocks,cactus_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_bottom.png,,,,,,, +/assets/minecraft/textures/items,brick.png,/mods/ITEMS/mcl_core/textures,default_clay_brick.png,,,,,,, +/assets/minecraft/textures/items,clay_ball.png,/mods/ITEMS/mcl_core/textures,default_clay_lump.png,,,,,,, +/assets/minecraft/textures/blocks,clay.png,/mods/ITEMS/mcl_core/textures,default_clay.png,,,,,,, +/assets/minecraft/textures/blocks,coal_block.png,/mods/ITEMS/mcl_core/textures,default_coal_block.png,,,,,,, +/assets/minecraft/textures/items,coal.png,/mods/ITEMS/mcl_core/textures,default_coal_lump.png,,,,,,, +/assets/minecraft/textures/blocks,cobblestone.png,/mods/ITEMS/mcl_core/textures,default_cobble.png,,,,,,, +/assets/minecraft/textures/blocks,diamond_block.png,/mods/ITEMS/mcl_core/textures,default_diamond_block.png,,,,,,, +/assets/minecraft/textures/items,diamond.png,/mods/ITEMS/mcl_core/textures,default_diamond.png,,,,,,, +/assets/minecraft/textures/blocks,dirt.png,/mods/ITEMS/mcl_core/textures,default_dirt.png,,,,,,, +/assets/minecraft/textures/blocks,deadbush.png,/mods/ITEMS/mcl_core/textures,default_dry_shrub.png,,,,,,, +/assets/minecraft/textures/blocks,log_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_tree.png,,,,,,, +/assets/minecraft/textures/blocks,log_acacia_top.png,/mods/ITEMS/mcl_core/textures,default_acacia_tree_top.png,,,,,,, +/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_core/textures,default_acacia_wood.png,,,,,,, +/assets/minecraft/textures/items,flint.png,/mods/ITEMS/mcl_core/textures,default_flint.png,,,,,,, +/assets/minecraft/textures/blocks,glass.png,/mods/ITEMS/mcl_core/textures,default_glass.png,,,,,,, +/assets/minecraft/textures/blocks,glass_black.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_black.png,,,,,,, +/assets/minecraft/textures/blocks,glass_blue.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_blue.png,,,,,,, +/assets/minecraft/textures/blocks,glass_brown.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_brown.png,,,,,,, +/assets/minecraft/textures/blocks,glass_cyan.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,glass_gray.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_gray.png,,,,,,, +/assets/minecraft/textures/blocks,glass_green.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_green.png,,,,,,, +/assets/minecraft/textures/blocks,glass_light_blue.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,glass_lime.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_lime.png,,,,,,, +/assets/minecraft/textures/blocks,glass_magenta.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,glass_orange.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_orange.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pink.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_pink.png,,,,,,, +/assets/minecraft/textures/blocks,glass_purple.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_purple.png,,,,,,, +/assets/minecraft/textures/blocks,glass_red.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_red.png,,,,,,, +/assets/minecraft/textures/blocks,glass_silver.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_silver.png,,,,,,, +/assets/minecraft/textures/blocks,glass_white.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_white.png,,,,,,, +/assets/minecraft/textures/blocks,glass_yellow.png,/mods/ITEMS/mcl_core/textures,mcl_core_glass_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,gold_block.png,/mods/ITEMS/mcl_core/textures,default_gold_block.png,,,,,,, +/assets/minecraft/textures/items,gold_ingot.png,/mods/ITEMS/mcl_core/textures,default_gold_ingot.png,,,,,,, +/assets/minecraft/textures/blocks,grass_side.png,/mods/ITEMS/mcl_core/textures,default_grass_side.png,,,,,,, +/assets/minecraft/textures/blocks,gravel.png,/mods/ITEMS/mcl_core/textures,default_gravel.png,,,,,,, +/assets/minecraft/textures/blocks,ice.png,/mods/ITEMS/mcl_core/textures,default_ice.png,,,,,,, +/assets/minecraft/textures/blocks,log_jungle.png,/mods/ITEMS/mcl_core/textures,default_jungletree.png,,,,,,, +/assets/minecraft/textures/blocks,log_jungle_top.png,/mods/ITEMS/mcl_core/textures,default_jungletree_top.png,,,,,,, +/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_core/textures,default_junglewood.png,,,,,,, +/assets/minecraft/textures/blocks,ladder.png,/mods/ITEMS/mcl_core/textures,default_ladder.png,,,,,,, +/assets/minecraft/textures/blocks,lava_still.png,/mods/ITEMS/mcl_core/textures,default_lava_source_animated.png,,,,,,, +/assets/minecraft/textures/blocks,lava_flow.png,/mods/ITEMS/mcl_core/textures,default_lava_flowing_animated.png,,,,,,, +/assets/minecraft/textures/blocks,cobblestone_mossy.png,/mods/ITEMS/mcl_core/textures,default_mossycobble.png,,,,,,, +/assets/minecraft/textures/blocks,obsidian.png,/mods/ITEMS/mcl_core/textures,default_obsidian.png,,,,,,, +/assets/minecraft/textures/items,paper.png,/mods/ITEMS/mcl_core/textures,default_paper.png,,,,,,, +/assets/minecraft/textures/blocks,reeds.png,/mods/ITEMS/mcl_core/textures,default_papyrus.png,,,,,,, +/assets/minecraft/textures/blocks,sand.png,/mods/ITEMS/mcl_core/textures,default_sand.png,,,,,,, +/assets/minecraft/textures/blocks,snow.png,/mods/ITEMS/mcl_core/textures,default_snow.png,,,,,,, +/assets/minecraft/textures/blocks,iron_block.png,/mods/ITEMS/mcl_core/textures,default_steel_block.png,,,,,,, +/assets/minecraft/textures/items,iron_ingot.png,/mods/ITEMS/mcl_core/textures,default_steel_ingot.png,,,,,,, +/assets/minecraft/textures/items,stick.png,/mods/ITEMS/mcl_core/textures,default_stick.png,,,,,,, +/assets/minecraft/textures/blocks,stonebrick.png,/mods/ITEMS/mcl_core/textures,default_stone_brick.png,,,,,,, +/assets/minecraft/textures/blocks,stone.png,/mods/ITEMS/mcl_core/textures,default_stone.png,,,,,,, +/assets/minecraft/textures/blocks,log_oak.png,/mods/ITEMS/mcl_core/textures,default_tree.png,,,,,,, +/assets/minecraft/textures/blocks,log_oak_top.png,/mods/ITEMS/mcl_core/textures,default_tree_top.png,,,,,,, +/assets/minecraft/textures/blocks,water_still.png,/mods/ITEMS/mcl_core/textures,default_water_source_animated.png,,,,,,, +/assets/minecraft/textures/blocks,water_flow.png,/mods/ITEMS/mcl_core/textures,default_water_flowing_animated.png,,,,,,, +/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_core/textures,default_wood.png,,,,,,, +/assets/minecraft/textures/blocks,stone_andesite.png,/mods/ITEMS/mcl_core/textures,mcl_core_andesite.png,,,,,,, +/assets/minecraft/textures/blocks,stone_andesite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_andesite_smooth.png,,,,,,, +/assets/minecraft/textures/items,barrier.png,/mods/ITEMS/mcl_core/textures,mcl_core_barrier.png,,,,,,, +/assets/minecraft/textures/blocks,bedrock.png,/mods/ITEMS/mcl_core/textures,mcl_core_bedrock.png,,,,,,, +/assets/minecraft/textures/blocks,bone_block_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_bone_block_side.png,,,,,,, +/assets/minecraft/textures/blocks,bone_block_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_bone_block_top.png,,,,,,, +/assets/minecraft/textures/items,bowl.png,/mods/ITEMS/mcl_core/textures,mcl_core_bowl.png,,,,,,, +/assets/minecraft/textures/blocks,cactus_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_cactus_bottom.png,,,,,,, +/assets/minecraft/textures/items,charcoal.png,/mods/ITEMS/mcl_core/textures,mcl_core_charcoal.png,,,,,,, +/assets/minecraft/textures/blocks,coal_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_coal_ore.png,,,,,,, +/assets/minecraft/textures/blocks,coarse_dirt.png,/mods/ITEMS/mcl_core/textures,mcl_core_coarse_dirt.png,,,,,,, +/assets/minecraft/textures/blocks,diamond_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_diamond_ore.png,,,,,,, +/assets/minecraft/textures/blocks,stone_diorite.png,/mods/ITEMS/mcl_core/textures,mcl_core_diorite.png,,,,,,, +/assets/minecraft/textures/blocks,stone_diorite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_diorite_smooth.png,,,,,,, +/assets/minecraft/textures/blocks,dirt_podzol_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_dirt_podzol_side.png,,,,,,, +/assets/minecraft/textures/blocks,dirt_podzol_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_dirt_podzol_top.png,,,,,,, +/assets/minecraft/textures/blocks,emerald_block.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald_block.png,,,,,,, +/assets/minecraft/textures/blocks,emerald_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald_ore.png,,,,,,, +/assets/minecraft/textures/items,emerald.png,/mods/ITEMS/mcl_core/textures,mcl_core_emerald.png,,,,,,, +/assets/minecraft/textures/blocks,frosted_ice_0.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_0.png,,,,,,, +/assets/minecraft/textures/blocks,frosted_ice_1.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_1.png,,,,,,, +/assets/minecraft/textures/blocks,frosted_ice_2.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_2.png,,,,,,, +/assets/minecraft/textures/blocks,frosted_ice_3.png,/mods/ITEMS/mcl_core/textures,mcl_core_frosted_ice_3.png,,,,,,, +/assets/minecraft/textures/items,gold_nugget.png,/mods/ITEMS/mcl_core/textures,mcl_core_gold_nugget.png,,,,,,, +/assets/minecraft/textures/blocks,gold_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_gold_ore.png,,,,,,, +/assets/minecraft/textures/blocks,stone_granite.png,/mods/ITEMS/mcl_core/textures,mcl_core_granite.png,,,,,,, +/assets/minecraft/textures/blocks,stone_granite_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_granite_smooth.png,,,,,,, +/assets/minecraft/textures/blocks,grass_path_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_path_side.png,,,,,,, +/assets/minecraft/textures/blocks,grass_path_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_path_top.png,,,,,,, +/assets/minecraft/textures/blocks,grass_side_snowed.png,/mods/ITEMS/mcl_core/textures,mcl_core_grass_side_snowed.png,,,,,,, +/assets/minecraft/textures/blocks,ice_packed.png,/mods/ITEMS/mcl_core/textures,mcl_core_ice_packed.png,,,,,,, +/assets/minecraft/textures/items,iron_nugget.png,/mods/ITEMS/mcl_core/textures,mcl_core_iron_nugget.png,,,,,,, +/assets/minecraft/textures/blocks,iron_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_iron_ore.png,,,,,,, +/assets/minecraft/textures/blocks,lapis_block.png,/mods/ITEMS/mcl_core/textures,mcl_core_lapis_block.png,,,,,,, +/assets/minecraft/textures/blocks,lapis_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_lapis_ore.png,,,,,,, +/assets/minecraft/textures/blocks,log_big_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,log_big_oak_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_big_oak_top.png,,,,,,, +/assets/minecraft/textures/blocks,log_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_birch.png,,,,,,, +/assets/minecraft/textures/blocks,log_birch_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_birch_top.png,,,,,,, +/assets/minecraft/textures/blocks,log_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_spruce.png,,,,,,, +/assets/minecraft/textures/blocks,log_spruce_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_log_spruce_top.png,,,,,,, +/assets/minecraft/textures/blocks,mycelium_side.png,/mods/ITEMS/mcl_core/textures,mcl_core_mycelium_side.png,,,,,,, +/assets/minecraft/textures/blocks,mycelium_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_mycelium_top.png,,,,,,, +/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_birch.png,,,,,,, +/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_core/textures,mcl_core_planks_spruce.png,,,,,,, +/assets/minecraft/textures/blocks,red_sand.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sand.png,,,,,,, +/assets/minecraft/textures/blocks,red_sandstone_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,red_sandstone_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_carved.png,,,,,,, +/assets/minecraft/textures/blocks,red_sandstone_normal.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_normal.png,,,,,,, +/assets/minecraft/textures/blocks,red_sandstone_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_smooth.png,,,,,,, +/assets/minecraft/textures/blocks,red_sandstone_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_red_sandstone_top.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_ore.png,/mods/ITEMS/mcl_core/textures,mcl_core_redstone_ore.png,,,,,,, +/assets/minecraft/textures/items,reeds.png,/mods/ITEMS/mcl_core/textures,mcl_core_reeds.png,,,,,,, +/assets/minecraft/textures/blocks,sandstone_bottom.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,sandstone_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_carved.png,,,,,,, +/assets/minecraft/textures/blocks,sandstone_normal.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_normal.png,,,,,,, +/assets/minecraft/textures/blocks,sandstone_smooth.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_smooth.png,,,,,,, +/assets/minecraft/textures/blocks,sandstone_top.png,/mods/ITEMS/mcl_core/textures,mcl_core_sandstone_top.png,,,,,,, +/assets/minecraft/textures/blocks,slime.png,/mods/ITEMS/mcl_core/textures,mcl_core_slime.png,,,,,,, +/assets/minecraft/textures/blocks,stonebrick_carved.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_carved.png,,,,,,, +/assets/minecraft/textures/blocks,stonebrick_cracked.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_cracked.png,,,,,,, +/assets/minecraft/textures/blocks,stonebrick_mossy.png,/mods/ITEMS/mcl_core/textures,mcl_core_stonebrick_mossy.png,,,,,,, +/assets/minecraft/textures/items,sugar.png,/mods/ITEMS/mcl_core/textures,mcl_core_sugar.png,,,,,,, +/assets/minecraft/textures/blocks,web.png,/mods/ITEMS/mcl_core/textures,mcl_core_web.png,,,,,,, +/assets/minecraft/textures/blocks,crafting_table_front.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_front.png,,,,,,, +/assets/minecraft/textures/blocks,crafting_table_side.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_side.png,,,,,,, +/assets/minecraft/textures/blocks,crafting_table_top.png,/mods/ITEMS/mcl_crafting_table/textures,crafting_workbench_top.png,,,,,,, +/assets/minecraft/textures/blocks,door_acacia_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_acacia_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_acacia_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_acacia_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_birch_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_birch_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_birch_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_birch_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_dark_oak_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_dark_oak_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_dark_oak_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_dark_oak_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_iron_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_iron_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_iron_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_iron_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_iron_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_jungle_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_jungle_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_jungle_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_jungle_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_spruce_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_spruce_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_spruce_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_spruce_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_wood_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_wood_lower.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_side_lower.png,,,,,,, +/assets/minecraft/textures/blocks,door_wood_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_upper.png,,,,,,, +/assets/minecraft/textures/blocks,door_wood_upper.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_wood_side_upper.png,,,,,,, +/assets/minecraft/textures/blocks,trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor.png,,,,,,, +/assets/minecraft/textures/blocks,iron_trapdoor.png,/mods/ITEMS/mcl_doors/textures,doors_trapdoor_steel.png,,,,,,, +/assets/minecraft/textures/items,door_acacia.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_acacia.png,,,,,,, +/assets/minecraft/textures/items,door_birch.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_birch.png,,,,,,, +/assets/minecraft/textures/items,door_dark_oak.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_dark_oak.png,,,,,,, +/assets/minecraft/textures/items,door_jungle.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_jungle.png,,,,,,, +/assets/minecraft/textures/items,door_spruce.png,/mods/ITEMS/mcl_doors/textures,mcl_doors_door_spruce.png,,,,,,, +/assets/minecraft/textures/items,door_wood.png,/mods/ITEMS/mcl_doors/textures,doors_item_wood.png,,,,,,, +/assets/minecraft/textures/items,door_iron.png,/mods/ITEMS/mcl_doors/textures,doors_item_steel.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_black.png,/mods/ITEMS/mcl_dye/textures,dye_black.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_blue.png,/mods/ITEMS/mcl_dye/textures,dye_blue.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_brown.png,/mods/ITEMS/mcl_dye/textures,dye_brown.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_cyan.png,/mods/ITEMS/mcl_dye/textures,dye_cyan.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_gray.png,/mods/ITEMS/mcl_dye/textures,dye_dark_grey.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_green.png,/mods/ITEMS/mcl_dye/textures,dye_dark_green.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_light_blue.png,/mods/ITEMS/mcl_dye/textures,dye_lightblue.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_lime.png,/mods/ITEMS/mcl_dye/textures,dye_green.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_magenta.png,/mods/ITEMS/mcl_dye/textures,dye_magenta.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_orange.png,/mods/ITEMS/mcl_dye/textures,dye_orange.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_pink.png,/mods/ITEMS/mcl_dye/textures,dye_pink.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_purple.png,/mods/ITEMS/mcl_dye/textures,dye_violet.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_red.png,/mods/ITEMS/mcl_dye/textures,dye_red.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_silver.png,/mods/ITEMS/mcl_dye/textures,dye_grey.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_white.png,/mods/ITEMS/mcl_dye/textures,dye_white.png,,,,,,, +/assets/minecraft/textures/items,dye_powder_yellow.png,/mods/ITEMS/mcl_dye/textures,dye_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,chorus_flower_dead.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_flower_dead.png,,,,,,, +/assets/minecraft/textures/blocks,chorus_flower.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_flower.png,,,,,,, +/assets/minecraft/textures/items,chorus_fruit.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_fruit.png,,,,,,, +/assets/minecraft/textures/items,chorus_fruit_popped.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_fruit_popped.png,,,,,,, +/assets/minecraft/textures/blocks,chorus_plant.png,/mods/ITEMS/mcl_end/textures,mcl_end_chorus_plant.png,,,,,,, +/assets/minecraft/textures/blocks,dragon_egg.png,/mods/ITEMS/mcl_end/textures,mcl_end_dragon_egg.png,,,,,,, +/assets/minecraft/textures/blocks,end_bricks.png,/mods/ITEMS/mcl_end/textures,mcl_end_end_bricks.png,,,,,,, +/assets/minecraft/textures/items,ender_eye.png,/mods/ITEMS/mcl_end/textures,mcl_end_ender_eye.png,,,,,,, +/assets/minecraft/textures/blocks,endframe_eye.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_eye.png,,,,,,, +/assets/minecraft/textures/blocks,endframe_side.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_side.png,,,,,,, +/assets/minecraft/textures/blocks,endframe_top.png,/mods/ITEMS/mcl_end/textures,mcl_end_endframe_top.png,,,,,,, +/assets/minecraft/textures/blocks,end_stone.png,/mods/ITEMS/mcl_end/textures,mcl_end_end_stone.png,,,,,,, +/assets/minecraft/textures/blocks,purpur_block.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_block.png,,,,,,, +/assets/minecraft/textures/blocks,purpur_pillar.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_pillar.png,,,,,,, +/assets/minecraft/textures/blocks,purpur_pillar_top.png,/mods/ITEMS/mcl_end/textures,mcl_end_purpur_pillar_top.png,,,,,,, +/assets/minecraft/textures/blocks,potatoes_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_0.png,,,,,,, +/assets/minecraft/textures/blocks,potatoes_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_1.png,,,,,,, +/assets/minecraft/textures/blocks,potatoes_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_2.png,,,,,,, +/assets/minecraft/textures/blocks,potatoes_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_potatoes_stage_3.png,,,,,,, +/assets/minecraft/textures/items,pumpkin_pie.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_pie.png,,,,,,, +/assets/minecraft/textures/items,bread.png,/mods/ITEMS/mcl_farming/textures,farming_bread.png,,,,,,, +/assets/minecraft/textures/blocks,carrots_stage_0.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_1.png,,,,,,, +/assets/minecraft/textures/blocks,carrots_stage_1.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_2.png,,,,,,, +/assets/minecraft/textures/blocks,carrots_stage_2.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_3.png,,,,,,, +/assets/minecraft/textures/blocks,carrots_stage_3.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_4.png,,,,,,, +/assets/minecraft/textures/items,carrot_golden.png,/mods/ITEMS/mcl_farming/textures,farming_carrot_gold.png,,,,,,, +/assets/minecraft/textures/items,carrot.png,/mods/ITEMS/mcl_farming/textures,farming_carrot.png,,,,,,, +/assets/minecraft/textures/items,cookie.png,/mods/ITEMS/mcl_farming/textures,farming_cookie.png,,,,,,, +/assets/minecraft/textures/items,melon.png,/mods/ITEMS/mcl_farming/textures,farming_melon.png,,,,,,, +/assets/minecraft/textures/items,seeds_melon.png,/mods/ITEMS/mcl_farming/textures,farming_melon_seed.png,,,,,,, +/assets/minecraft/textures/blocks,melon_side.png,/mods/ITEMS/mcl_farming/textures,farming_melon_side.png,,,,,,, +/assets/minecraft/textures/blocks,melon_top.png,/mods/ITEMS/mcl_farming/textures,farming_melon_top.png,,,,,,, +/assets/minecraft/textures/items,potato_baked.png,/mods/ITEMS/mcl_farming/textures,farming_potato_baked.png,,,,,,, +/assets/minecraft/textures/items,potato.png,/mods/ITEMS/mcl_farming/textures,farming_potato.png,,,,,,, +/assets/minecraft/textures/items,potato_poisonous.png,/mods/ITEMS/mcl_farming/textures,farming_potato_poison.png,,,,,,, +/assets/minecraft/textures/blocks,pumpkin_face_on.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_face_light.png,,,,,,, +/assets/minecraft/textures/blocks,pumpkin_face_off.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_face.png,,,,,,, +/assets/minecraft/textures/items,seeds_pumpkin.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_seed.png,,,,,,, +/assets/minecraft/textures/blocks,pumpkin_side.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_side.png,,,,,,, +/assets/minecraft/textures/blocks,pumpkin_top.png,/mods/ITEMS/mcl_farming/textures,farming_pumpkin_top.png,,,,,,, +/assets/minecraft/textures/blocks,farmland_dry.png,/mods/ITEMS/mcl_farming/textures,farming_soil.png,,,,,,, +/assets/minecraft/textures/blocks,farmland_wet.png,/mods/ITEMS/mcl_farming/textures,farming_soil_wet.png,,,,,,, +/assets/minecraft/textures/items,diamond_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_diamondhoe.png,,,,,,, +/assets/minecraft/textures/items,gold_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_goldhoe.png,,,,,,, +/assets/minecraft/textures/items,iron_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_steelhoe.png,,,,,,, +/assets/minecraft/textures/items,stone_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_stonehoe.png,,,,,,, +/assets/minecraft/textures/items,wood_hoe.png,/mods/ITEMS/mcl_farming/textures,farming_tool_woodhoe.png,,,,,,, +/assets/minecraft/textures/items,wheat.png,/mods/ITEMS/mcl_farming/textures,farming_wheat_harvested.png,,,,,,, +/assets/minecraft/textures/items,seeds_wheat.png,/mods/ITEMS/mcl_farming/textures,farming_wheat_seed.png,,,,,,, +/assets/minecraft/textures/blocks,beetroots_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_0.png,,,,,,, +/assets/minecraft/textures/blocks,beetroots_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_1.png,,,,,,, +/assets/minecraft/textures/blocks,beetroots_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_2.png,,,,,,, +/assets/minecraft/textures/blocks,beetroots_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_3.png,,,,,,, +/assets/minecraft/textures/items,beetroot.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot.png,,,,,,, +/assets/minecraft/textures/items,beetroot_seeds.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_seeds.png,,,,,,, +/assets/minecraft/textures/items,beetroot_soup.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_beetroot_soup.png,,,,,,, +/assets/minecraft/textures/blocks,hay_block_side.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_hayblock_side.png,,,,,,, +/assets/minecraft/textures/blocks,hay_block_top.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_hayblock_top.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_0.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_0.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_1.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_1.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_2.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_2.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_3.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_3.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_4.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_4.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_5.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_5.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_6.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_6.png,,,,,,, +/assets/minecraft/textures/blocks,wheat_stage_7.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_wheat_stage_7.png,,,,,,, +/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,fire_basic_flame_animated.png,,,,,,, +/assets/minecraft/textures/blocks,fire_layer_0.png,/mods/ITEMS/mcl_fire/textures,fire_basic_flame.png,0,0,16,16,0,0,y +/assets/minecraft/textures/items,fireball.png,/mods/ITEMS/mcl_fire/textures,mcl_fire_fire_charge.png,,,,,,, +/assets/minecraft/textures/items,flint_and_steel.png,/mods/ITEMS/mcl_fire/textures,mcl_fire_flint_and_steel.png,,,,,,, +/assets/minecraft/textures/items,fish_clownfish_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_clownfish_raw.png,,,,,,, +/assets/minecraft/textures/items,fish_cod_cooked.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fish_cooked.png,,,,,,, +/assets/minecraft/textures/items,fishing_rod_uncast.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fishing_rod.png,,,,,,, +/assets/minecraft/textures/items,fish_cod_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_fish_raw.png,,,,,,, +/assets/minecraft/textures/items,fish_pufferfish_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_pufferfish_raw.png,,,,,,, +/assets/minecraft/textures/items,fish_salmon_cooked.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_salmon_cooked.png,,,,,,, +/assets/minecraft/textures/items,fish_salmon_raw.png,/mods/ITEMS/mcl_fishing/textures,mcl_fishing_salmon_raw.png,,,,,,, +/assets/minecraft/textures/blocks,flower_allium.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_allium.png,,,,,,, +/assets/minecraft/textures/blocks,flower_houstonia.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_azure_bluet.png,,,,,,, +/assets/minecraft/textures/blocks,flower_blue_orchid.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_blue_orchid.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_paeonia_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_paeonia_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_paeonia_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_paeonia_top.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_rose_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_rose_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_rose_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_rose_top.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_sunflower_back.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_back.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_sunflower_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_sunflower_front.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_front.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_sunflower_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_sunflower_top.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_syringa_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_syringa_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_syringa_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_syringa_top.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_grass_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_grass_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_grass_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_grass_top.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_fern_bottom.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_fern_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,double_plant_fern_top.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_double_plant_fern_top.png,,,,,,, +/assets/minecraft/textures/blocks,tallgrass.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tallgrass.png,,,,,,, +/assets/minecraft/textures/blocks,fern.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_fern.png,,,,,,, +/assets/minecraft/textures/blocks,flower_oxeye_daisy.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_oxeye_daisy.png,,,,,,, +/assets/minecraft/textures/blocks,flower_rose.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_poppy.png,,,,,,, +/assets/minecraft/textures/blocks,flower_tulip_pink.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_pink.png,,,,,,, +/assets/minecraft/textures/blocks,flower_tulip_red.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_red.png,,,,,,, +/assets/minecraft/textures/blocks,flower_tulip_white.png,/mods/ITEMS/mcl_flowers/textures,mcl_flowers_tulip_white.png,,,,,,, +/assets/minecraft/textures/blocks,flower_dandelion.png,/mods/ITEMS/mcl_flowers/textures,flowers_dandelion_yellow.png,,,,,,, +/assets/minecraft/textures/blocks,flower_tulip_orange.png,/mods/ITEMS/mcl_flowers/textures,flowers_tulip.png,,,,,,, +/assets/minecraft/textures/blocks,furnace_front_off.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_front.png,,,,,,, +/assets/minecraft/textures/blocks,furnace_front_on.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_front_active.png,,,,,,, +/assets/minecraft/textures/blocks,furnace_side.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_side.png,,,,,,, +/assets/minecraft/textures/blocks,furnace_top.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_top.png,,,,,,, +/assets/minecraft/textures/blocks,furnace_top.png,/mods/ITEMS/mcl_furnaces/textures,default_furnace_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,hopper_inside.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_inside.png,,,,,,, +/assets/minecraft/textures/blocks,hopper_outside.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_outside.png,,,,,,, +/assets/minecraft/textures/blocks,hopper_top.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_hopper_top.png,,,,,,, +/assets/minecraft/textures/items,hopper.png,/mods/ITEMS/mcl_hoppers/textures,mcl_hoppers_item.png,,,,,,, +/assets/minecraft/textures/items,record_11.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_11.png,,,,,,, +/assets/minecraft/textures/items,record_13.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_13.png,,,,,,, +/assets/minecraft/textures/items,record_blocks.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_blocks.png,,,,,,, +/assets/minecraft/textures/items,record_cat.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_cat.png,,,,,,, +/assets/minecraft/textures/items,record_chirp.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_chirp.png,,,,,,, +/assets/minecraft/textures/items,record_far.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_far.png,,,,,,, +/assets/minecraft/textures/items,record_mall.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_mall.png,,,,,,, +/assets/minecraft/textures/items,record_mellohi.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_mellohi.png,,,,,,, +/assets/minecraft/textures/items,record_stal.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_stal.png,,,,,,, +/assets/minecraft/textures/items,record_strad.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_strad.png,,,,,,, +/assets/minecraft/textures/items,record_wait.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_wait.png,,,,,,, +/assets/minecraft/textures/items,record_ward.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_record_ward.png,,,,,,, +/assets/minecraft/textures/blocks,jukebox_side.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_side.png,,,,,,, +/assets/minecraft/textures/blocks,jukebox_top.png,/mods/ITEMS/mcl_jukebox/textures,mcl_jukebox_top.png,,,,,,, +/assets/minecraft/textures/items,map_empty.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_empty.png,,,,,,, +/assets/minecraft/textures/items,map_filled_markings.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_filled_markings.png,,,,,,, +/assets/minecraft/textures/items,map_filled.png,/mods/ITEMS/mcl_maps/textures,mcl_maps_map_filled.png,,,,,,, +/assets/minecraft/textures/blocks,rail_golden.png,/mods/ENTITIES/mcl_minecarts/textures,carts_rail_pwr.png,,,,,,, +/assets/minecraft/textures/blocks,rail_golden_powered.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_golden_powered.png,,,,,,, +/assets/minecraft/textures/blocks,rail_normal_turned.png,/mods/ENTITIES/mcl_minecarts/textures,default_rail_curved.png,,,,,,, +/assets/minecraft/textures/blocks,rail_normal.png,/mods/ENTITIES/mcl_minecarts/textures,default_rail.png,,,,,,, +/assets/minecraft/textures/blocks,rail_detector.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_detector.png,,,,,,, +/assets/minecraft/textures/blocks,rail_detector_powered.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_detector_powered.png,,,,,,, +/assets/minecraft/textures/blocks,rail_activator.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_activator.png,,,,,,, +/assets/minecraft/textures/blocks,rail_activator_powered.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_rail_activator_powered.png,,,,,,, +/assets/minecraft/textures/items,minecart_normal.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_normal.png,,,,,,, +/assets/minecraft/textures/items,minecart_chest.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_chest.png,,,,,,, +/assets/minecraft/textures/items,minecart_tnt.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_tnt.png,,,,,,, +/assets/minecraft/textures/items,minecart_command_block.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_command_block.png,,,,,,, +/assets/minecraft/textures/items,minecart_furnace.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_furnace.png,,,,,,, +/assets/minecraft/textures/items,minecart_hopper.png,/mods/ENTITIES/mcl_minecarts/textures,mcl_minecarts_minecart_hopper.png,,,,,,, +/assets/minecraft/textures/items,gunpowder.png,/mods/ITEMS/mcl_mobitems/textures,default_gunpowder.png,,,,,,, +/assets/minecraft/textures/items,beef_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_beef_cooked.png,,,,,,, +/assets/minecraft/textures/items,beef_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_beef_raw.png,,,,,,, +/assets/minecraft/textures/items,blaze_powder.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_blaze_powder.png,,,,,,, +/assets/minecraft/textures/items,blaze_rod.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_blaze_rod.png,,,,,,, +/assets/minecraft/textures/items,bone.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_bone.png,,,,,,, +/assets/minecraft/textures/items,bucket_milk.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_bucket_milk.png,,,,,,, +/assets/minecraft/textures/items,carrot_on_a_stick.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_carrot_on_a_stick.png,,,,,,, +/assets/minecraft/textures/items,chicken_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_chicken_cooked.png,,,,,,, +/assets/minecraft/textures/items,chicken_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_chicken_raw.png,,,,,,, +/assets/minecraft/textures/items,feather.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_feather.png,,,,,,, +/assets/minecraft/textures/items,ghast_tear.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_ghast_tear.png,,,,,,, +/assets/minecraft/textures/items,leather.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_leather.png,,,,,,, +/assets/minecraft/textures/items,magma_cream.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_magma_cream.png,,,,,,, +/assets/minecraft/textures/items,mutton_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_mutton_cooked.png,,,,,,, +/assets/minecraft/textures/items,mutton_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_mutton_raw.png,,,,,,, +/assets/minecraft/textures/items,nether_star.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_nether_star.png,,,,,,, +/assets/minecraft/textures/items,porkchop_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_porkchop_cooked.png,,,,,,, +/assets/minecraft/textures/items,porkchop_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_porkchop_raw.png,,,,,,, +/assets/minecraft/textures/items,rabbit_cooked.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_cooked.png,,,,,,, +/assets/minecraft/textures/items,rabbit_foot.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_foot.png,,,,,,, +/assets/minecraft/textures/items,rabbit_hide.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_hide.png,,,,,,, +/assets/minecraft/textures/items,rabbit_raw.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_raw.png,,,,,,, +/assets/minecraft/textures/items,rabbit_stew.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rabbit_stew.png,,,,,,, +/assets/minecraft/textures/items,rotten_flesh.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_rotten_flesh.png,,,,,,, +/assets/minecraft/textures/items,saddle.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_saddle.png,,,,,,, +/assets/minecraft/textures/items,shulker_shell.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_shulker_shell.png,,,,,,, +/assets/minecraft/textures/items,slimeball.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_slimeball.png,,,,,,, +/assets/minecraft/textures/items,spider_eye.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_spider_eye.png,,,,,,, +/assets/minecraft/textures/items,string.png,/mods/ITEMS/mcl_mobitems/textures,mcl_mobitems_string.png,,,,,,, +/assets/minecraft/textures/blocks,mob_spawner.png,/mods/ITEMS/mcl_mobspawners/textures,mob_spawner.png,,,,,,, +/assets/minecraft/textures/blocks,mushroom_brown.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_brown.png,,,,,,, +/assets/minecraft/textures/blocks,mushroom_red.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_red.png,,,,,,, +/assets/minecraft/textures/items,mushroom_stew.png,/mods/ITEMS/mcl_mushrooms/textures,farming_mushroom_stew.png,,,,,,, +/assets/minecraft/textures/blocks,mushroom_block_inside.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_inside.png,,,,,,, +/assets/minecraft/textures/blocks,mushroom_block_skin_brown.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_brown.png,,,,,,, +/assets/minecraft/textures/blocks,mushroom_block_skin_red.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_red.png,,,,,,, +/assets/minecraft/textures/blocks,mushroom_block_skin_stem.png,/mods/ITEMS/mcl_mushrooms/textures,mcl_mushrooms_mushroom_block_skin_stem.png,,,,,,, +/assets/minecraft/textures/items,glowstone_dust.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_glowstone_dust.png,,,,,,, +/assets/minecraft/textures/blocks,glowstone.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_glowstone.png,,,,,,, +/assets/minecraft/textures/blocks,magma.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_magma.png,,,,,,, +/assets/minecraft/textures/blocks,nether_brick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_brick.png,,,,,,, +/assets/minecraft/textures/items,netherbrick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_netherbrick.png,,,,,,, +/assets/minecraft/textures/blocks,netherrack.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_netherrack.png,,,,,,, +/assets/minecraft/textures/blocks,nether_wart_block.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_block.png,,,,,,, +/assets/minecraft/textures/items,nether_wart.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart.png,,,,,,, +/assets/minecraft/textures/blocks,nether_wart_stage_0.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_0.png,,,,,,, +/assets/minecraft/textures/blocks,nether_wart_stage_1.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_1.png,,,,,,, +/assets/minecraft/textures/blocks,nether_wart_stage_2.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_nether_wart_stage_2.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_bottom.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_side.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_side.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_block_top.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_chiseled.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_chiseled_side.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_chiseled_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_chiseled_top.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_ore.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_ore.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_lines.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_pillar_side.png,,,,,,, +/assets/minecraft/textures/blocks,quartz_block_lines_top.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz_pillar_top.png,,,,,,, +/assets/minecraft/textures/items,quartz.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_quartz.png,,,,,,, +/assets/minecraft/textures/blocks,red_nether_brick.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_red_nether_brick.png,,,,,,, +/assets/minecraft/textures/blocks,soul_sand.png,/mods/ITEMS/mcl_nether/textures,mcl_nether_soul_sand.png,,,,,,, +/assets/minecraft/textures/blocks,prismarine_rough.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_anim.png,,,,,,, +/assets/minecraft/textures/blocks,prismarine_bricks.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_bricks.png,,,,,,, +/assets/minecraft/textures/items,prismarine_crystals.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_crystals.png,,,,,,, +/assets/minecraft/textures/blocks,prismarine_dark.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_dark.png,,,,,,, +/assets/minecraft/textures/items,prismarine_shard.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_prismarine_shard.png,,,,,,, +/assets/minecraft/textures/blocks,sea_lantern.png,/mods/ITEMS/mcl_ocean/textures,mcl_ocean_sea_lantern.png,,,,,,, +/assets/minecraft/textures/items,dragon_breath.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_dragon_breath.png,,,,,,, +/assets/minecraft/textures/items,melon_speckled.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_melon_speckled.png,,,,,,, +/assets/minecraft/textures/items,potion_bottle_drinkable.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_bottle_drinkable.png,,,,,,, +/assets/minecraft/textures/items,potion_bottle_empty.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_bottle_empty.png,,,,,,, +/assets/minecraft/textures/items,potion_overlay.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_potion_overlay.png,,,,,,, +/assets/minecraft/textures/items,spider_eye_fermented.png,/mods/ITEMS/mcl_potions/textures,mcl_potions_spider_eye_fermented.png,,,,,,, +/assets/minecraft/textures/blocks,sponge.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge.png,,,,,,, +/assets/minecraft/textures/blocks,sponge_wet.png,/mods/ITEMS/mcl_sponges/textures,mcl_sponges_sponge_wet.png,,,,,,, +/assets/minecraft/textures/blocks,stone_slab_side.png,/mods/ITEMS/mcl_stairs/textures,mcl_stairs_stone_slab_side.png,,,,,,, +/assets/minecraft/textures/blocks,stone_slab_top.png,/mods/ITEMS/mcl_stairs/textures,mcl_stairs_stone_slab_top.png,,,,,,, +/assets/minecraft/textures/items,arrow.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_arrow_inv.png,,,,,,, +/assets/minecraft/textures/items,bow_pulling_0.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow_0.png,,,,,,, +/assets/minecraft/textures/items,bow_pulling_1.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow_1.png,,,,,,, +/assets/minecraft/textures/items,bow_pulling_2.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow_2.png,,,,,,, +/assets/minecraft/textures/items,bow_standby.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_bow.png,,,,,,, +/assets/minecraft/textures/items,egg.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_egg.png,,,,,,, +/assets/minecraft/textures/items,ender_pearl.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_ender_pearl.png,,,,,,, +/assets/minecraft/textures/items,snowball.png,/mods/ITEMS/mcl_throwing/textures,mcl_throwing_snowball.png,,,,,,, +/assets/minecraft/textures/blocks,tnt_bottom.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,tnt_side.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_side.png,,,,,,, +/assets/minecraft/textures/blocks,tnt_top.png,/mods/ITEMS/mcl_tnt/textures,default_tnt_top.png,,,,,,, +/assets/minecraft/textures/items,diamond_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondaxe.png,,,,,,, +/assets/minecraft/textures/items,diamond_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondpick.png,,,,,,, +/assets/minecraft/textures/items,diamond_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondshovel.png,,,,,,, +/assets/minecraft/textures/items,diamond_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_diamondsword.png,,,,,,, +/assets/minecraft/textures/items,gold_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldaxe.png,,,,,,, +/assets/minecraft/textures/items,gold_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldpick.png,,,,,,, +/assets/minecraft/textures/items,gold_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldshovel.png,,,,,,, +/assets/minecraft/textures/items,gold_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_goldsword.png,,,,,,, +/assets/minecraft/textures/items,shears.png,/mods/ITEMS/mcl_tools/textures,default_tool_shears.png,,,,,,, +/assets/minecraft/textures/items,iron_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelaxe.png,,,,,,, +/assets/minecraft/textures/items,iron_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelpick.png,,,,,,, +/assets/minecraft/textures/items,iron_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelshovel.png,,,,,,, +/assets/minecraft/textures/items,iron_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_steelsword.png,,,,,,, +/assets/minecraft/textures/items,stone_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_stoneaxe.png,,,,,,, +/assets/minecraft/textures/items,stone_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_stonepick.png,,,,,,, +/assets/minecraft/textures/items,stone_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_stoneshovel.png,,,,,,, +/assets/minecraft/textures/items,stone_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_stonesword.png,,,,,,, +/assets/minecraft/textures/items,wood_axe.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodaxe.png,,,,,,, +/assets/minecraft/textures/items,wood_pickaxe.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodpick.png,,,,,,, +/assets/minecraft/textures/items,wood_shovel.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodshovel.png,,,,,,, +/assets/minecraft/textures/items,wood_sword.png,/mods/ITEMS/mcl_tools/textures,default_tool_woodsword.png,,,,,,, +/assets/minecraft/textures/blocks,torch_on.png,/mods/ITEMS/mcl_torches/textures,default_torch_on_floor_animated.png,,,,,,, +/assets/minecraft/textures/blocks,torch_on.png,/mods/ITEMS/mcl_torches/textures,default_torch_on_floor.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_black.png,/mods/ITEMS/mcl_wool/textures,wool_black.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_blue.png,/mods/ITEMS/mcl_wool/textures,wool_blue.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_brown.png,/mods/ITEMS/mcl_wool/textures,wool_brown.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_cyan.png,/mods/ITEMS/mcl_wool/textures,wool_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_gray.png,/mods/ITEMS/mcl_wool/textures,wool_dark_grey.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_green.png,/mods/ITEMS/mcl_wool/textures,wool_green.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_silver.png,/mods/ITEMS/mcl_wool/textures,wool_grey.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_light_blue.png,/mods/ITEMS/mcl_wool/textures,wool_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_lime.png,/mods/ITEMS/mcl_wool/textures,wool_lime.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_magenta.png,/mods/ITEMS/mcl_wool/textures,wool_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_orange.png,/mods/ITEMS/mcl_wool/textures,wool_orange.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_pink.png,/mods/ITEMS/mcl_wool/textures,wool_pink.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_red.png,/mods/ITEMS/mcl_wool/textures,wool_red.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_purple.png,/mods/ITEMS/mcl_wool/textures,wool_violet.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_white.png,/mods/ITEMS/mcl_wool/textures,wool_white.png,,,,,,, +/assets/minecraft/textures/blocks,wool_colored_yellow.png,/mods/ITEMS/mcl_wool/textures,wool_yellow.png,,,,,,, +/assets/minecraft/textures/items,chainmail_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_boots.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_boots_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_chestplate.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_chestplate_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_helmet.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_helmet_leather.png,,,,,,, +/assets/minecraft/textures/items,chainmail_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_chain.png,,,,,,, +/assets/minecraft/textures/items,diamond_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_diamond.png,,,,,,, +/assets/minecraft/textures/items,gold_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_gold.png,,,,,,, +/assets/minecraft/textures/items,iron_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_iron.png,,,,,,, +/assets/minecraft/textures/items,leather_leggings.png,/mods/ITEMS/minetest-3d_armor/3d_armor/textures,3d_armor_inv_leggings_leather.png,,,,,,, +/assets/minecraft/textures/items,wooden_armorstand.png,/mods/ITEMS/minetest-3d_armor/3d_armor_stand/textures,3d_armor_stand_item.png,,,,,,, +/assets/minecraft/textures/blocks,dispenser_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_horizontal.png,,,,,,, +/assets/minecraft/textures/blocks,dispenser_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_dispensers/textures,mcl_dispensers_dispenser_front_vertical.png,,,,,,, +/assets/minecraft/textures/blocks,dropper_front_horizontal.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_horizontal.png,,,,,,, +/assets/minecraft/textures/blocks,dropper_front_vertical.png,/mods/ITEMS/REDSTONE/mcl_droppers/textures,mcl_droppers_dropper_front_vertical.png,,,,,,, +/assets/minecraft/textures/blocks,observer_back_lit.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_back_lit.png,,,,,,, +/assets/minecraft/textures/blocks,observer_back.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_back.png,,,,,,, +/assets/minecraft/textures/blocks,observer_front.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_front.png,,,,,,, +/assets/minecraft/textures/blocks,observer_side.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_side.png,,,,,,, +/assets/minecraft/textures/blocks,observer_top.png,/mods/ITEMS/REDSTONE/mcl_observers/textures,mcl_observers_observer_top.png,,,,,,, +/assets/minecraft/textures/items,redstone_dust.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust.png,,,,,,, +/assets/minecraft/textures/items,repeater.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_item.png,,,,,,, +/assets/minecraft/textures/items,comparator.png,/mods/ITEMS/REDSTONE/mesecons_comparators/textures,mcl_comparators_item.png,,,,,,, +/assets/minecraft/textures/blocks,repeater_off.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_off.png,,,,,,, +/assets/minecraft/textures/blocks,repeater_on.png,/mods/ITEMS/REDSTONE/mesecons_delayer/textures,mesecons_delayer_on.png,,,,,,, +/assets/minecraft/textures/blocks,noteblock.png,/mods/ITEMS/REDSTONE/mesecons_noteblock/textures,mesecons_noteblock.png,,,,,,, +/assets/minecraft/textures/blocks,command_block_back.png,/mods/ITEMS/REDSTONE/mesecons_commandblock/textures,jeija_commandblock_off.png,,,,,,, +/assets/minecraft/textures/blocks,command_block_back.png,/mods/ITEMS/REDSTONE/mesecons_commandblock/textures,jeija_commandblock_on.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_lamp_off.png,/mods/ITEMS/REDSTONE/mesecons_lightstone/textures,jeija_lightstone_gray_off.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_lamp_on.png,/mods/ITEMS/REDSTONE/mesecons_lightstone/textures,jeija_lightstone_gray_on.png,,,,,,, +/assets/minecraft/textures/blocks,daylight_detector_inverted_top.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel_inverted.png,,,,,,, +/assets/minecraft/textures/blocks,daylight_detector_top.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel.png,,,,,,, +/assets/minecraft/textures/blocks,daylight_detector_side.png,/mods/ITEMS/REDSTONE/mesecons_solarpanel/textures,jeija_solar_panel_side.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_torch_off.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,jeija_torches_off.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_torch_on.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,jeija_torches_on.png,,,,,,, +/assets/minecraft/textures/blocks,lever.png,/mods/ITEMS/REDSTONE/mesecons_walllever/textures,jeija_wall_lever.png,,,,,,, +/assets/minecraft/textures/blocks,piston_bottom.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_back.png,,,,,,, +/assets/minecraft/textures/blocks,piston_side.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,piston_inner.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_on_front.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_back.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_front.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_sticky.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_front_sticky.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_left.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_right.png,,,,,,, +/assets/minecraft/textures/blocks,piston_top_normal.png,/mods/ITEMS/REDSTONE/mesecons_pistons/textures,mesecons_piston_pusher_top.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_block.png,/mods/ITEMS/REDSTONE/mesecons_torch/textures,redstone_redstone_block.png,,,,,,, +/assets/minecraft/textures/items,sign.png,/mods/ITEMS/mcl_signs/textures,default_sign.png,,,,,,, +/assets/minecraft/textures/blocks,iron_bars.png,/mods/ITEMS/xpanes/textures,xpanes_pane_iron.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_black.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_black.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_blue.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_blue.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_brown.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_brown.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_cyan.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_cyan.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_gray.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_gray.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_green.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_green.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_light_blue.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_light_blue.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_lime.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_lime.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_magenta.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_magenta.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_natural.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_orange.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_orange.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_pink.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_pink.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_purple.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_purple.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_red.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_red.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_silver.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_silver.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_white.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_white.png,,,,,,, +/assets/minecraft/textures/blocks,glass_pane_top_yellow.png,/mods/ITEMS/xpanes/textures,xpanes_top_glass_yellow.png,,,,,,, +/assets/minecraft/textures/items,totem.png,/mods/ENTITIES/mobs_mc/textures,mcl_mobitems_totem.png,,,,,,, +/assets/minecraft/textures/entity,bat.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_bat.png,,,,,,, +/assets/minecraft/textures/entity,blaze.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_blaze.png,,,,,,, +/assets/minecraft/textures/entity/cat,black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_black.png,,,,,,, +/assets/minecraft/textures/entity/cat,ocelot.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_ocelot.png,,,,,,, +/assets/minecraft/textures/entity/cat,red.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_red.png,,,,,,, +/assets/minecraft/textures/entity/cat,siamese.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cat_siamese.png,,,,,,, +/assets/minecraft/textures/entity/spider,cave_spider.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cave_spider.png,,,,,,, +/assets/minecraft/textures/entity,chicken.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_chicken.png,,,,,,, +/assets/minecraft/textures/entity/cow,cow.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_cow.png,,,,,,, +/assets/minecraft/textures/entity/creeper,creeper.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_creeper.png,,,,,,, +/assets/minecraft/textures/items,diamond_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_diamond_horse_armor.png,,,,,,, +/assets/minecraft/textures/entity/horse,donkey.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_donkey.png,,,,,,,y +/assets/minecraft/textures/entity/enderdragon,dragon.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_dragon.png,,,,,,, +/assets/minecraft/textures/entity/shulker,endergolem.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_endergolem.png,,,,,,, +/assets/minecraft/textures/entity/enderman,enderman_eyes.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_enderman_eyes.png,,,,,,, +/assets/minecraft/textures/entity/enderman,enderman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_enderman.png,,,,,,, +/assets/minecraft/textures/entity,endermite.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_endermite.png,,,,,,, +/assets/minecraft/textures/entity/ghast,ghast.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_ghast.png,,,,,,, +/assets/minecraft/textures/items,gold_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_gold_horse_armor.png,,,,,,, +/assets/minecraft/textures/entity,guardian_elder.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_guardian_elder.png,,,,,,, +/assets/minecraft/textures/entity,guardian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_guardian.png,,,,,,, +/assets/minecraft/textures/entity/horse/armor,horse_armor_diamond.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_diamond.png,,,,,,, +/assets/minecraft/textures/entity/horse/armor,horse_armor_gold.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_gold.png,,,,,,, +/assets/minecraft/textures/entity/horse/armor,horse_armor_iron.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_armor_iron.png,,,,,,, +/assets/minecraft/textures/entity/horse,horse_black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_black.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_brown.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_chestnut.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_chestnut.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_darkbrown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_darkbrown.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_gray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_gray.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_markings_blackdots.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_blackdots.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_markings_whitedots.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_whitedots.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_markings_whitefield.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_whitefield.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_markings_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_markings_white.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_white.png,,,,,,,y +/assets/minecraft/textures/entity/horse,horse_zombie.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_horse_zombie.png,,,,,,,y +/assets/minecraft/textures/entity/zombie,husk.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_husk.png,,,,,,, +/assets/minecraft/textures/entity,iron_golem.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_iron_golem.png,,,,,,, +/assets/minecraft/textures/items,iron_horse_armor.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_iron_horse_armor.png,,,,,,, +/assets/minecraft/textures/entity/slime,magmacube.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_magmacube.png,,,,,,, +/assets/minecraft/textures/entity/cow,mooshroom.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_mooshroom.png,,,,,,, +/assets/minecraft/textures/entity/horse,mule.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_mule.png,,,,,,,y +/assets/minecraft/textures/entity/pig,pig.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_pig.png,,,,,,, +/assets/minecraft/textures/entity/pig,pig_saddle.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_pig_saddle.png,,,,,,, +/assets/minecraft/textures/entity/bear,polarbear.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_polarbear.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_black.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_brown.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,caerbannog.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_caerbannog.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,gold.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_gold.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,salt.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_salt.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,toast.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_toast.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_white.png,,,,,,, +/assets/minecraft/textures/entity/rabbit,white_splotched.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_rabbit_white_splotched.png,,,,,,, +/assets/minecraft/textures/entity/sheep,sheep_fur.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_sheep_fur.png,,,,,,,y +/assets/minecraft/textures/entity/sheep,sheep.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_sheep.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_black.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_black.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_blue.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_blue.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_brown.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_brown.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_cyan.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_cyan.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_gray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_gray.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_green.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_green.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_light_blue.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_light_blue.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_lime.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_lime.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_magenta.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_magenta.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_orange.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_orange.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_pink.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_pink.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_purple.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_purple.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_red.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_red.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_silver.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_silver.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_white.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_white.png,,,,,,,y +/assets/minecraft/textures/entity/shulker,shulker_yellow.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_shulker_yellow.png,,,,,,,y +/assets/minecraft/textures/entity,silverfish.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_silverfish.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,skeleton.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_skeleton.png,,,,,,, +/assets/minecraft/textures/entity/slime,slime.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_slime.png,,,,,,, +/assets/minecraft/textures/entity,snowman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_snowman.png,,,,,,, +/assets/minecraft/textures/entity,spider_eyes.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_spider_eyes.png,,,,,,, +/assets/minecraft/textures/entity/spider,spider.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_spider.png,,,,,,, +/assets/minecraft/textures/entity,squid.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_squid.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,stray.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_stray.png,,,,,,, +/assets/minecraft/textures/entity/villager,butcher.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_butcher.png,,,,,,, +/assets/minecraft/textures/entity/villager,farmer.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_farmer.png,,,,,,, +/assets/minecraft/textures/entity/villager,librarian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_librarian.png,,,,,,, +/assets/minecraft/textures/entity/villager,villager.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager.png,,,,,,, +/assets/minecraft/textures/entity/villager,priest.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_priest.png,,,,,,, +/assets/minecraft/textures/entity/villager,smith.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_villager_smith.png,,,,,,, +/assets/minecraft/textures/entity,witch.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_witch.png,,,,,,, +/assets/minecraft/textures/entity/wither,wither.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wither.png,,,,,,, +/assets/minecraft/textures/entity/skeleton,wither_skeleton.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wither_skeleton.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf_angry.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_angry.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf_collar.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_collar.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf.png,,,,,,, +/assets/minecraft/textures/entity/wolf,wolf_tame.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_wolf_tame.png,,,,,,, +/assets/minecraft/textures/entity/zombie_villager,zombie_butcher.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_butcher.png,,,,,,, +/assets/minecraft/textures/entity/zombie_villager,zombie_farmer.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_farmer.png,,,,,,, +/assets/minecraft/textures/entity/zombie_villager,zombie_librarian.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_librarian.png,,,,,,, +/assets/minecraft/textures/entity,zombie_pigman.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_pigman.png,,,,,,, +/assets/minecraft/textures/entity/zombie,zombie.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie.png,,,,,,, +/assets/minecraft/textures/entity/zombie_villager,zombie_priest.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_priest.png,,,,,,, +/assets/minecraft/textures/entity/zombie_villager,zombie_smith.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_smith.png,,,,,,, +/assets/minecraft/textures/entity/zombie,zombie_villager.png,/mods/ENTITIES/mobs_mc/textures,mobs_mc_zombie_villager.png,,,,,,, +/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_bgicon.png,16,27,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_icon_health_poison.png,88,0,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,hbhunger_icon.png,52,27,9,9,0,0,y +/assets/minecraft/textures/gui,icons.png,/mods/PLAYER/mcl_hunger/textures,mcl_hunger_icon_foodpoison.png,88,27,9,9,0,0,y +/assets/minecraft/textures/particle,particles.png,/mods/ITEMS/mcl_tnt/textures,tnt_smoke.png,56,0,8,8,0,0,y +/assets/minecraft/textures/blocks,shulker_top_black.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_black_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_blue.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_blue_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_brown.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_brown_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_cyan.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_cyan_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_gray.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_dark_grey_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_green.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_dark_green_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_light_blue.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_lightblue_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_lime.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_green_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_magenta.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_magenta_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_orange.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_orange_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_pink.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_pink_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_purple.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_violet_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_red.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_red_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_silver.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_grey_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_white.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_white_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/blocks,shulker_top_yellow.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_yellow_shulker_box_top.png,,,,,,,y +/assets/minecraft/textures/items,flower_pot.png,/mods/ITEMS/mcl_flowerpots/textures,mcl_flowerpots_flowerpot_inventory.png,,,,,,, +/assets/minecraft/textures/blocks,flower_pot.png,/mods/ITEMS/mcl_flowerpots/textures,mcl_flowerpots_flowerpot.png,,,,,,,y +/assets/minecraft/textures/gui,widgets.png,/mods/HUD/mcl_inventory/textures,gui_hotbar.png,0,0,182,22,0,0,y +/assets/minecraft/textures/gui,widgets.png,/mods/HUD/mcl_inventory/textures,gui_hotbar_selected.png,0,22,24,24,0,0,y +/assets/minecraft/textures/blocks,bed_feet_end.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_red.png,,,,,,, +/assets/minecraft/textures/blocks,bed_feet_side.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_r_red.png,,,,,,, +/assets/minecraft/textures/blocks,bed_feet_top.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_top_bottom_red.png,,,,,,, +/assets/minecraft/textures/blocks,bed_head_end.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_bottom_red.png,,,,,,, +/assets/minecraft/textures/blocks,bed_head_side.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_side_top_r_red.png,,,,,,, +/assets/minecraft/textures/blocks,bed_head_top.png,/mods/ITEMS/mcl_beds/textures,mcl_beds_bed_top_top_red.png,,,,,,, +/assets/minecraft/textures/items,compass_00.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_00.png,,,,,,, +/assets/minecraft/textures/items,compass_01.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_01.png,,,,,,, +/assets/minecraft/textures/items,compass_02.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_02.png,,,,,,, +/assets/minecraft/textures/items,compass_03.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_03.png,,,,,,, +/assets/minecraft/textures/items,compass_04.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_04.png,,,,,,, +/assets/minecraft/textures/items,compass_05.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_05.png,,,,,,, +/assets/minecraft/textures/items,compass_06.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_06.png,,,,,,, +/assets/minecraft/textures/items,compass_07.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_07.png,,,,,,, +/assets/minecraft/textures/items,compass_08.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_08.png,,,,,,, +/assets/minecraft/textures/items,compass_09.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_09.png,,,,,,, +/assets/minecraft/textures/items,compass_10.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_10.png,,,,,,, +/assets/minecraft/textures/items,compass_11.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_11.png,,,,,,, +/assets/minecraft/textures/items,compass_12.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_12.png,,,,,,, +/assets/minecraft/textures/items,compass_13.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_13.png,,,,,,, +/assets/minecraft/textures/items,compass_14.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_14.png,,,,,,, +/assets/minecraft/textures/items,compass_15.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_15.png,,,,,,, +/assets/minecraft/textures/items,compass_16.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_16.png,,,,,,, +/assets/minecraft/textures/items,compass_17.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_17.png,,,,,,, +/assets/minecraft/textures/items,compass_18.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_18.png,,,,,,, +/assets/minecraft/textures/items,compass_19.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_19.png,,,,,,, +/assets/minecraft/textures/items,compass_20.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_20.png,,,,,,, +/assets/minecraft/textures/items,compass_21.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_21.png,,,,,,, +/assets/minecraft/textures/items,compass_22.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_22.png,,,,,,, +/assets/minecraft/textures/items,compass_23.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_23.png,,,,,,, +/assets/minecraft/textures/items,compass_24.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_24.png,,,,,,, +/assets/minecraft/textures/items,compass_25.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_25.png,,,,,,, +/assets/minecraft/textures/items,compass_26.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_26.png,,,,,,, +/assets/minecraft/textures/items,compass_27.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_27.png,,,,,,, +/assets/minecraft/textures/items,compass_28.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_28.png,,,,,,, +/assets/minecraft/textures/items,compass_29.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_29.png,,,,,,, +/assets/minecraft/textures/items,compass_30.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_30.png,,,,,,, +/assets/minecraft/textures/items,compass_31.png,/mods/ITEMS/mcl_compass/textures,mcl_compass_compass_31.png,,,,,,, +/assets/minecraft/textures/items,empty_armor_slot_boots.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_boots.png,,,,,,, +/assets/minecraft/textures/items,empty_armor_slot_chestplate.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_chestplate.png,,,,,,, +/assets/minecraft/textures/items,empty_armor_slot_helmet.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_helmet.png,,,,,,, +/assets/minecraft/textures/items,empty_armor_slot_leggings.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_leggings.png,,,,,,, +/assets/minecraft/textures/items,empty_armor_slot_shield.png,/mods/HUD/mcl_inventory/textures,mcl_inventory_empty_armor_slot_shield.png,,,,,,, +/assets/minecraft/textures/items,knowledge_book.png,/mods/HELP/mcl_craftguide/textures,craftguide_book.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_dust_dot.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust_dot.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_dust_line0.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust_line0.png,,,,,,, +/assets/minecraft/textures/blocks,redstone_dust_line1.png,/mods/ITEMS/REDSTONE/mesecons_wires/textures,redstone_redstone_dust_line1.png,,,,,,, +/assets/minecraft/textures/blocks,pumpkin_stem_connected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_stem_connected.png,,,,,,, +/assets/minecraft/textures/blocks,melon_stem_connected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_stem_connected.png,,,,,,, +/assets/minecraft/textures/blocks,pumpkin_stem_disconnected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_pumpkin_stem_disconnected.png,,,,,,, +/assets/minecraft/textures/blocks,melon_stem_disconnected.png,/mods/ITEMS/mcl_farming/textures,mcl_farming_melon_stem_disconnected.png,,,,,,, +/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_acacia.png,,,,,,, +/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_birch.png,,,,,,, +/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_jungle.png,,,,,,, +/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_oak.png,,,,,,, +/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_spruce.png,,,,,,, +/assets/minecraft/textures/blocks,planks_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_acacia.png,,,,,,, +/assets/minecraft/textures/blocks,planks_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,planks_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_birch.png,,,,,,, +/assets/minecraft/textures/blocks,planks_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_jungle.png,,,,,,, +/assets/minecraft/textures/blocks,planks_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_oak.png,,,,,,, +/assets/minecraft/textures/blocks,planks_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_spruce.png,,,,,,, +/assets/minecraft/textures/blocks,nether_brick.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_nether_brick.png,,,,,,, +/assets/minecraft/textures/blocks,fence_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_acacia.png,,,,,,, +/assets/minecraft/textures/blocks,fence_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,fence_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_birch.png,,,,,,, +/assets/minecraft/textures/blocks,fence_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_jungle.png,,,,,,, +/assets/minecraft/textures/blocks,fence_nether_brick.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_nether_brick.png,,,,,,, +/assets/minecraft/textures/blocks,fence_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_oak.png,,,,,,, +/assets/minecraft/textures/blocks,fence_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_spruce.png,,,,,,, +/assets/minecraft/textures/blocks,fence_gate_acacia.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_acacia.png,,,,,,, +/assets/minecraft/textures/blocks,fence_gate_big_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_big_oak.png,,,,,,, +/assets/minecraft/textures/blocks,fence_gate_birch.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_birch.png,,,,,,, +/assets/minecraft/textures/blocks,fence_gate_jungle.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_jungle.png,,,,,,, +/assets/minecraft/textures/blocks,fence_gate_oak.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_oak.png,,,,,,, +/assets/minecraft/textures/blocks,fence_gate_spruce.png,/mods/ITEMS/mcl_fences/textures,mcl_fences_fence_gate_spruce.png,,,,,,, +/assets/minecraft/textures/entity,sign.png,/mods/ITEMS/mcl_signs/textures,mcl_signs_sign.png,,,,,,, +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_1.png,0,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_2.png,16,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_3.png,32,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_4.png,48,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_5.png,64,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_6.png,80,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_7.png,96,0,16,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_8.png,0,32,32,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_9.png,32,32,32,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_10.png,64,32,32,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_11.png,96,32,32,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_12.png,128,32,32,16,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_13.png,0,64,16,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_14.png,16,64,16,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_15.png,0,128,32,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_16.png,32,128,32,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_17.png,64,128,32,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_18.png,96,128,32,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_19.png,128,128,32,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_20.png,160,128,32,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_21.png,0,96,64,32,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_22.png,0,192,64,64,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_23.png,64,192,64,64,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_24.png,128,192,64,64,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_25.png,192,64,64,48,0,0,y +/assets/minecraft/textures/painting,paintings_kristoffer_zetterstrand.png,/mods/ITEMS/gemalde/textures,gemalde_26.png,192,112,64,48,0,0,y +/assets/minecraft/textures/entity,banner_base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_banner_base.png,,,,,,, +/assets/minecraft/textures/entity/banner,base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_base.png,,,,,,, +/assets/minecraft/textures/items,banner_base.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_item_base.png,,,,,,, +/assets/minecraft/textures/items,banner_overlay.png,/mods/ITEMS/mcl_banners/textures,mcl_banners_item_overlay.png,,,,,,, +/assets/minecraft/textures/blocks,portal.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_portal.png,,,,,,, +/assets/minecraft/textures/entity,end_portal.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_end_portal.png,,,,,,, +/assets/minecraft/textures/environment,end_sky.png,/mods/PLAYER/mcl_playerplus/textures,mcl_playerplus_end_sky.png,,,,,,, +/assets/minecraft/textures/entity/chest,normal.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_normal.png,,,,,,,y +/assets/minecraft/textures/entity/chest,normal_double.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_normal_double.png,,,,,,,y +/assets/minecraft/textures/entity/chest,ender.png,/mods/ITEMS/mcl_chests/textures,mcl_chests_ender.png,,,,,,,y +/assets/minecraft/textures/blocks,endframe_top.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_top.png,,,,,,, +/assets/minecraft/textures/blocks,endframe_side.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_side.png,,,,,,, +/assets/minecraft/textures/blocks,endframe_eye.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_eye.png,,,,,,, +/assets/minecraft/textures/blocks,end_stone.png,/mods/ITEMS/mcl_portals/textures,mcl_portals_endframe_bottom.png,,,,,,, +/assets/minecraft/textures/blocks,red_nether_brick.png,,mcl_supplemental_fence_red_nether_brick.png,,,,,,, +/assets/minecraft/textures/blocks,red_nether_brick.png,,mcl_supplemental_fence_gate_red_nether_brick.png,,,,,,, +/assets/minecraft/textures/blocks,nether_brick.png,,mcl_supplemental_fence_gate_nether_brick.png,,,,,,, +/assets/minecraft/textures/blocks,stonebrick_carved.png,,mcl_supplemental_stonebrick_carved_slab.png,,,,,,, diff --git a/tools/Texture_Converter.py b/tools/Texture_Converter.py index 2c92c441..43525820 100755 --- a/tools/Texture_Converter.py +++ b/tools/Texture_Converter.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# EXPERIMENTAL texture pack copying utility. +# EXPERIMENTAL texture pack converting utility. # This Python script helps in converting Minecraft texture packs. It has 2 main features: # - Can create a Minetest texture pack (default) # - Can update the MineClone 2 textures @@ -7,20 +7,30 @@ # # Requirements: # - Python 3 -# - Python Library: Pillow # - ImageMagick # -# Usage (to be simplified later): -# - Put extracted texture pack into $HOME/tmp/pp -# - Make sure the file “Texture_Conversion_Table.csv” is in the same directory as the script -# - Run the script in its directory -# - If everything worked, retrieve texture pack in texture_pack/ +# Usage: +# - Make sure the file “Conversion_Table.csv” is in the same directory as the script +# - Run ./Texture_Converter.py -h to learn the available options __author__ = "Wuzzy" -__license__ = "WTFPL" +__license__ = "MIT License" __status__ = "Development" +import shutil, csv, os, tempfile, sys, getopt + +# Helper vars +home = os.environ["HOME"] +mineclone2_path = home + "/.minetest/games/mineclone2" +working_dir = os.getcwd() +output_dir_name = "New_MineClone_2_Texture_Pack" +appname = "Texture_Converter.py" + ### SETTINGS ### +output_dir = working_dir + +base_dir = None + # If True, will only make console output but not convert anything. dry_run = False @@ -31,28 +41,97 @@ make_texture_pack = True # If True, prints all copying actions verbose = False +PXSIZE = 16 + +syntax_help = appname+""" -i [-o ] [-d] [-v|-q] [-h] +Mandatory argument: +-i + Directory of Minecraft resource pack to convert + +Optional arguments: +-p + Specify the size of the original textures (default: 16) +-o + Directory in which to put the resulting MineClone 2 texture pack + (default: working directory) +-d + The script will only pretend to convert textures by writing + to the console only, but not changing any files. +-v + Prints out all copying actions +-h + Shows this help an exits""" +try: + opts, args = getopt.getopt(sys.argv[1:],"hi:o:p:dv") +except getopt.GetoptError: + print( +"""ERROR! The options you gave me make no sense! + +Here's the syntax reference:""") + print(syntax_help) + sys.exit(2) +for opt, arg in opts: + if opt == "-h": + print( +"""This is the official MineClone 2 Texture Converter. +This will convert textures from Minecraft resource packs to +a MineClone 2 texture pack. + +Supported Minecraft version: 1.12 (Java Edition) + +Syntax:""") + print(syntax_help) + sys.exit() + elif opt == "-d": + dry_run = True + elif opt == "-v": + verbose = True + elif opt == "-i": + base_dir = arg + elif opt == "-o": + output_dir = arg + elif opt == "-p": + PXSIZE = int(arg) + +if base_dir == None: + print( +"""ERROR: You forgot to tell me the path to the Minecraft resource pack. +Mind-reading has not been implemented yet. + +Try this: + """+appname+""" -i + +For the full help, use: + """+appname+""" -h""") + sys.exit(2); + ### END OF SETTINGS ### -import shutil, csv, os, tempfile -from PIL import Image - -# Helper variables -home = os.environ["HOME"] -mineclone2_path = home + "/.minetest/games/mineclone2" -working_dir = os.getcwd() -base_dir = home + "/tmp/pp" tex_dir = base_dir + "/assets/minecraft/textures" # FUNCTION DEFINITIONS +def colorize(colormap, source, colormap_pixel, texture_size, destination): + os.system("convert "+colormap+" -crop 1x1+"+colormap_pixel+" -depth 8 -resize "+texture_size+"x"+texture_size+" "+tempfile1.name) + os.system("composite -compose Multiply "+tempfile1.name+" "+source+" "+destination) -def convert_alphatex(one, two, three, four, five): - os.system("convert "+one+" -crop 1x1+"+three+" -depth 8 -resize "+four+"x"+four+" "+tempfile1.name) - os.system("composite -compose Multiply "+tempfile1.name+" "+two+" "+tempfile2.name) - os.system("composite -compose Dst_In "+two+" "+tempfile1.name+" -alpha Set "+five) +def colorize_alpha(colormap, source, colormap_pixel, texture_size, destination): + colorize(colormap, source, colormap_pixel, texture_size, tempfile2.name) + os.system("composite -compose Dst_In "+source+" "+tempfile2.name+" -alpha Set "+destination) + +# This function is unused atm. +# TODO: Implemnt colormap extraction +def extract_colormap(colormap, colormap_pixel, positions): + os.system("convert -size 16x16 canvas:black "+tempfile1.name) + x=0 + y=0 + for p in positions: + os.system("convert "+colormap+" -crop 1x1+"+colormap_pixel+" -depth 8 "+tempfile2.name) + os.system("composite -geometry 16x16+"+x+"+"+y+" "+tempfile2.name) + x = x+1 def target_dir(directory): if make_texture_pack: - return working_dir + "/texture_pack" + return output_dir + "/" + output_dir_name else: return mineclone2_path + directory @@ -60,7 +139,7 @@ def target_dir(directory): def convert_textures(): failed_conversions = 0 print("Texture conversion BEGINS NOW!") - with open("Texture_Conversion_Table.csv", newline="") as csvfile: + with open("Conversion_Table.csv", newline="") as csvfile: reader = csv.reader(csvfile, delimiter=",", quotechar='"') first_row = True for row in reader: @@ -82,6 +161,18 @@ def convert_textures(): yt = int(row[9]) else: xs = None + blacklisted = row[10] + + if blacklisted == "y": + # Skip blacklisted files + continue + + if make_texture_pack == False and dst_dir == "": + # If destination dir is empty, this texture is not supposed to be used in MCL2 + # (but maybe an external mod). It should only be used in texture packs. + # Otherwise, it must be ignored. + # Example: textures for mcl_supplemental + continue src_file = base_dir + src_dir + "/" + src_filename # source file src_file_exists = os.path.isfile(src_file) @@ -94,11 +185,8 @@ def convert_textures(): if xs != None: # Crop and copy images - image = Image.open(src_file) if not dry_run: - region = image.crop((xs, ys, xs+xl, ys+yl)) - region.load() - region.save(dst_file) + os.system("convert "+src_file+" -crop "+xl+"x"+yl+"+"+xs+"+"+ys+" "+dst_file) if verbose: print(src_file + " → " + dst_file) else: @@ -109,56 +197,79 @@ def convert_textures(): print(src_file + " → " + dst_file) # Convert chest textures (requires ImageMagick) - PXSIZE = 16 chest_file = tex_dir + "/entity/chest/normal.png" if os.path.isfile(chest_file): CHPX=((PXSIZE / 16 * 14)) # Chests in MC are 2/16 smaller! +# Chests are currently blacklisted - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+target_dir("/mods/ITEMS/mcl_chests/textures")+"/default_chest_top.png") +# os.system("convert " + chest_file + " \ +#\( -clone 0 -crop "+str(CHPX)+"x"+str(CHPX)+"+"+str(CHPX)+"+0 \) -geometry +0+0 -composite -extent "+str(CHPX)+"x"+str(CHPX)+" "+target_dir("/mods/ITEMS/mcl_chests/textures")+"/default_chest_top.png") - os.system("convert " + chest_file + " \ -\( -clone 0 -crop "+str(CHPX)+"x"+str((PXSIZE/16)*5)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \ -\( -clone 0 -crop "+str(CHPX)+"x"+str((PXSIZE/16)*10)+"+"+str(CHPX)+"+"+str((2*CHPX) + ((PXSIZE/16)*5))+" \) -geometry +0+"+str((PXSIZE/16)*5)+" -composite \ --extent "+str(CHPX)+"x"+str(CHPX)+" "+target_dir("/mods/ITEMS/mcl_chests/textures")+"/default_chest_front.png") +# os.system("convert " + chest_file + " \ +#\( -clone 0 -crop "+str(CHPX)+"x"+str((PXSIZE/16)*5)+"+"+str(CHPX)+"+"+str(CHPX)+" \) -geometry +0+0 -composite \ +#\( -clone 0 -crop "+str(CHPX)+"x"+str((PXSIZE/16)*10)+"+"+str(CHPX)+"+"+str((2*CHPX) + ((PXSIZE/16)*5))+" \) -geometry +0+"+str((PXSIZE/16)*5)+" -composite \ +#-extent "+str(CHPX)+"x"+str(CHPX)+" "+target_dir("/mods/ITEMS/mcl_chests/textures")+"/default_chest_front.png") # TODO: Convert other chest sides + # Generate railway crossings and t-junctions. Note: They may look strange. + # Note: these may be only a temporary solution, as crossings and t-junctions do not occour in MC. + # TODO: Curves + rails = [ + # (Straigt src, curved src, t-junction dest, crossing dest) + ("rail_normal.png", "rail_normal_turned.png", "default_rail_t_junction.png", "default_rail_crossing.png"), + ("rail_golden.png", "rail_normal_turned.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png"), + ("rail_golden_powered.png", "rail_normal_turned.png", "mcl_minecarts_rail_golden_t_junction_powered.png", "mcl_minecarts_rail_golden_crossing_powered.png"), + ("rail_detector.png", "rail_normal_turned.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"), + ("rail_detector_powered.png", "rail_normal_turned.png", "mcl_minecarts_rail_detector_t_junction_powered.png", "mcl_minecarts_rail_detector_crossing_powered.png"), + ("rail_activator.png", "rail_normal_turned.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"), + ("rail_activator_powered.png", "rail_normal_turned.png", "mcl_minecarts_rail_activator_d_t_junction.png", "mcl_minecarts_rail_activator_powered_crossing.png"), + ] + for r in rails: + os.system("composite -compose Dst_Over "+tex_dir+"/blocks/"+r[0]+" "+tex_dir+"/blocks/"+r[1]+" "+target_dir("/mods/ENTITIES/mcl_minecarts/textures")+"/"+r[2]) + os.system("convert "+tex_dir+"/blocks/"+r[0]+" -rotate 90 "+tempfile1.name) + os.system("composite -compose Dst_Over "+tempfile1.name+" "+tex_dir+"/blocks/"+r[0]+" "+target_dir("/mods/ENTITIES/mcl_minecarts/textures")+"/"+r[3]) + # Convert grass grass_file = tex_dir + "/blocks/grass_top.png" if os.path.isfile(grass_file): FOLIAG = tex_dir+"/colormap/foliage.png" GRASS = tex_dir+"/colormap/grass.png" - os.system("convert "+GRASS+" -crop 1x1+70+120 -depth 8 -resize "+str(PXSIZE)+"x"+str(PXSIZE)+" "+tempfile1.name) - os.system("composite -compose Multiply "+tempfile1.name+" "+tex_dir+"/blocks/grass_top.png "+target_dir("/mods/ITEMS/mcl_core/textures")+"/default_grass.png") - - - convert_alphatex(GRASS, tex_dir+"/blocks/grass_side_overlay.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_grass_side.png") - # Leaves - convert_alphatex(FOLIAG, tex_dir+"/blocks/leaves_oak.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_leaves.png") - convert_alphatex(FOLIAG, tex_dir+"/blocks/leaves_big_oak.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_big_oak.png") - convert_alphatex(FOLIAG, tex_dir+"/blocks/leaves_acacia.png", "16+240", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_acacia_leaves.png") - convert_alphatex(FOLIAG, tex_dir+"/blocks/leaves_spruce.png", "226+240", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_spruce.png") - convert_alphatex(FOLIAG, tex_dir+"/blocks/leaves_birch.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_birch.png") - convert_alphatex(FOLIAG, tex_dir+"/blocks/leaves_jungle.png", "16+32", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_jungleleaves.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_oak.png", "116+143", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_leaves.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_big_oak.png", "158+177", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_big_oak.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_acacia.png", "40+255", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_acacia_leaves.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_spruce.png", "226+230", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_spruce.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_birch.png", "141+186", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_leaves_birch.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/leaves_jungle.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_jungleleaves.png") # Waterlily - convert_alphatex(FOLIAG, tex_dir+"/blocks/waterlily.png", "16+32", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/flowers_waterlily.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/waterlily.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/flowers_waterlily.png") # Vines - convert_alphatex(FOLIAG, tex_dir+"/blocks/vine.png", "16+32", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_vine.png") + colorize_alpha(FOLIAG, tex_dir+"/blocks/vine.png", "16+39", str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/mcl_core_vine.png") + + # Tall grass, fern (inventory images) + pcol = "49+172" # Plains grass color + colorize_alpha(GRASS, tex_dir+"/blocks/tallgrass.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_tallgrass_inv.png") + colorize_alpha(GRASS, tex_dir+"/blocks/fern.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_fern_inv.png") + colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_fern_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_fern_inv.png") + colorize_alpha(GRASS, tex_dir+"/blocks/double_plant_grass_top.png", pcol, str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_grass_inv.png") + + # TODO: Convert grass palette + + offset = [ + [ pcol, "", "grass" ], # Default grass: Plains + [ "40+255", "_dry", "dry_grass" ], # Dry grass: Savanna, Mesa Plateau F, Nether, … + ] + for o in offset: + colorize(GRASS, tex_dir+"/blocks/grass_top.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+".png") + colorize_alpha(GRASS, tex_dir+"/blocks/grass_side_overlay.png", o[0], str(PXSIZE), target_dir("/mods/ITEMS/mcl_core/textures")+"/default_"+o[2]+"_side.png") + - # Tall grass, fern - convert_alphatex(GRASS, tex_dir+"/blocks/tallgrass.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_tallgrass.png") - convert_alphatex(GRASS, tex_dir+"/blocks/fern.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_fern.png") - convert_alphatex(GRASS, tex_dir+"/blocks/double_plant_fern_bottom.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_fern_bottom.png") - convert_alphatex(GRASS, tex_dir+"/blocks/double_plant_fern_top.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_fern_top.png") - convert_alphatex(GRASS, tex_dir+"/blocks/double_plant_grass_bottom.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_grass_bottom.png") - convert_alphatex(GRASS, tex_dir+"/blocks/double_plant_grass_top.png", "70+120", str(PXSIZE), target_dir("/mods/ITEMS/mcl_flowers/textures")+"/mcl_flowers_double_plant_grass_top.png") # TODO: Convert banner masks # if os.path.isdir(tex_dir + "/entity/banner"): @@ -172,11 +283,11 @@ def convert_textures(): print("WARNING: Number of missing files in original resource pack: "+str(failed_conversions)) print("NOTE: Please keep in mind this script does not reliably convert all the textures yet.") if make_texture_pack: - print("You can now retrieve the texture pack in "+working_dir+"/texture_pack/") + print("You can now retrieve the texture pack in "+output_dir+"/"+output_dir_name+"/") # ENTRY POINT -if make_texture_pack and not os.path.isdir("./texture_pack"): - os.mkdir("texture_pack") +if make_texture_pack and not os.path.isdir(output_dir+"/"+output_dir_name): + os.mkdir(output_dir+"/"+output_dir_name) tempfile1 = tempfile.NamedTemporaryFile() tempfile2 = tempfile.NamedTemporaryFile()