diff --git a/README.md b/README.md index cd79e03..46ff205 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,36 @@ There are several improvements I may implement in new or existing mods. See the ## Install +#### Linux +* Open terminal, then: +```bash +if [ ! -d webapp ]; then + echo "ERROR: this will only work from the extracted or cloned EnlivenMinetest directory" + echo "Press Ctrl C, or this terminal will exit..." + sleep 1 + echo "3..." + sleep 1 + echo "2..." + sleep 1 + echo "1..." + sleep 1 + exit 1 +fi +cd webapp +# the next command downloads the latest linux-build-kit, CLEARS the +# webapp/linux-build-kit/minetest directory, and compiles the libraries. +# Do not put anything important in that directory--the latter install +# script installs the game to $HOME/minetest and that is the copy of +# minetest you should use (such as via the icon). +bash reset-minetest.sh +bash install-mts.sh --client +``` +* Icon will be added as: + `$HOME/.local/share/applications/org.minetest.minetest.desktop` + (your window manager should automatically detect the change--if not, + you may need to restart your window manager. If it still doesn't show, + contact the maintainer of your window manager. This works in KDE on + Fedora 29. Workaround: copy the icon from there to your desktop.) ## How to use diff --git a/patches/Bucket_Game-patched/mods/codermobs/codermobs/cow.lua b/patches/Bucket_Game-patched/mods/codermobs/codermobs/cow.lua new file mode 100644 index 0000000..2fc97c9 --- /dev/null +++ b/patches/Bucket_Game-patched/mods/codermobs/codermobs/cow.lua @@ -0,0 +1,228 @@ +-- Cow. Descended from Krupnovpavel-JurajVajda version. + +-- =================================================================== + +local lcname = "cow" +local ucname = "Cow" +local msname = "codermobs_" .. lcname +local obj_name = "codermobs:" .. lcname + +-- =================================================================== + +mobs_param = { + lcname = lcname , + ucname = ucname , + obj_name = obj_name , + + aoc = 2 , + obr = 1 , + day_mode = true , + min_light = 10 , + max_light = 20 , + min_height = -31000 , + max_height = 31000 , + scale = 1.25 , + spawn_chance = 40000 , + spawn_type = "animal" , + + spawn_nodes = { + "default:dirt_with_dry_grass" , + "default:dirt_with_grass" , + "earthgen:dirt_with_dry_grass" , + "ethereal:green_dirt" , + "ethereal:green_dirt_top" , + "ethereal:grove_dirt" , + "mg:dirt_with_dry_grass" , + } , + + add_egg = true , + egg_image = "default_grass.png" , +} + +-- =================================================================== + +codermobs.adjust_param() + +-- =================================================================== + +mobs_param.core_param = { + type = mobs_param.spawn_type , + + passive = false, + attack_type = "dogfight", + reach = 2, + damage = 4, + hp_min = 5, + hp_max = 20, + armor = 200, + collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, + visual = "mesh", + mesh = msname .. ".x" , + textures = { + { msname .. "_01.png" } , + { msname .. "_02.png" } , + }, + makes_footstep_sound = true, + sounds = { + random = msname , + }, + walk_velocity = 1, + run_velocity = 2, + jump = true, + drops = { + { name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, + { name = "mobs:leather", chance = 1, min = 1, max = 2}, + }, + water_damage = 1, + lava_damage = 5, + light_damage = 0, + animation = { + speed_normal = 15, + speed_run = 15, + stand_start = 0, + stand_end = 30, + walk_start = 35, + walk_end = 65, + run_start = 105, + run_end = 135, + punch_start = 70, + punch_end = 100, + }, + follow = "farming:wheat", + view_range = 8, + replace_rate = 10, +-- replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, + replace_what = { + {"group:grass", "air", 0}, + {"default:dirt_with_grass", "default:dirt", -1} + }, + replace_with = "air", + fear_height = 2, + on_rightclick = function(self, clicker) + + -- feed or tame + if mobs:feed_tame(self, clicker, 8, true, true) then return end + if mobs:protect(self, clicker) then return end + if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end + + local tool = clicker:get_wielded_item() + local name = clicker:get_player_name() + + -- milk cow with empty bucket + if tool:get_name() == "bucket:bucket_empty" then + + --if self.gotten == true + if self.child == true then + return + end + + if self.gotten == true then + minetest.chat_send_player(name, + "Cow already milked!") + return + end + + local inv = clicker:get_inventory() + + inv:remove_item("main", "bucket:bucket_empty") + + if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then + clicker:get_inventory():add_item("main", "mobs:bucket_milk") + else + local pos = self.object:get_pos() + pos.y = pos.y + 0.5 + minetest.add_item(pos, {name = "mobs:bucket_milk"}) + end + + self.gotten = true -- milked + + return + end + -- milk cow with empty glass + if tool:get_name() == "vessels:drinking_glass" then + + --if self.gotten == true + if self.child == true then + return + end + + if self.gotten == true then + minetest.chat_send_player(name, + "Cow already milked!") + return + end + + local inv = clicker:get_inventory() + + inv:remove_item("main", "vessels:drinking_glass") + + if inv:room_for_item("main", {name = "food:milk"}) then + clicker:get_inventory():add_item("main", "food:milk") + else + local pos = self.object:get_pos() + pos.y = pos.y + 0.5 + minetest.add_item(pos, {name = "food:milk"}) + end + + self.gotten = true -- milked + + return + end + end, +} + +-- bucket of milk +minetest.register_craftitem(":mobs:bucket_milk", { + description = "Bucket of Milk", + inventory_image = "codermobs_bucket_milk.png", + stack_max = 1, + on_use = minetest.item_eat(8, 'bucket:bucket_empty'), +}) + +-- cheese wedge +minetest.register_craftitem(":mobs:cheese", { + description = "Cheese", + inventory_image = "codermobs_cheese.png", + on_use = minetest.item_eat (4) , +}) + +minetest.register_craft ({ + type = "cooking", + output = "mobs:cheese", + recipe = "mobs:bucket_milk", + cooktime = 5, + replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} +}) + +-- cheese block +minetest.register_node(":mobs:cheeseblock", { + description = "Cheese Block", + tiles = { "codermobs_cheeseblock.png" } , + is_ground_content = false, + groups = {crumbly = 3}, + sounds = default.node_sound_dirt_defaults() +}) + +minetest.register_craft ({ + output = "mobs:cheeseblock" , + recipe = { + {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, + {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, + {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, + } +}) + +minetest.register_craft({ + output = "mobs:cheese 9", + recipe = { + {'mobs:cheeseblock'}, + } +}) + +-- =================================================================== + +codermobs.setup_mob() +codermobs.log_done() + +-- =================================================================== +-- End of file. diff --git a/patches/Bucket_Game-patched/mods/codermobs/codermobs/textures/codermobs_bucket_milk.png b/patches/Bucket_Game-patched/mods/codermobs/codermobs/textures/codermobs_bucket_milk.png new file mode 100644 index 0000000..9c4bd6b Binary files /dev/null and b/patches/Bucket_Game-patched/mods/codermobs/codermobs/textures/codermobs_bucket_milk.png differ diff --git a/webapp/install-mts.sh b/webapp/install-mts.sh index 20962f9..dc3d10a 100755 --- a/webapp/install-mts.sh +++ b/webapp/install-mts.sh @@ -129,10 +129,16 @@ else fi popd cd .. -echo "updating '$HOME/minetest/games/ENLIVEN/menu'..." -rsync -rt "patches/subgame/menu/" "$HOME/minetest/games/ENLIVEN/menu" -echo "updating '$HOME/minetest/games/ENLIVEN'..." -rsync -rt "patches/Bucket_Game-patched/" "$HOME/minetest/games/ENLIVEN" +src="patches/subgame/menu" +dst="$HOME/minetest/games/ENLIVEN/menu" +echo "updating '$dst' from '$src/'..." +rsync -rt "$src/" "$dst" + +src="patches/Bucket_Game-patched" +dst="$HOME/minetest/games/ENLIVEN" +echo "updating '$dst' from '$src/'..." +rsync -rt "$src/" "$dst" + # Bucket_Game doesn't come with a minetest.conf, only minetest.conf.example* files # if [ ! -f "$HOME/minetest/minetest.Bucket_Game-example.conf" ]; then # cp -f "$HOME/minetest/minetest.conf" "$HOME/minetest/minetest.Bucket_Game-example.conf" @@ -142,12 +148,14 @@ client_example_dest="$HOME/minetest/minetest.ENLIVEN.client-example.conf" # client conf writing only ever happens once, unless you manually delete $client_example_dest file: if [ ! -f "$client_example_dest" ]; then if [ -f "$HOME/minetest/minetest.conf" ]; then + echo "Backing up minetest.conf..." if [ ! -f "$HOME/minetest/minetest.conf.1st" ]; then cp -f "$HOME/minetest/minetest.conf" "$HOME/minetest/minetest.conf.1st" else cp -f "$HOME/minetest/minetest.conf" "$HOME/minetest/minetest.conf.bak" fi fi + echo "Installing minetest.conf and ENLIVEN example conf files..." cp -f "patches/subgame/minetest.client-example.conf" "$HOME/minetest/minetest.conf" cp -f "patches/subgame/minetest.LAN-client-example.conf" "$HOME/minetest/minetest.ENLIVEN.LAN-client-example.conf" cp -f "patches/subgame/minetest.server-example.conf" "$HOME/minetest/minetest.ENLIVEN.server-example.conf" @@ -159,6 +167,7 @@ if [ -f "$server_minetest_conf_dest" ]; then echo "NOTE: $server_minetest_conf_dest will be overwritten (minetest.org releases allow you to put a world.conf file in your world, so that should be customized instead)..." echo fi +echo "Writing '$server_minetest_conf_dest'..." cp -f "patches/subgame/minetest.server-example.conf" "$server_minetest_conf_dest" if [ -f "$HOME/i_am_dedicated_minetest_server" ]; then echo "server_dedicated = true" >> "$server_minetest_conf_dest"