Browse Source

Add a patch to make sure each meat's name and image are unique (& add myself to licenses) and alias duplicate meats (related to issue #507 which is tracked at issue #453).

master
poikilos 3 years ago
parent
commit
080eb4949c
  1. 12
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/LICENSE
  2. 23
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/oldcoder.txt
  3. 63
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/LICENSE
  4. 208
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/basefoods.lua
  5. 237
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/oldcoder.txt
  6. 275
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/LICENSE
  7. 347
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/animal_materials.lua
  8. 463
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/hen.lua
  9. 128
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/lott_spider.lua
  10. 19
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/oldcoder.txt
  11. 355
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/ostrich.lua
  12. 118
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/rat_better.lua
  13. 154
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/warthog.lua
  14. 324
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/mobs/crafts.lua
  15. 51
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/mobs/license.txt
  16. 50
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/mobs/oldcoder.txt
  17. 13
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/oldcoder.txt
  18. 26
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/whinny/LICENSE
  19. 19
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/whinny/init.lua
  20. 7
      Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/whinny/oldcoder.txt
  21. 92
      Bucket_Game-branches/distinguish_meats-vs-211114a-build_the_patch.sh
  22. 15
      Bucket_Game-branches/distinguish_meats-vs-211114a.instructions.txt
  23. 12
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/LICENSE
  24. 23
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/oldcoder.txt
  25. 63
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/LICENSE
  26. 208
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/basefoods.lua
  27. 237
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/oldcoder.txt
  28. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/textures/mobs_meat.png
  29. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/textures/mobs_meat_raw.png
  30. 299
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/LICENSE
  31. 386
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/animal_materials.lua
  32. 483
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/hen.lua
  33. 128
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/lott_spider.lua
  34. 19
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/oldcoder.txt
  35. 371
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/ostrich.lua
  36. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/projects/animal_materials_egg_big+ostrich.xcf
  37. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/projects/animal_materials_egg_big_fried+ostrich.xcf
  38. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/projects/animalmaterials_lamb_raw+cooked.xcf
  39. 118
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/rat_better.lua
  40. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png
  41. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_meat_raw.png
  42. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_meat_toxic_raw.png
  43. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_meat_undead_raw.png
  44. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_pork_raw.png
  45. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_chicken_cooked.png
  46. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_chicken_raw.png
  47. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_cooked_rat.png
  48. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_egg_big_fried.png
  49. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_lamb_cooked.png
  50. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_lamb_raw.png
  51. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_meat.png
  52. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_meat_raw.png
  53. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_cooked.png
  54. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_egg.png
  55. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_egg_fried.png
  56. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_raw.png
  57. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_pork_cooked.png
  58. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_pork_raw.png
  59. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_rat_better_inv.png
  60. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_rat_cooked.png
  61. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_rat_inv.png
  62. 164
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/warthog.lua
  63. 345
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/crafts.lua
  64. 51
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/license.txt
  65. 50
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/oldcoder.txt
  66. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/textures/mobs_meat.png
  67. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/textures/mobs_meat_raw.png
  68. 13
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/oldcoder.txt
  69. 28
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/LICENSE
  70. 19
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/init.lua
  71. 7
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/oldcoder.txt
  72. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/projects/whinny_meat+raw.xcf
  73. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/textures/whinny_meat.png
  74. BIN
      Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/textures/whinny_meat_raw.png

12
Bucket_Game-base/distinguish_meats-vs-211114a/mods/LICENSE

@ -0,0 +1,12 @@
For license information, see the following files, where they exist, in
each modpack or mod:
oldcoder.txt
LICENSE
LICENSE.txt
license.txt
README.md
README.txt
readme.txt
and/or files with similar names.

23
Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/oldcoder.txt

@ -0,0 +1,23 @@
Name: coderfood
Source: New modpack based on various mods and/or modpacks
License: See "license-modpack.txt"
----------------------------------------------------------------------
1. The "food" and "food_basic" mods were extracted from the following
modpack:
https://github.com/rubenwardy/food.git
modpack-level documentation files were moved into a new subdirectory
of the "food" mod named "rwfooddoc".
----------------------------------------------------------------------
2. Additions to that starting point:
2a. Added the OldCoder mod "coderfruit".
2b. Added Milan's forks of the mods "hbhunger" and "hudbars".
2c. Added the files "00README" and "oldcoder.txt" (this file).

63
Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/LICENSE

@ -0,0 +1,63 @@
Unified Foods Licenses
----------------------------------------------------------------------
1. OldCoder Unified Foods includes a food registration system and a
hunger system.
----------------------------------------------------------------------
2. The food registration system is original code. The license for the
code in question is:
(c) 2015-2020 and CC BY-NC-SA 4.0 International: OldCoder (Robert Kir-
aly)
----------------------------------------------------------------------
3. The hunger system is descended from a MT mod named "hbhunger". The
license for "hbhunger" code is LGPL v2.1. The license for "hbhunger"
textures is MIT.
One "hbhunger" sound file is used:
better_hunger_eat_generic.ogg
The license for that file is CC BY 3.0 with attribution to:
https://freesound.org/people/xtrgamr/sounds/253619/
----------------------------------------------------------------------
4. The licenses for other files are as follows:
* ufoods_*.png: WTFPL except for "ufoods_glass_*".
* ufoods_glass_*.png: These textures are presently based on a version
of "mobs_glass_milk.png" that is licensed as follows:
The MIT License (MIT)
Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
* farming_*.png: See "farming" mod license file.
* mobs_*.png: See "mobs" mod license file.
* mtfoods_*.png:
License: (c) 2014-2020 and CC BY-NC-SA 4.0 International: Philip Rob-
inson.
* misc_baked_potato.png: WTFPL.
* coderfruit_*.png:
License: (c) 2019 and CC BY-NC-SA 4.0 International: OldCoder (Robert
Kiraly).
* moono_*.png:
License: (c) 2015-2020 and CC BY-SA 4.0 International: Moono.
* dessert_*.png and food_*.png:
License: (c) 2013-2010 and CC-BY-SA 3.0 Rubenwardy.
(end of document)

208
Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/basefoods.lua

@ -0,0 +1,208 @@
-- ===================================================================
-- "ufoods" common header.
local S
if minetest.get_modpath ("intllib") then
S = intllib.Getter()
else
S = function (s) return s end
end
local item_eat = unified_foods.item_eat
local keep_vessels = unified_foods.keep_vessels
local mra = minetest.registered_aliases
local mri = minetest.registered_items
local reg_alias = ocutil.safe_register_alias
local reg_craft = minetest.register_craft
local reg_food = unified_foods.register_food
local reg_item = ocutil.safe_register_item
local reg_juice = unified_foods.register_juice
local needitem
-- ===================================================================
needitem = reg_food ("juicer",
{
description = "Juicer" ,
external_items = "farming:juicer" ,
})
reg_craft ({
output = neednode ,
recipe = {
{ "" , "default:stone" , "" } ,
{ "default:stone" , "" , "default:stone" } ,
}
})
-- ===================================================================
needitem = reg_food ("sugar",
{
description = "Sugar" ,
external_items = {
"farming:sugar" , "jkfarming:sugar" ,
"bushes:sugar" , "mtfoods:sugar" ,
}
})
if ocutil.thing_exists ("default:papyrus") then
reg_craft ({
output = needitem .. " 20" ,
recipe = {
{ "default:papyrus" } ,
}
})
end
-- ===================================================================
-- Note: The fallback definition provided here isn't fully functional.
-- However, the expectation is that "bucket" is usually present, so
-- the fallback usually shouldn't be needed.
needitem = reg_food ("bucket_water",
{
description = "Bucket of water" ,
extra_groups = { bucket_water=1 } ,
external_items = "bucket:bucket_water" ,
})
reg_alias ("bucket:bucket_water", needitem)
-- ===================================================================
needitem = reg_food ("salt",
{
description = "Salt" ,
satiate = 0 ,
external_items = "farming:salt" ,
})
reg_craft ({
type = "cooking" ,
cooktime = 15 ,
output = needitem ,
recipe = "group:bucket_water" ,
replacements = keep_vessels ,
})
reg_alias ("farming:salt", needitem)
-- ===================================================================
needitem = reg_food ("wheat",
{
description = "Wheat" ,
external_items = {
"farming:wheat", "plantlib:wheat"
} ,
})
reg_craft ({
output = needitem ,
recipe = {
{ "default:dry_shrub" } ,
}
})
reg_alias ("farming:wheat", needitem)
-- ===================================================================
needitem = reg_food ("flour",
{
description = "Flour" ,
external_items = "farming:flour" ,
})
reg_craft ({
output = needitem ,
recipe = {
{ "group:food_wheat" } ,
{ "group:food_wheat" } ,
}
})
reg_alias ("farming:flour", needitem)
-- ===================================================================
needitem = reg_food ("bread",
{
description = "Bread" ,
stack_max = 3 ,
satiate = 5 ,
external_items = "farming:bread" ,
})
reg_craft ({
type = "cooking" ,
cooktime = 15 ,
output = needitem ,
recipe = "group:food_flour" ,
})
reg_alias ("farming:bread", needitem)
-- ===================================================================
needitem = reg_food ("egg",
{
description = "Egg" ,
stack_max = 10 ,
satiate = 1 ,
external_items = {
"mobs:egg" , "animalmaterials:egg" ,
"animalmaterials:egg_big" , "jkanimals:egg" ,
} ,
})
reg_alias ("mobs:egg", needitem)
-- ===================================================================
needitem = reg_food ("meat_raw",
{
description = "Raw meat" ,
stack_max = 25 ,
satiate = 1 ,
extra_groups = { meat=1 } ,
external_items = {
"mobs:meat_raw", "animalmaterials:meat_raw"
} ,
})
reg_alias ("mobs:meat_raw", needitem)
-- ===================================================================
needitem = reg_food ("meat",
{
description = "Cooked Meat" ,
satiate = 3 ,
extra_groups = { meat=1 } ,
external_items = {
"mobs:meat" , "jkanimals:meat" ,
"mobs:chicken_cooked" , "mobfcooking:cooked_pork" ,
"mobfcooking:cooked_beef" , "mobfcooking:cooked_chicken" ,
"mobfcooking:cooked_lamb" , "mobfcooking:cooked_venison" ,
} ,
})
reg_craft ({
type = "cooking" ,
output = needitem ,
recipe = "group:food_meat_raw" ,
cooktime = 30 ,
})
-- ===================================================================
-- End of file.

237
Bucket_Game-base/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/oldcoder.txt

@ -0,0 +1,237 @@
Name: unified_foods
Source: Original mod except for some "hbhunger" code
License: See "LICENSE"
----------------------------------------------------------------------
1. "unified_foods" is a largely original mod that provides a combined
food registration and hunger system.
The hunger system is based on a fork of "hbhunger".
This mod supersedes the following mods, though it doesn't replace all
of the foods defined in the mods:
food, food_basic, dessert, hbhunger, extra, mtfoods
----------------------------------------------------------------------
2. Overview of features.
2.1. Unified Foods supports satiation, healing, poison, and replace-
ment items as "hbhunger" did. It also offers numerous extra features.
----------------------------------------------------------------------
2.2. You don't need to explicitly hook foods any longer to support
basic operation.
Unified Foods intercepts calls to "minetest.item_eat". This means that
satiation and replacement items are supported automatically for normal
foods out of the box.
You can still hook foods to modify existing parameters or to set new
ones. However, this is optional.
----------------------------------------------------------------------
2.3. Unified Foods can merge similar items.
If there are, for example, three types of hamburgers, Unified Foods
retains all of the items or nodes, but it optionally assigns a similar
image and food parameters to all of them.
No permanent conversion is done. Just a temporary merge to promote the
sense of smoother operation. However, permanent conversion could be
added as another feature.
----------------------------------------------------------------------
2.4. Eating a particular food can optionally produce a specified mes-
sage to the user. Lists of messages are supported. If a list is speci-
fied, a random message is chosen from the list.
----------------------------------------------------------------------
2.5. "hbhunger" had a bug which prevented it from properly registering
items that didn't set "on_use". Unified Foods supports items of that
type. This means that, for example, you can make arbitrary items eata-
ble.
----------------------------------------------------------------------
2.6. Eating works whether or not damage is enabled.
If hunger is enabled and damage is disabled, the hunger time loop is
stopped and poison does no damage at the Unified Foods level.
----------------------------------------------------------------------
2.7. Two new commands "/starve" and "/satiate" have been added.
"/starve" makes the user hungry. "/satiate" makes him or her satiated
instead. These commands are useful for debugging purposes.
----------------------------------------------------------------------
2.8. It's easy to add juices to Unified Foods.
You can create a new juice, including merges with existing objects,
crafting recipes, and aliases, using just one simple statement. For
example, this statement:
reg_juice ("apple",
{ color = "#FFC929" } , { "mtfoods:apple_juice" })
sets up and/or performs all of these steps:
* Create a glass of juice named "food:apple_juice"
* Alias the glass to "mtfoods:apple_juice" if that item exists
* Set "mtfoods:apple_juice" to new juice's image and satiation
* Add a crafting recipe for new juice
* Create aliases "apple_juice" and "applejuice"
* If the player drinks the juice, replace it with empty glass
If a juice is a uniform color, the API is able to create an appropri-
ate juice image at runtime. So, it's possible to have numerous juices
without the need for numerous image files.
However, juice image files may be specified as well. This allows spe-
cial cases such as rainbow juice or worm juice to be handled.
----------------------------------------------------------------------
2.9. Unified Foods allows craft-item foods to be placed. Two modes are
supported:
Craft-items may be placed as static 2D sprites that always face the
caller.
This often looks better than the "plantlike" or "torchlike" drawing
modes that MT "_games" usually use when 2D objects are placed.
Or craft-items may be placed as dynamic 2D sprites that work the same
way but are "alive". For example, placed hamburgers may attempt to run
away from hungry players.
Craft-items may also be placed in "plantlike" or "torchlike" mode if a
world developer prefers this.
The mode in which craft-items are to be placed can be specified glob-
ally in "world.conf" or on a per-item basis in the mod source code for
individual items.
For more detailed documentation, see the comments preceding "register_
food" in "foodcore.lua".
----------------------------------------------------------------------
3. This mod requires only "default" and "hud", but "bucket" and "farm-
ing" are strongly recommended.
----------------------------------------------------------------------
4. This mod replaces the complicated API used by "food" v2 with an API
that's easier to use.
In particular, in Unified Foods, one subroutine call, in one place, is
typically enough to set up a food. Two calls, if a juice variation of
the food is desired.
Additionally, this mod restores some of the foods that were discarded
in "food" v2.
Historical note: The last pre-v2 commit to "food" was:
22be9b83c3087e15eea8878c5aef9be0f12d6158
----------------------------------------------------------------------
5. Unified Foods creates food and utensils in the "food:" namespace.
Most of these objects are original items that fall back to existing
items where possible.
For example, if "farming" is installed, "food:bread" becomes an alias
for "farming:bread". Otherwise, it's defined as a new and independent
item.
----------------------------------------------------------------------
6. If "drawtype" is set to "sprite" or "mob" for an item, "vsize" may
set, as well, to scale the size of the item up or down.
vsize = 0.50 will, for example, scale the item to half size. vsize =
2.00 will scale it to twice normal size.
The code adjusts collision boxes and vertical positions for items ap-
propriately.
----------------------------------------------------------------------
Appendix A. Partial list of objects supported.
Fruits:
Apple, Banana, Cherry, Orange, Pineapple, and Strawberry. Plus the
associated juices.
----------------------------------------------------------------------
Misc.:
Hamburger. Hamburger juice. Rainbow and worm juices. OBOE (Open Blade
of Exile) potions in multiple colors. Taco.
Raw and cooked pasta. A couple of types of breakfast cereal. Dog
treats.
Glass of Romulan Ale. Glass of Ginger Ale. Bottle of apple cider.
----------------------------------------------------------------------
Vegetables:
Onion, onion rings, onion slices.
Potato, potato juice, baked potato, potato slices, french fries, pota-
to chips.
Carrot, corn, rhubarb, and tomato. Plus most of the associated juices.
----------------------------------------------------------------------
Dairy:
Glass or bucket of milk. Butter. Cheese.
----------------------------------------------------------------------
Chocolate:
Cocoa bean, chocolate powder, dark chocolate, milk chocolate, and cup
or mug of chocolate milk.
----------------------------------------------------------------------
Coffee:
Raw coffee beans, roasted coffee beans, and cup or mug of coffee.
----------------------------------------------------------------------
Dessert:
Snackcake, blueberry muffin, raw tart base, tart base, and strawberry
tart.
Banana split, shortbread, cream, strawberry shortcake, and cupcake.
Moono desserts: Butterscotch Dillybar, Butterscotch Sundae, Heart on a
Stick, Strawberry Bar, Strawberry Icecream, and Strawberry Star.
There are also some cakes, but we encourage people to use the cakes
and pies from the "cakepie" mod instead. The cakes in this mod are
provided primarily for legacy support purposes.
----------------------------------------------------------------------
End of file.

275
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/LICENSE

@ -0,0 +1,275 @@
All of the files involved are used and distributed under FOSS licens-
es.
----------------------------------------------------------------------
License: CC0 aka CC Public Domain
is, or was, described by:
https://creativecommons.org/publicdomain/zero/1.0/
License: CC BY-SA 4.0
is, or was, described by:
https://creativecommons.org/licenses/by-sa/4.0/
License: CC BY-SA 3.0
is, or was, described by:
https://creativecommons.org/licenses/by-sa/3.0/
License: CC BY-NC-SA 4.0
is, or was, described by:
https://creativecommons.org/licenses/by-nc-sa/4.0/
License: CC BY-NC-SA 3.0
is, or was, described by:
https://creativecommons.org/licenses/by-nc-sa/3.0/
----------------------------------------------------------------------
Original components which are not covered under other copyrights and
licenses are copyright and licensed as follows:
(c) 2019 and CC BY-NC-SA 4.0: OldCoder (Robert Kiraly).
----------------------------------------------------------------------
Additional meats:
- codermobs_beef.png
- codermobs_beef_raw.png
- codermobs_ostrich_meat.png
- codermobs_ostrich_meat_raw.png
- codermobs_venison.png
- codermobs_venison_raw.png
(c) 2021 Poikilos CC BY-SA 4.0
Spider Meat:
- Edited by Poikilos, based on model and texture by AspireMint according to
<https://forums.minetest.org/viewtopic.php?f=9&t=9301> and
possibly implied by
<https://git.minetest.org/minetest-LOTR/Lord-of-the-Test/src/branch/master/README.md>.
- codermobs_lott_spider_meat_raw.png
- codermobs_lott_spider_meat.png
(c) ~2014 AspireMint and 2021 Poikilos (edited by) CC BY-SA 3.0
- history: <https://git.minetest.org/minetest-LOTR/Lord-of-the-Test/commits/branch/master/mods/lottmobs/textures/lottmobs_spider.png>
----------------------------------------------------------------------
More Creeps and Weirdos for Mobs Redo
https://github.com/22i/amcaw
(Poikilos fork: https://github.com/poikilos/amcaw)
includes: baby, blorp, bubblescum, camel, castle critter, castle guard,
castle king, cavelady, caveman, desert lizard, digibug, discomole,
flobmothership, floob, g, googoat, growbotgreg, guineapig, hippo,
hotdog, hunchback, lawyer, loliman, mandog, oldlady, ponie, ponygirl,
ragingbull, ratman, robotted, robottod, rocketgirafe, rockmonster,
sneaky sal, snowdevil and zebra.
(c) Astromojang, RickWeek84, amcaw CC BY-SA 3.0
except:
- codermobs_oldlady_sea_hag_mesh.png
(c) Astromojang, RickWeek84, amcaw and 2021 Poikilos (edited by)
CC BY-SA 3.0
----------------------------------------------------------------------
Skeletons:
mdskeleton model:
Mdoege
mdskeleton texture (replaced 2019):
(c) 2019 Poikilos CC BY-SA 4.0
mdskeleton sounds (replaced 2019):
(c) 2019 Poikilos CC BY-SA 4.0
---------------------------------------------------------------------
Models and mesh textures for "baby_chick", "bom", and "icebom":
(c) 2019 and CC-BY-NC-SA 4.0: Poikilos. OldCoder as well for the "ice-
bom" mesh texture.
For sound-file information, see the Lua files.
----------------------------------------------------------------------
Denny code and media:
See "denny.lua"
----------------------------------------------------------------------
Improved Spider/Bug Sounds:
codermobs_damage_giant_exoskeleton, codermobs_death_giant_bug,
codermobs_use_giant_exoskeleton
(c) 2019 and CC BY-SA 4.0: Poikilos
Improved Particles:
codermobs_blood, codermobs_damage_stone, codermobs_lott_spider_blood
(c) 2019 and CC BY-SA 4.0: Poikilos
codermobs_fireball:
(c) 2012 to 2019 and CC-BY-SA 3.0: Sapier, Poikilos
----------------------------------------------------------------------
Media for "animal_materials", "deer", "elk", and "ostrich":
See the 5 associated Lua source files. In general, the media is:
(c) 2012 to 2019 and CC-BY-SA 3.0: Sapier and Poikilos.
The "ostrich" texture is as described above but also attribution: Old-
Coder.
Code for "animal_materials": Same as media. The other 4 mobs listed
here use new code.
More about the Elk:
Pixel Art Elk texture:
(c) 2012 to 2019 and CC BY-SA 3.0: Sapier, Polikilos (skinned by)
HD (video-based) and Lo-fi (16-color video-based) Elk Textures:
based on Elk video "Elk.webm.360p.vp9" (CC BY 2.0 Generic)
Stephen Baker [BLM/Oregon](blm.gov/yg5c).jpg, Poikilos (skinned by)
Additionally, "chicken.lua" uses Sapier's 3D egg. See that Lua source
file as well.
----------------------------------------------------------------------
Egg texture:
MIT License
(c) 2016-2019 TenPlus1 and Poikilos
----------------------------------------------------------------------
Car model:
(c) 2015 and CC-BY-NC-SA 3.0: Melkor.
----------------------------------------------------------------------
mdoege code and/or media
-----------------------------
WTFPL
PilzAdam code and/or media
-----------------------------
WTFPL
Bat
-----------------------------
Code: GPL
Model and texture: CC BY-SA 3.0. Attribution: Defense Subgame.
Sound file: WTFPL
Birds
-----------------------------
(c) 2012-2019 and CC-BY-SA 3.0: Sapier, Poikilos. Sapier created
the original models. Poikilos derived new models from them and created
new textures.
Butterfly
-----------------------------
(c) 2012 to 2019 and CC BY-SA 3.0: AspireMint.
Realistic Milk Bucket
-----------------------------
(c) 2015-2019 and CC BY-SA 3.0: ElementW, Poikilos (modified by).
D00Med code
-----------------------------
GNU Lesser General Public License 2.1
D00Med models and/or textures
-----------------------------
Originals: CC BY-SA 3.0 Unported. Attribution: D00Med.
New panda texture: CC BY SA 3.0 2016 D00Med and 2021 Poikilos
Mr. Goat
-----------------------------
(c) 2016 to 2019 and CC BY-SA 3.0: Don Batman. OldCoder worked on the
eyes.
NSSM components
-----------------------------
No NSSM are believed presently to be used. If they're used in the
future, the applicable license will be GPL3.
Sapier components
-----------------------------
(c) 2012-2019 and CC-BY-SA 3.0: Sapier.
"mobs_mc" components
-----------------------------
Code and models: GNU GPL V3
Other "mobs_mc" Polar Bear media: CC BY-SA 4.0. Attribution: "mobs_mc"
team.
Skandarella components
-----------------------------
For snail, kangaroo, tiger, and T-Rex media license information, see:
license-skandarella.txt
----------------------------------------------------------------------
Krupnov Pavel and TenPlus1 components:
The MIT License (MIT)
(c) 2014 Krupnov Pavel -- bugs, kpgmobs, pmobs
(c) 2014 Krupnov Pavel and 2016 TenPlus1 -- mobs_animal
(c) 2016 TenPlus1 -- mobs_monster and mobs_npc
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------------------------------------
Blockmen components:
(c) 2015-2016 BlockMen <blockmen2015@gmail.com>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product documentation
is required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
(end of document)

347
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/animal_materials.lua

@ -0,0 +1,347 @@
-- ===================================================================
-- Code and media license.
--
-- You may copy, use, modify or do nearly anything but remove this
-- copyright notice. Of course, you're not allowed to pretend you've
-- created or written the Sapier or Poikilos pieces.
--
-- CC-BY-SA 3.0. Attribution: Sapier and Poikilos.
-- ===================================================================
-- Boilerplate to support localized strings if intllib mod is install-
-- ed.
local S
if (minetest.get_modpath("intllib")) then
dofile(minetest.get_modpath("intllib").."/intllib.lua")
S = intllib.Getter(minetest.get_current_modname())
else
S = function ( s ) return s end
end
core.log("action","MOD: animal_materials loading ...")
local version = "0.1.3"
animal_materialsdata = {}
-- ===================================================================
-- Node definitions
-- ===================================================================
-- Item definitions
-- ===================================================================
-- deamondeath sword
minetest.register_tool(":animal_materials:sword_deamondeath", {
description = S("Sword (Deamondeath)"),
inventory_image = "default_tool_steelsword.png",
tool_capabilities = {
full_punch_interval = 0.50,
max_drop_level=1,
groupcaps={
fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=1},
snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1},
choppy={times={[3]=0.70}, uses=40, maxlevel=0},
deamon={times={[1]=0.25, [2]=0.10, [3]=0.05}, uses=20, maxlevel=3},
}
}
})
-- ===================================================================
-- scissors
--
minetest.register_tool(":animal_materials:scissors", {
description = S("Scissors"),
inventory_image = "animal_materials_scissors.png",
tool_capabilities = {
max_drop_level=0,
groupcaps={
wool = {uses=40,maxlevel=1}
}
},
})
-- ===================================================================
-- lasso
minetest.register_craftitem(":animal_materials:lasso", {
description = S("Lasso"),
image = "animal_materials_lasso.png",
stack_max=10,
})
-- ===================================================================
-- net
minetest.register_craftitem(":animal_materials:net", {
description = S("Net"),
image = "animal_materials_net.png",
stack_max=10,
})
-- ===================================================================
-- saddle
minetest.register_craftitem(":animal_materials:saddle", {
description = S("Saddle"),
image = "animal_materials_saddle.png",
stack_max=1
})
-- ===================================================================
-- contract
minetest.register_craftitem(":animal_materials:contract", {
description = S("Contract"),
image = "animal_materials_contract.png",
stack_max=10,
})
-- ===================================================================
-- meat
minetest.register_craftitem(":animal_materials:meat_raw", {
description = S("Raw meat"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_pork", {
description = S("Pork (raw)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_beef", {
description = S("Beef (raw)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_chicken", {
description = S("Chicken (raw)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_lamb", {
description = S("Lamb (raw)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_venison", {
description = S("Venison (raw)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_undead", {
description = S("Meat (not quite dead)"),
image = "animal_materials_meat_undead_raw.png",
on_use = minetest.item_eat(-2),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:meat_toxic", {
description = S("Toxic Meat"),
image = "animal_materials_meat_toxic_raw.png",
on_use = minetest.item_eat(-5),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:meat_ostrich", {
description = S("Ostrich Meat"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(3),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:pork_raw", {
description = S("Pork"),
image = "animal_materials_pork_raw.png",
on_use = minetest.item_eat(4),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:fish_bluewhite", {
description = S("Fish (bluewhite)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:fish_clownfish", {
description = S("Fish (clownfish)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
-- ===================================================================
-- feather
minetest.register_craftitem(":animal_materials:feather", {
description = S("Feather"),
image = "animal_materials_feather.png",
stack_max=25
})
-- ===================================================================
-- milk
minetest.register_craftitem(":animal_materials:milk", {
description = S("Milk"),
image = "animal_materials_milk.png",
on_use = minetest.item_eat(1),
groups = { eatable=1 },
stack_max=10
})
-- ===================================================================
-- egg
minetest.register_craftitem(":animal_materials:egg", {
description = S("Egg"),
image = "animal_materials_egg.png",
stack_max=10
})
minetest.register_craftitem(":animal_materials:egg_big", {
description = S("Egg (big)"),
image = "animal_materials_egg_big.png",
stack_max=5
})
animal_materialsdata["animal_materials_egg"] = {
graphics_3d = {
visual = "mesh",
mesh = "animal_materials_egg_ent.b3d",
textures = { "animal_materials_egg_ent_mesh.png" },
collisionbox = { -0.12,-0.125,-0.12,0.12,0.125,0.12 },
visual_size = {x=1,y=1,z=1},
}
}
animal_materialsdata["animal_materials_egg_big"] = {
graphics_3d = {
visual = "mesh",
mesh = "animal_materials_egg_ent.b3d",
textures = { "animal_materials_egg_ent_mesh.png" },
collisionbox = { -0.24,-0.25,-0.24,0.24,0.25,0.24 },
visual_size = {x=2,y=2,z=2},
}
}
-- ===================================================================
-- bone
minetest.register_craftitem(":animal_materials:bone", {
description = S("Bone"),
image = "animal_materials_bone.png",
stack_max=25
})
-- ===================================================================
-- furs
minetest.register_craftitem(":animal_materials:fur", {
description = S("Fur"),
image = "animal_materials_fur.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:fur_deer", {
description = S("Deer fur"),
image = "animal_materials_deer_fur.png",
stack_max=10
})
minetest.register_craftitem(":animal_materials:coat_cattle", {
description = S("Cattle coat"),
image = "animal_materials_cattle_coat.png",
stack_max=10
})
-- ===================================================================
-- horns
minetest.register_craftitem(":animal_materials:antlers", {
description = S("Antlers"),
image = "animal_materials_antlers.png",
stack_max=20
})
minetest.register_craftitem(":animal_materials:ivory", {
description = S("Ivory"),
image = "animal_materials_ivory.png",
stack_max=20
})
-- ===================================================================
-- scale
minetest.register_craftitem(":animal_materials:scale_golden", {
description = S("Scale (golden)"),
image = "animal_materials_scale_golden.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:scale_white", {
description = S("Scale (white)"),
image = "animal_materials_scale_white.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:scale_grey", {
description = S("Scale (grey)"),
image = "animal_materials_scale_grey.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:scale_blue", {
description = S("Scale (blue)"),
image = "animal_materials_scale_blue.png",
stack_max=25
})
-- ===================================================================
-- recipes
minetest.register_craft({
output = "wool:white",
recipe = {
{"animal_materials:feather","animal_materials:feather","animal_materials:feather"},
{"animal_materials:feather", "animal_materials:feather","animal_materials:feather"},
{"animal_materials:feather","animal_materials:feather","animal_materials:feather"},
}
})
minetest.register_craft({
output = "animal_materials:contract",
recipe = {
{"default:paper"},
{"default:paper"},
}
})

463
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/hen.lua

@ -0,0 +1,463 @@
-- Hen. Descended from "Farlands" version.
-- ===================================================================
-- License information for Sapier's 3D-egg media.
--
-- You may copy, use, modify or do nearly anything but remove this
-- copyright notice. Of course, you're not allowed to pretend you've
-- created or written the Sapier pieces.
--
-- CC-BY-SA 3.0. Attribution: Sapier.
-- ===================================================================
local numset = codermobs.numset_if_any
local codermobs_egg_time_delay =
numset ("codermobs_egg_time_delay" ) or 120
if codermobs_egg_time_delay < 3 then
codermobs_egg_time_delay = 3
end
local codermobs_egg_hatch_chance =
numset ("codermobs_egg_hatch_chance" ) or 3
local EGG_UNFERTILIZED = 1
local EGG_FERTILIZED = 2
-- ===================================================================
local lcname = "chicken"
local ucname = "Chicken"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- This mob is a special case
local obj_hen = "codermobs:hen"
-- ===================================================================
mobs_param = {
lcname = "hen" ,
ucname = "Hen" ,
obj_name = "codermobs:hen" ,
aoc = 4 ,
spawn_chance = 20000 ,
day_mode = true ,
min_light = 5 ,
max_light = 30 ,
min_height = -31000 ,
max_height = 31000 ,
spawn_type = "animal" ,
spawn_nodes = {
"default:dirt_with_dry_grass" ,
"default:dirt_with_grass" ,
"earthgen:dirt_with_dry_grass" ,
"ethereal:bamboo_dirt" ,
"ethereal:green_dirt" ,
"ethereal:green_dirt_top" ,
"ethereal:grove_dirt" ,
"mg:dirt_with_dry_grass" ,
"noisegrid:grass" ,
} ,
add_egg = true ,
egg_image = "wool_brown.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
local msname_cooked = msname .. "_cooked"
local msname_raw = msname .. "_raw"
local msname_img = msname .. ".png"
local msname_cooked_img = msname_cooked .. ".png"
local msname_raw_img = msname_raw .. ".png"
local msname_egg = msname .. "_egg"
local msname_egg_fried = msname_egg .. "_fried"
local msname_egg_img = msname_egg .. ".png"
local msname_egg_fried_img = msname_egg_fried .. ".png"
local obj_name_cooked = obj_name .. "_cooked"
local obj_name_raw = obj_name .. "_raw"
local obj_name_egg = obj_name .. "_egg"
local obj_name_egg_entity = obj_name_egg .. "_entity"
local obj_name_egg_fried = obj_name_egg .. "_fried"
-- ===================================================================
local do_breed = function (self)
local pos = self.object:getpos()
local objs = minetest.get_objects_inside_radius (pos, 12)
local egg_status = EGG_UNFERTILIZED
for n = 1, #objs do
if not objs [n]:is_player() then
local obj = objs [n]:get_luaentity()
if obj and obj.name == "codermobs:rooster" then
egg_status = EGG_FERTILIZED
end
end
end
minetest.set_node (pos,
{ name = obj_name_egg, param2 = egg_status })
minetest.sound_play ("chicken_lay_egg", {
pos = pos, gain = 1.0, max_hear_distance = 5,
})
end
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
makes_footstep_sound = true ,
-- Most behavior/sight/battle
armor = 200 ,
attack_type = "dogfight" ,
damage = 1 ,
hp_max = 10 ,
hp_min = 5 ,
passive = false ,
reach = 1 ,
runaway = true ,
view_range = 5 ,
-- Velocities
run_velocity = 3 ,
walk_velocity = 1 ,
-- Step/jump/fall parameters
fall_damage = 0 ,
fall_speed = -8 ,
fear_height = 5 ,
jump = false ,
jump_height = 0 ,
stepheight = 1.2 ,
-- Environment damage
lava_damage = 5 ,
light_damage = 0 ,
water_damage = 1 ,
-- Misc. parameters
floats = 0 ,
-- Too small:
-- collisionbox = {-0.2, 0, -0.2, 0.2, 0.45, 0.2},
-- Too large:
-- collisionbox = {-0.4, 0, -0.4, 0.4, 0.90, 0.4},
-- visual_size = { x=2, y=2 },
collisionbox = { -0.30, -0.01 , -0.30, 0.30, 0.66, 0.30 } ,
mesh = msname .. ".b3d" ,
textures = {{ "codermobs_hen_mesh.png" }} ,
visual = "mesh" ,
visual_size = { x=1.5, y=1.5 } ,
animation = {
stand_start = 0 ,
stand_end = 20 ,
walk_start = 25 ,
walk_end = 45 ,
speed_normal = 15 ,
} ,
drops = {
{ name=obj_name_raw, chance=1, min=2, max=2 } ,
} ,
follow = {
"farming:seed_wheat", "farming:seed_cotton"
} ,
sounds = { random = msname } ,
specific_attack = codermobs.make_mob_list ({
"bug", "beetle"
}) ,
on_rightclick = function (self, clicker)
if mobs:feed_tame (self, clicker, 8, true, true) then
return
end
mobs:protect (self, clicker)
mobs:capture_mob (self, clicker, 30, 50, 80, false, nil)
end,
do_custom = function (self)
if self.child or math.random (1, 4000) > 1 then return end
do_breed (self)
end ,
-- Poikilos June 2019: false here prevents the creation of a mini-
-- chicken based on the adult mesh.
on_breed = function (self, ent)
do_breed (self)
return false
end ,
}
-- ===================================================================
codermobs.setup_mob()
mobs:alias_mob ("codermobs:chicken" , obj_hen)
mobs:alias_mob ("codermobs:chook" , obj_hen)
mobs:alias_mob ("mobs:chicken" , obj_hen)
mobs:alias_mob ("mobs_animal:chicken" , obj_hen)
-- ===================================================================
-- Egg throwing item
local egg_GRAVITY = 9
local egg_VELOCITY = 19
-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
local playerpos = player:getpos()
minetest.sound_play("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
})
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, obj_name_egg_entity)
local ent = obj:get_luaentity()
local dir = player:get_look_dir()
ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:setvelocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
})
obj:setacceleration({
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
item:take_item()
return item
end
-- ===================================================================
-- Egg.
minetest.register_node (obj_name_egg, {
description = ucname .. " Egg",
inventory_image = msname_egg_img ,
wield_image = msname_egg_img ,
paramtype = "light",
walkable = false,
is_ground_content = true,
sunlight_propagates = true,
-- This draws the new 3D chicken egg:
--
drawtype = "mesh" ,
mesh = "codermobs_chicken_egg.b3d" ,
tiles = { "animal_materials_egg_ent_mesh.png" } ,
selection_box = {
type = "fixed" ,
fixed = { -0.12,-0.425,-0.12,0.12,-0.175,0.12 } ,
} ,
visual_scale = 0.12 ,
groups = {snappy = 2, dig_immediate = 3},
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos,
{ name = obj_name_egg, param2 = EGG_UNFERTILIZED })
end
end,
on_construct = function (pos)
minetest.get_node_timer (pos):start (codermobs_egg_time_delay)
end ,
on_use = mobs_shoot_egg ,
on_timer = function (pos, elapsed)
local self = minetest.get_node (pos)
local sp2 = self.param2
minetest.remove_node (pos)
if sp2 ~= nil and sp2 == EGG_FERTILIZED then
local num = math.random (1, codermobs_egg_hatch_chance)
if num == 1 then
minetest.add_entity (pos, "codermobs:baby_chick")
end
end
end ,
})
minetest.register_alias ("codermobs:egg" , obj_name_egg)
minetest.register_alias ("mobs:egg" , obj_name_egg)
minetest.register_alias ("egg" , obj_name_egg)
-- ===================================================================
-- Egg entity
mobs:register_arrow (obj_name_egg_entity, {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = { msname_egg_img } ,
velocity = 6,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_node = function(self, pos, node)
local num = math.random(1, 10)
-- RJK 191223: This code is disabled for now because it'll presently
-- crash if it's used.
if false and num == 1 then
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
local mob = minetest.add_entity (pos, obj_name)
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
end
})
-- ===================================================================
-- Fried egg.
minetest.register_craftitem (obj_name_egg_fried, {
description = "Fried " .. ucname .. " Egg" ,
inventory_image = msname_egg_fried_img ,
on_use = minetest.item_eat (2) ,
})
minetest.register_alias ("mobs:chicken_egg_fried",
obj_name_egg_fried)
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_egg ,
output = obj_name_egg_fried ,
})
-- ===================================================================
-- Raw bird.
minetest.register_craftitem (obj_name_raw, {
description = "Raw " .. ucname ,
inventory_image = msname_raw_img ,
on_use = function (itemstack, player, pointed_thing)
local name = player:get_player_name()
local msg = name .. " ate raw " .. ucname .. ". Salmonella!"
minetest.chat_send_all (msg)
player:set_hp (player:get_hp() - 2)
end ,
})
minetest.register_alias ("mobs:chicken_raw", obj_name_raw)
-- ===================================================================
-- Cooked bird.
minetest.register_craftitem (obj_name_cooked, {
description = "Cooked " .. ucname ,
inventory_image = msname_cooked_img ,
on_use = minetest.item_eat (6) ,
})
minetest.register_alias ("mobs:chicken_cooked",
obj_name_cooked)
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_raw ,
output = obj_name_cooked ,
})
-- ===================================================================
-- Chicken feather.
minetest.register_craftitem ("codermobs:chicken_feather", {
description = "Feather" ,
inventory_image = "codermobs_chicken_feather.png" ,
})
minetest.register_alias ("mobs:chicken_feather",
"codermobs:chicken_feather")
-- ===================================================================
codermobs.log_done()
-- ===================================================================
-- End of file.

128
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/lott_spider.lua

@ -0,0 +1,128 @@
-- Giant Spider. Descended from LOTT version.
-- ===================================================================
local lcname = "lott_spider"
local ucname = "LOTT Spider"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = -1 ,
spawn_chance = 120000 ,
day_mode = true ,
min_light = 0 ,
max_light = 30 ,
min_height = -31000 ,
max_height = 31000 ,
spawn_type = "npc" ,
spawn_nodes = {
"default:junglegrass" ,
"default:jungleleaves" ,
"default:jungletree" ,
} ,
add_egg = true ,
egg_image = "default_stone.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
minetest.register_craftitem (obj_name .. "_meat", {
description = "Cooked Meat",
inventory_image = msname .. "_meat.png",
on_use = minetest.item_eat (4),
})
minetest.register_craftitem (obj_name .. "_meat_raw", {
description = "Raw Meat",
inventory_image = msname .. "_meat_raw.png",
})
minetest.register_craft ({
type = "cooking",
output = obj_name .. "_meat",
recipe = obj_name .. "_meat_raw",
})
mobs_param.core_param = {
type = mobs_param.spawn_type ,
passive = false,
attacks_monsters = true,
hp_min = 15,
hp_max = 30,
collisionbox = {-0.9, -0.01, -0.7, 0.7, 0.6, 0.7},
textures = { msname .. ".png"} ,
visual_size = {x=7,y=7},
visual = "mesh",
mesh = msname .. ".x",
makes_footstep_sound = true,
view_range = 15,
walk_velocity = 1,
run_velocity = 3,
armor = 200,
damage = 3,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
drops = {
{ name = "farming:string" ,
chance = 2, min = 1, max = 3 } ,
{ name = obj_name .. "_meat_raw" ,
chance = 4, min = 1, max = 2 } ,
} ,
light_resistant = true,
drawtype = "front",
water_damage = 5,
floats = 0,
runaway = true,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 1,
stand_end = 1,
walk_start = 20,
walk_end = 40,
run_start = 20,
run_end = 40,
punch_start = 50,
punch_end = 90,
},
blood_texture = msname .. "_blood.png",
sounds = {
war_cry = "codermobs_eerie" ,
damage = "codermobs_damage_giant_exoskeleton" ,
death = "codermobs_death_giant_bug" ,
attack = "codermobs_use_giant_exoskeleton" ,
},
}
-- ===================================================================
codermobs.setup_mob()
mobs:alias_mob ("mobs_monster:spider" , obj_name)
codermobs.log_done()
-- ===================================================================
-- End of file.

19
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/oldcoder.txt

@ -0,0 +1,19 @@
Name: codermobs
Source: New mod using existing media files
License: See "LICENSE"
----------------------------------------------------------------------
1. This is a new mod which implements a number of Final Minetest 3D
mobs.
For general information, see the "_game" documentation, which covers
this mod and the associated modpack in detail.
----------------------------------------------------------------------
2. The code is largely new, but it includes elements from existing
mods. The media files, in most cases, have been extracted from the
same or similar mods.
For license information, see "LICENSE".

355
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/ostrich.lua

@ -0,0 +1,355 @@
-- Ostrich. Descended from Sapier version.
-- ===================================================================
-- Media license. Applies to model and associated texture.
--
-- You may copy, use, modify or do nearly anything but remove this
-- copyright notice. Of course, you're not allowed to pretend you've
-- created or written the Sapier, Poikilos, or OldCoder pieces.
--
-- CC-BY-SA 3.0. Attribution: Sapier, Poikilos, and OldCoder.
-- ===================================================================
local lcname = "ostrich"
local ucname = "Ostrich"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = -1 ,
spawn_chance = 80000 ,
day_mode = true ,
min_light = 14 ,
max_light = 20 ,
min_height = 0 ,
max_height = 200 ,
spawn_type = "animal" ,
spawn_nodes = {
"default:dirt_with_dry_grass" ,
"ethereal:mushroom_dirt" ,
} ,
spawn_by = {
"group:dry_grass" ,
"group:grass" ,
"flowers:mushroom_brown" ,
} ,
add_egg = true ,
egg_image = "wool_pink.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
-- Chicken-based images stand in for ostrich-based images in some
-- cases.
local mcname = "codermobs_chicken"
local msname_cooked = mcname .. "_cooked"
local msname_raw = mcname .. "_raw"
local msname_img = mcname .. ".png"
local msname_cooked_img = msname_cooked .. ".png"
local msname_raw_img = msname_raw .. ".png"
local msname_egg = mcname .. "_egg"
local msname_egg_fried = msname_egg .. "_fried"
local msname_egg_fried_img = msname_egg_fried .. ".png"
local msname_egg_img = msname_egg .. ".png"
local obj_name_cooked = obj_name .. "_cooked"
local obj_name_raw = obj_name .. "_raw"
local obj_name_egg = obj_name .. "_egg"
local obj_name_egg_entity = obj_name_egg .. "_entity"
local obj_name_egg_fried = obj_name_egg .. "_fried"
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
makes_footstep_sound = true ,
armor = 200 ,
attack_npcs = false ,
attack_type = "dogfight" ,
damage = 2 ,
fear_height = 3 ,
floats = 0 ,
group_attack = true ,
hp_max = 15 ,
hp_min = 5 ,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
owner_loyal = true ,
passive = false ,
pushable = true ,
reach = 2 ,
run_velocity = 3 ,
runaway = true ,
type = "animal" ,
view_range = 10 ,
walk_velocity = 2 ,
lava_damage = 5 ,
light_damage = 0 ,
water_damage = 1 ,
collisionbox = { -0.50, -0.85, -0.50, 0.50, 0.60, 0.50 } ,
mesh = "codermobs_ostrich.b3d" ,
rotate = 270 ,
textures = { "codermobs_ostrich_mesh.png" } ,
visual = "mesh" ,
sounds = {
} ,
follow = { "default:apple", "farming:potato" } ,
drops = {
{
name="animal_materials:meat_ostrich",
chance=1, min=1, max=3
} ,
} ,
specific_attack = codermobs.make_mob_list ({
"chicken", "bunny",
}) ,
animation = {
speed_normal = 10 ,
stand_start = 1 ,
stand_end = 40 ,
walk_start = 41 ,
walk_end = 81 ,
},
on_rightclick = function (self, clicker)
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, 50, false, nil) then
return
end
end,
}
-- ===================================================================
codermobs.setup_mob()
-- ===================================================================
-- Egg-throwing item
local egg_GRAVITY = 9
local egg_VELOCITY = 19
-- Shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
local playerpos = player:getpos()
minetest.sound_play ("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
})
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, obj_name_egg_entity)
local ent = obj:get_luaentity()
local dir = player:get_look_dir()
ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:setvelocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
})
obj:setacceleration({
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
item:take_item()
return item
end
-- ===================================================================
-- Egg.
minetest.register_node (obj_name_egg, {
description = ucname .. " Egg",
inventory_image = msname_egg_img ,
wield_image = msname_egg_img ,
paramtype = "light",
walkable = false,
is_ground_content = true,
sunlight_propagates = true,
drawtype = "mesh" ,
mesh = "animal-materials-egg.b3d" ,
tiles = { "animal_materials_egg_ent_mesh.png" } ,
visual_scale = 0.24 ,
selection_box = {
type = "fixed" ,
fixed = { -0.25, -0.25, -0.25, 0.25, 0.25, 0.24 } ,
} ,
groups = {snappy = 2, dig_immediate = 3},
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos, {name = obj_name_egg, param2 = 1})
end
end ,
on_use = mobs_shoot_egg ,
})
-- ===================================================================
-- Egg entity.
mobs:register_arrow (obj_name_egg_entity, {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = { msname_egg_img } ,
velocity = 6,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_node = function (self, pos, node)
local num = math.random (1, 10)
-- RJK 191223: This code is disabled for now because it'll presently
-- crash if it's used.
if false and num == 1 then
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
local mob = minetest.add_entity (pos, obj_name)
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
end
})
-- ===================================================================
-- Fried egg.
minetest.register_craftitem (obj_name_egg_fried, {
description = "Fried " .. ucname .. " Egg" ,
inventory_image = msname_egg_fried_img ,
on_use = minetest.item_eat (3) ,
})
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_egg ,
output = obj_name_egg_fried ,
})
-- ===================================================================
-- Raw bird.
minetest.register_craftitem (obj_name_raw, {
description = "Raw " .. ucname ,
inventory_image = msname_raw_img ,
on_use = function (itemstack, player, pointed_thing)
local name = player:get_player_name()
local msg = name .. " ate raw " .. ucname .. ". Salmonella!"
minetest.chat_send_all (msg)
player:set_hp (player:get_hp() - 2)
end ,
})
-- ===================================================================
-- Cooked bird.
minetest.register_craftitem (obj_name_cooked, {
description = "Cooked " .. ucname ,
inventory_image = msname_cooked_img ,
on_use = minetest.item_eat (6) ,
})
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_raw ,
output = obj_name_cooked ,
})
-- ===================================================================
codermobs.log_done()
-- ===================================================================
-- End of file.

118
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/rat_better.lua

@ -0,0 +1,118 @@
-- Better Rat. Descended from Melkor version.
-- Note: Should be loaded *after* regular rat.
-- ===================================================================
local lcname = "rat_better"
local ucname = "Rat_Better"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = 2 ,
spawn_chance = 150000 ,
day_mode = true ,
min_light = 10 ,
max_light = 20 ,
min_height = -31000 ,
max_height = 31000 ,
scale = 1.5 ,
spawn_type = "animal" ,
spawn_nodes = {
"darkage:silt" ,
"default:desert_sand" ,
"default:dirt_with_dry_grass" ,
"default:dirt_with_grass" ,
"default:silver_sand" ,
"default:stone" ,
"earthgen:dirt_with_dry_grass" ,
"ethereal:green_dirt" ,
"ethereal:green_dirt_top" ,
"ethereal:grove_dirt" ,
"ethereal:mushroom_dirt" ,
"loud_walking:polluted_dirt" ,
"mg:dirt_with_dry_grass" ,
"noisegrid:grass" ,
} ,
add_egg = false ,
egg_image = msname .. "_inv.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
visual = "mesh" ,
mesh = msname .. ".b3d" ,
rotate = 180,
textures = {
{ msname .. "_black.png" } ,
{ msname .. "_brown.png" } ,
{ msname .. "_gray.png" } ,
{ msname .. "_white.png" } ,
},
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
hp_min= 2,
hp_max = 5,
armor = 80,
knock_back = 2,
blood_amount = 1,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
water_damage = 1,
floats = 0,
runaway = true,
lava_damage = 5,
fall_damage = 0,
damage = 1,
attack_type = "dogfight",
group_attack = true,
drops = {
{ name="mobs:cheese", chance=1, min=1, max=2 } ,
} ,
follow = { "mobs:cheese" , } ,
replace_rate = 50,
replace_what = { "mobs:cheese" , "mobs:cheeseblock" , } ,
replace_with = "air",
view_range = 8,
on_rightclick = function (self, clicker)
mobs:capture_mob (self, clicker, 25, 80, 0, true, nil)
end ,
}
-- cooked rat, yummy!
minetest.register_craft ({
type = "cooking" ,
output = "codermobs:rat_standard_cooked" ,
recipe = obj_name ,
cooktime = 5,
})
-- ===================================================================
codermobs.setup_mob()
codermobs.log_done()
-- ===================================================================
-- End of file.

154
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/warthog.lua

@ -0,0 +1,154 @@
-- Warthog. Descended from KrupnoPavel version.
-- ===================================================================
local lcname = "warthog"
local ucname = "Warthog"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = -1 ,
spawn_chance = 80000 ,
day_mode = true ,
min_light = 14 ,
max_light = 20 ,
min_height = 0 ,
max_height = 200 ,
spawn_type = "animal" ,
spawn_nodes = {
"default:dirt_with_dry_grass" ,
"ethereal:mushroom_dirt" ,
} ,
spawn_by = {
"group:dry_grass" ,
"group:grass" ,
"flowers:mushroom_brown" ,
} ,
add_egg = true ,
egg_image = "wool_pink.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
makes_footstep_sound = true ,
armor = 200 ,
attack_npcs = false ,
attack_type = "dogfight" ,
damage = 2 ,
fear_height = 2 ,
floats = 0 ,
group_attack = true ,
hp_max = 15 ,
hp_min = 5 ,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
owner_loyal = true ,
passive = false ,
pushable = true ,
reach = 2 ,
run_velocity = 3 ,
runaway = true ,
type = "animal" ,
view_range = 10 ,
walk_velocity = 2 ,
lava_damage = 5 ,
light_damage = 0 ,
water_damage = 1 ,
collisionbox = { -0.40, -0.01, -0.40, 0.40, 0.95, 0.40 } ,
mesh = msname .. ".x" ,
textures = {{ msname .. ".png" }} ,
visual = "mesh" ,
animation = {
stand_start = 25 ,
stand_end = 55 ,
punch_start = 70 ,
punch_end = 100 ,
walk_start = 70 ,
walk_end = 100 ,
speed_normal = 15 ,
} ,
sounds = {
random = "mobs_pig",
attack = "mobs_pig_angry",
} ,
follow = { "default:apple", "farming:potato" } ,
drops = {
{ name="mobs:pork_raw", chance=1, min=1, max=3 } ,
} ,
specific_attack = codermobs.make_mob_list ({
"rat" , "rat_better", "chicken",
}) ,
on_rightclick = function (self, clicker)
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, 50, false, nil) then
return
end
end,
}
-- ===================================================================
-- raw porkchop
minetest.register_craftitem(":mobs:pork_raw", {
description = "Raw Porkchop" ,
inventory_image = "codermobs_pork_raw.png",
on_use = minetest.item_eat(4),
groups = {food_meat_raw = 1, food_pork_raw = 1, flammable = 2},
})
-- cooked porkchop
minetest.register_craftitem(":mobs:pork_cooked", {
description = "Cooked Porkchop" ,
inventory_image = "codermobs_pork_cooked.png",
on_use = minetest.item_eat(8),
groups = {food_meat = 1, food_pork = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:pork_cooked",
recipe = "mobs:pork_raw",
cooktime = 5,
})
-- ===================================================================
codermobs.setup_mob()
mobs:alias_mob ("mobs:pumba" , obj_name)
mobs:alias_mob ("mobs:warthog" , obj_name)
mobs:alias_mob ("mobs_animal:pumba" , obj_name)
codermobs.log_done()
-- ===================================================================
-- End of file.

324
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/mobs/crafts.lua

@ -0,0 +1,324 @@
local S = mobs.intllib
-- name tag
minetest.register_craftitem("mobs:nametag", {
description = S("Name Tag"),
inventory_image = "mobs_nametag.png",
groups = {flammable = 2},
})
if minetest.get_modpath("dye") and minetest.get_modpath("farming") then
minetest.register_craft({
type = "shapeless",
output = "mobs:nametag",
recipe = {"default:paper", "dye:black", "farming:string"},
})
end
-- leather
minetest.register_craftitem("mobs:leather", {
description = S("Leather"),
inventory_image = "mobs_leather.png",
groups = {flammable = 2},
})
-- raw meat
minetest.register_craftitem("mobs:meat_raw", {
description = S("Raw Meat"),
inventory_image = "mobs_meat_raw.png",
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2},
})
-- cooked meat
minetest.register_craftitem("mobs:meat", {
description = S("Meat"),
inventory_image = "mobs_meat.png",
on_use = minetest.item_eat(8),
groups = {food_meat = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:meat",
recipe = "mobs:meat_raw",
cooktime = 5,
})
-- lasso
minetest.register_tool("mobs:lasso", {
description = S("Lasso (right-click animal to put in inventory)"),
inventory_image = "mobs_magic_lasso.png",
groups = {flammable = 2},
})
if minetest.get_modpath("farming") then
minetest.register_craft({
output = "mobs:lasso",
recipe = {
{"farming:string", "", "farming:string"},
{"", "default:diamond", ""},
{"farming:string", "", "farming:string"},
}
})
end
minetest.register_alias("mobs:magic_lasso", "mobs:lasso")
-- net
minetest.register_tool("mobs:net", {
description = S("Net (right-click animal to put in inventory)"),
inventory_image = "mobs_net.png",
groups = {flammable = 2},
})
if minetest.get_modpath("farming") then
minetest.register_craft({
output = "mobs:net",
recipe = {
{"group:stick", "", "group:stick"},
{"group:stick", "", "group:stick"},
{"farming:string", "group:stick", "farming:string"},
}
})
end
-- shears (right click to shear animal)
minetest.register_tool("mobs:shears", {
description = S("Steel Shears (right-click to shear)"),
inventory_image = "mobs_shears.png",
groups = {flammable = 2},
})
minetest.register_craft({
output = 'mobs:shears',
recipe = {
{'', 'default:steel_ingot', ''},
{'', 'group:stick', 'default:steel_ingot'},
}
})
-- protection rune
minetest.register_craftitem("mobs:protector", {
description = S("Mob Protection Rune"),
inventory_image = "mobs_protector.png",
groups = {flammable = 2},
})
minetest.register_craft({
output = "mobs:protector",
recipe = {
{"default:stone", "default:stone", "default:stone"},
{"default:stone", "default:goldblock", "default:stone"},
{"default:stone", "default:stone", "default:stone"},
}
})
-- saddle
minetest.register_craftitem ("mobs:saddle", {
description = S("Saddle") ,
inventory_image = "mobs_saddle.png",
groups = { flammable=2 } ,
stack_max = 1 ,
})
minetest.register_craft({
output = "mobs:saddle",
recipe = {
{"mobs:leather", "mobs:leather", "mobs:leather"},
{"mobs:leather", "default:steel_ingot", "mobs:leather"},
{"mobs:leather", "default:steel_ingot", "mobs:leather"},
}
})
-- mob fence (looks like normal fence but collision is 2 high)
default.register_fence("mobs:fence_wood", {
description = S("Mob Fence"),
texture = "default_wood.png",
material = "default:fence_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
collision_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 1.9, 0.5},
},
},
})
-- mob fence top (has enlarged collisionbox to stop mobs getting over)
minetest.register_node("mobs:fence_top", {
description = S("Mob Fence Top"),
drawtype = "nodebox",
tiles = {"default_wood.png"},
paramtype = "light",
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2},
},
collision_box = {
type = "fixed",
fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4},
},
selection_box = {
type = "fixed",
fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4},
},
})
minetest.register_craft({
output = "mobs:fence_top 12",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "default:fence_wood", ""},
}
})
-- items that can be used as fuel
minetest.register_craft({
type = "fuel",
recipe = "mobs:nametag",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:lasso",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:net",
burntime = 8,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:leather",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:saddle",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:fence_wood",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:fence_top",
burntime = 2,
})
-- this tool spawns same mob and adds owner, protected, nametag info
-- then removes original entity, this is used for fixing any issues.
local tex_obj
minetest.register_tool(":mobs:mob_reset_stick", {
description = "Mob Reset Stick",
inventory_image = "default_stick.png^[colorize:#ff000050",
stack_max = 1,
groups = {not_in_creative_inventory = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "object" then
return
end
local obj = pointed_thing.ref
local control = user:get_player_control()
local sneak = control and control.sneak
if obj and not sneak then
local self = obj:get_luaentity()
local obj2 = minetest.add_entity(obj:get_pos(), self.name)
if obj2 then
local ent2 = obj2:get_luaentity()
ent2.protected = self.protected
ent2.owner = self.owner
ent2.nametag = self.nametag
ent2.gotten = self.gotten
ent2.tamed = self.tamed
ent2.health = self.health
ent2.order = self.order
if self.child then
obj2:set_velocity({x = 0, y = self.jump_height, z = 0})
end
obj2:set_properties({nametag = self.nametag})
obj:remove()
end
end
if obj and sneak then
tex_obj = obj
local name = user:get_player_name()
local tex = ""
minetest.show_formspec(name, "mobs_texture", "size[8,4]"
.. "field[0.5,1;7.5,0;name;"
.. minetest.formspec_escape(S("Enter texture:")) .. ";" .. tex .. "]"
.. "button_exit[2.5,3.5;3,1;mob_texture_change;"
.. minetest.formspec_escape(S("Change")) .. "]")
end
end,
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
-- right-clicked with nametag and name entered?
if formname == "mobs_texture"
and fields.name
and fields.name ~= "" then
local name = player:get_player_name()
if not tex_obj then
return
end
-- make sure nametag is being used to name mob
local item = player:get_wielded_item()
if item:get_name() ~= "mobs:mob_reset_stick" then
return
end
-- limit name entered to 64 characters long
if string.len(fields.name) > 64 then
fields.name = string.sub(fields.name, 1, 64)
end
-- update texture
local self = tex_obj:get_luaentity()
self.base_texture = {fields.name}
tex_obj:set_properties({textures = {fields.name}})
-- reset external variable
tex_obj = nil
end
end)

51
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/mobs/license.txt

@ -0,0 +1,51 @@
Copyright and license for new code and/or media not covered below:
(c) 2019 and CC BY-NC-SA 4.0 International: OldCoder (Robert Kiraly).
----------------------------------------------------------------------
New Poikilos textures:
mobs_damage_blood_big.png
mobs_damage_blood.png
mobs_damage_bug_big.png
mobs_damage_bug.png
mobs_damage_stone_big.png
mobs_damage_stone.png
mobs_damage_sweat_big.png
mobs_damage_sweat.png
(c) 2019 and CC BY-SA 4.0 International: Poikilos.
----------------------------------------------------------------------
Additional changes:
mobs_chicken_egg.png
mobs_chicken_egg_overlay.png
(c) 2016-2019 and MIT License: TenPlus1, Poikilos.
----------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2016 TenPlus1
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

50
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/mobs/oldcoder.txt

@ -0,0 +1,50 @@
Name: mods
Source: For of upstream mod - Do not replace
License: See "license.txt"
----------------------------------------------------------------------
1. This is a fork of an upstream mod. Don't attempt to update or re-
place it.
To be documented.
----------------------------------------------------------------------
2. Partial list of changes:
* Multiple bug fixes related to old models that are rotated relative
to today's standard.
* Bug fix related to behavior of mobs at the edge of cliffs.
* Mobs that are sensitive to light can now optionally be configured to
burst into flames when light damage occurs.
* Fix failure of API code to pass riding/driving parameters specified
by higher levels to riding/driving code.
* Add support for more sophisticated approach to assessing mob densi-
ty.
* Improve support for amphibious mobs.
* Better TNT smoke texture.
* Fix failure in riding/driving code to handle missing parameters.
* Add support for steering both ground vehicles and aircraft using
the keyboard as well as the mouse. Note: These are separate features.
* Talking mobs. Multiple languages are supported.
* New damage-related textures by Poikilos:
mobs_damage_blood_big.png
mobs_damage_blood.png
mobs_damage_stone_big.png
mobs_damage_stone.png
mobs_damage_sweat_big.png
mobs_damage_sweat.png
* Add section to "license.txt" to cover new code and media.

13
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/oldcoder.txt

@ -0,0 +1,13 @@
Name: codermobs
Source: New modpack mixing original and forked mods
License: See notes below
----------------------------------------------------------------------
The full documentation for "codermobs" is presently merged into the
"_game" documentation.
Media files are derived, in general, from older mods. The code mixes
old and new pieces.
License files are present in the individual mod directories.

26
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/whinny/LICENSE

@ -0,0 +1,26 @@
Krupnov Pavel and TenPlus1 components:
The MIT License (MIT)
Copyright (c) 2014 Krupnov Pavel -- bugs, kpgmobs, pmobs
Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1 -- mobs_animal
Copyright (c) 2016 TenPlus1 -- mobs_monster and mobs_npc
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

19
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/whinny/init.lua

@ -0,0 +1,19 @@
dofile (minetest.get_modpath ("whinny").."/api.lua" )
dofile (minetest.get_modpath ("whinny").."/horse.lua" )
minetest.register_craftitem ("whinny:meat", {
description = "Cooked Meat",
inventory_image = "whinny_meat.png",
on_use = minetest.item_eat(4),
})
minetest.register_craftitem ("whinny:meat_raw", {
description = "Raw Meat",
inventory_image = "whinny_meat_raw.png",
})
minetest.register_craft ({
type = "cooking",
output = "whinny:meat",
recipe = "whinny:meat_raw",
})

7
Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/whinny/oldcoder.txt

@ -0,0 +1,7 @@
Name: whinny
Source: Fork of an upstream mod (do not replace)
License: See "LICENSE"
----------------------------------------------------------------------
To be documented.

92
Bucket_Game-branches/distinguish_meats-vs-211114a-build_the_patch.sh

@ -0,0 +1,92 @@
#!/bin/bash
SOURCE_MP="$HOME/git/animalmaterials"
# ^ the source modpack
cd "$SOURCE_MP"
if [ ! -d "$SOURCE_MP/animalmaterials/textures" ]; then
printf "Error: SOURCE_MP \"$SOURCE_MP\" doesn't seem to be the animalmaterials modpack directory. Make sure you run this script from animalmaterials"
if [ -d "$SOURCE_MP/textures" ]; then
printf " (SOURCE_MP seems to be animalmaterials/animalmaterials--or some other mod directory--since it contains a textures directory)"
fi
echo "."
exit 1
fi
patchFileOrFail(){
src="$1"
if [ ! -f "$src" ]; then
src="$SOURCE_MP/$1"
fi
if [ ! -f "$src" ]; then
echo " Error: The source file $src doesn't exist. The script refuses to continue."
exit 1
fi
dst="$2"
if [ ! -f "$dst" ]; then
echo " Error: The destination file $dst doesn't exist. This script refuses to continue unless the destination is recognized."
exit 1
fi
echo " * $dst"
cp "$src" "$dst"
}
patchBucketGame(){
BUCKET_GAME="$1"
if [ ! -d "$BUCKET_GAME/mods" ]; then
echo "Error: \"$BUCKET_GAME\" doesn't seem to be a game because it doesn't contain a mods directory."
exit 1
fi
echo "* patching \"$BUCKET_GAME\"..."
patchFileOrFail animalmaterials/textures/animalmaterials_meat_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/animal_materials_meat_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_meat_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_meat_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_meat_raw.png $BUCKET_GAME/mods/coderfood/unified_foods/textures/mobs_meat_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_meat_raw.png $BUCKET_GAME/mods/codermobs/mobs/textures/mobs_meat_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_meat_toxic_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/animal_materials_meat_toxic_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_meat_undead_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/animal_materials_meat_undead_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_pork_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/animal_materials_pork_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_pork_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_pork_raw.png
patchFileOrFail animalmaterials/textures/animalmaterials_egg_big.png $BUCKET_GAME/mods/codermobs/codermobs/textures/animal_materials_egg_big.png
patchFileOrFail cooking/textures/cooking_cooked_meat.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_meat.png
patchFileOrFail cooking/textures/cooking_cooked_meat.png $BUCKET_GAME/mods/codermobs/mobs/textures/mobs_meat.png
patchFileOrFail cooking/textures/cooking_cooked_meat.png $BUCKET_GAME/mods/coderfood/unified_foods/textures/mobs_meat.png
patchFileOrFail cooking/textures/cooking_pork_cooked.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_pork_cooked.png
# These were added in an earlier patch but renamed due to code-only changes in this page
# (See TODO manually further down)
# patchFileOrFail animalmaterials/textures/cooking_ostrich.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_raw.png
# patchFileOrFail cooking/textures/cooking_ostrich_cooked.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_cooked.png
# patchFileOrFail animalmaterials/textures/cooking_beef_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_beef_raw.png
# patchFileOrFail animalmaterials/textures/cooking_venison_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_venison_raw.png
# patchFileOrFail cooking/textures/cooking_beef_cooked.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_beef.png
# patchFileOrFail cooking/textures/cooking_venison_cooked.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_venison.png
echo " * done"
}
patchBucketGame ~/minetest/games/bucket_game
patchBucketGame ~/git/EnlivenMinetest/Bucket_Game-branches/distinguish_meats-vs-211114a
cat >/dev/null <<END
TODO:
Sources:
Destinations:
# See https://github.com/poikilos/EnlivenMinetest
# (EnlivenMinetest/patches/distinguish_meats-vs-211114a)
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_chicken_cooked.png
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_chicken_raw.png
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_cooked_rat.png
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_rat_better_inv.png
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_rat_cooked.png
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_rat_inventory.png
# See https://github.com/poikilos/whinny:
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/whinny/textures/whinny_meat.png
patchFileOrFail ? $BUCKET_GAME/mods/codermobs/whinny/textures/whinny_meat_raw.png
END
cat <<END
TODO manually:
mv $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_meat_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_raw.png
mv $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_meat_cooked.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_cooked.png
END

15
Bucket_Game-branches/distinguish_meats-vs-211114a.instructions.txt

@ -0,0 +1,15 @@
After editing /home/owner/git/EnlivenMinetest/Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png, then create a patch by running:
diff -u /home/owner/git/EnlivenMinetest/Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png /home/owner/git/EnlivenMinetest/Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png > /home/owner/git/EnlivenMinetest/bucket_game-211114a-20211118-animal_materials_egg_big.png.patch
* getting parent of /home/owner/minetest/bucket_game-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png...
* updating /home/owner/git/EnlivenMinetest/Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png
* creating /home/owner/git/EnlivenMinetest/Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png
* updating LICENSE '/home/owner/git/EnlivenMinetest/Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/LICENSE'...
* updating LICENSE '/home/owner/git/EnlivenMinetest/Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/codermobs/oldcoder.txt'...
* updating '/home/owner/git/EnlivenMinetest/Bucket_Game-base/distinguish_meats-vs-211114a/mods/codermobs/oldcoder.txt'...
Done.
To apply, set BUCKET_GAME then:
cd EnlivenMinetest && git pull && rsync -rt Bucket_Game-branches/distinguish_meats-vs-211114a/ $BUCKET_GAME
mv $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_meat_raw.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_raw.png
mv $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_meat_cooked.png $BUCKET_GAME/mods/codermobs/codermobs/textures/codermobs_ostrich_cooked.png

12
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/LICENSE

@ -0,0 +1,12 @@
For license information, see the following files, where they exist, in
each modpack or mod:
oldcoder.txt
LICENSE
LICENSE.txt
license.txt
README.md
README.txt
readme.txt
and/or files with similar names.

23
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/oldcoder.txt

@ -0,0 +1,23 @@
Name: coderfood
Source: New modpack based on various mods and/or modpacks
License: See "license-modpack.txt"
----------------------------------------------------------------------
1. The "food" and "food_basic" mods were extracted from the following
modpack:
https://github.com/rubenwardy/food.git
modpack-level documentation files were moved into a new subdirectory
of the "food" mod named "rwfooddoc".
----------------------------------------------------------------------
2. Additions to that starting point:
2a. Added the OldCoder mod "coderfruit".
2b. Added Milan's forks of the mods "hbhunger" and "hudbars".
2c. Added the files "00README" and "oldcoder.txt" (this file).

63
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/LICENSE

@ -0,0 +1,63 @@
Unified Foods Licenses
----------------------------------------------------------------------
1. OldCoder Unified Foods includes a food registration system and a
hunger system.
----------------------------------------------------------------------
2. The food registration system is original code. The license for the
code in question is:
(c) 2015-2020 and CC BY-NC-SA 4.0 International: OldCoder (Robert Kir-
aly)
----------------------------------------------------------------------
3. The hunger system is descended from a MT mod named "hbhunger". The
license for "hbhunger" code is LGPL v2.1. The license for "hbhunger"
textures is MIT.
One "hbhunger" sound file is used:
better_hunger_eat_generic.ogg
The license for that file is CC BY 3.0 with attribution to:
https://freesound.org/people/xtrgamr/sounds/253619/
----------------------------------------------------------------------
4. The licenses for other files are as follows:
* ufoods_*.png: WTFPL except for "ufoods_glass_*".
* ufoods_glass_*.png: These textures are presently based on a version
of "mobs_glass_milk.png" that is licensed as follows:
The MIT License (MIT)
Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
* farming_*.png: See "farming" mod license file.
* mobs_*.png: See "mobs" mod license file.
* mtfoods_*.png:
License: (c) 2014-2020 and CC BY-NC-SA 4.0 International: Philip Rob-
inson.
* misc_baked_potato.png: WTFPL.
* coderfruit_*.png:
License: (c) 2019 and CC BY-NC-SA 4.0 International: OldCoder (Robert
Kiraly).
* moono_*.png:
License: (c) 2015-2020 and CC BY-SA 4.0 International: Moono.
* dessert_*.png and food_*.png:
License: (c) 2013-2010 and CC-BY-SA 3.0 Rubenwardy.
(end of document)

208
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/basefoods.lua

@ -0,0 +1,208 @@
-- ===================================================================
-- "ufoods" common header.
local S
if minetest.get_modpath ("intllib") then
S = intllib.Getter()
else
S = function (s) return s end
end
local item_eat = unified_foods.item_eat
local keep_vessels = unified_foods.keep_vessels
local mra = minetest.registered_aliases
local mri = minetest.registered_items
local reg_alias = ocutil.safe_register_alias
local reg_craft = minetest.register_craft
local reg_food = unified_foods.register_food
local reg_item = ocutil.safe_register_item
local reg_juice = unified_foods.register_juice
local needitem
-- ===================================================================
needitem = reg_food ("juicer",
{
description = "Juicer" ,
external_items = "farming:juicer" ,
})
reg_craft ({
output = neednode ,
recipe = {
{ "" , "default:stone" , "" } ,
{ "default:stone" , "" , "default:stone" } ,
}
})
-- ===================================================================
needitem = reg_food ("sugar",
{
description = "Sugar" ,
external_items = {
"farming:sugar" , "jkfarming:sugar" ,
"bushes:sugar" , "mtfoods:sugar" ,
}
})
if ocutil.thing_exists ("default:papyrus") then
reg_craft ({
output = needitem .. " 20" ,
recipe = {
{ "default:papyrus" } ,
}
})
end
-- ===================================================================
-- Note: The fallback definition provided here isn't fully functional.
-- However, the expectation is that "bucket" is usually present, so
-- the fallback usually shouldn't be needed.
needitem = reg_food ("bucket_water",
{
description = "Bucket of water" ,
extra_groups = { bucket_water=1 } ,
external_items = "bucket:bucket_water" ,
})
reg_alias ("bucket:bucket_water", needitem)
-- ===================================================================
needitem = reg_food ("salt",
{
description = "Salt" ,
satiate = 0 ,
external_items = "farming:salt" ,
})
reg_craft ({
type = "cooking" ,
cooktime = 15 ,
output = needitem ,
recipe = "group:bucket_water" ,
replacements = keep_vessels ,
})
reg_alias ("farming:salt", needitem)
-- ===================================================================
needitem = reg_food ("wheat",
{
description = "Wheat" ,
external_items = {
"farming:wheat", "plantlib:wheat"
} ,
})
reg_craft ({
output = needitem ,
recipe = {
{ "default:dry_shrub" } ,
}
})
reg_alias ("farming:wheat", needitem)
-- ===================================================================
needitem = reg_food ("flour",
{
description = "Flour" ,
external_items = "farming:flour" ,
})
reg_craft ({
output = needitem ,
recipe = {
{ "group:food_wheat" } ,
{ "group:food_wheat" } ,
}
})
reg_alias ("farming:flour", needitem)
-- ===================================================================
needitem = reg_food ("bread",
{
description = "Bread" ,
stack_max = 3 ,
satiate = 5 ,
external_items = "farming:bread" ,
})
reg_craft ({
type = "cooking" ,
cooktime = 15 ,
output = needitem ,
recipe = "group:food_flour" ,
})
reg_alias ("farming:bread", needitem)
-- ===================================================================
needitem = reg_food ("egg",
{
description = "Egg" ,
stack_max = 10 ,
satiate = 1 ,
external_items = {
"mobs:egg" , "animalmaterials:egg" ,
"animalmaterials:egg_big" , "jkanimals:egg" ,
} ,
})
reg_alias ("mobs:egg", needitem)
-- ===================================================================
needitem = reg_food ("meat_raw",
{
description = "Raw Meat" ,
stack_max = 25 ,
satiate = 1 ,
extra_groups = { meat=1 } ,
external_items = {
"mobs:meat_raw", "animalmaterials:meat_raw"
} ,
})
reg_alias ("mobs:meat_raw", needitem)
-- ===================================================================
needitem = reg_food ("meat",
{
description = "Cooked Meat" ,
satiate = 6 ,
extra_groups = { meat=1 } ,
external_items = {
"mobs:meat" , "jkanimals:meat" ,
"mobfcooking:cooked_pork" ,
"mobfcooking:cooked_beef" , "mobfcooking:cooked_chicken" ,
"mobfcooking:cooked_lamb" , "mobfcooking:cooked_venison" ,
} ,
})
reg_craft ({
type = "cooking" ,
output = needitem ,
recipe = "group:food_meat_raw" ,
cooktime = 30 ,
})
-- ===================================================================
-- End of file.

237
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/oldcoder.txt

@ -0,0 +1,237 @@
Name: unified_foods
Source: Original mod except for some "hbhunger" code
License: See "LICENSE"
----------------------------------------------------------------------
1. "unified_foods" is a largely original mod that provides a combined
food registration and hunger system.
The hunger system is based on a fork of "hbhunger".
This mod supersedes the following mods, though it doesn't replace all
of the foods defined in the mods:
food, food_basic, dessert, hbhunger, extra, mtfoods
----------------------------------------------------------------------
2. Overview of features.
2.1. Unified Foods supports satiation, healing, poison, and replace-
ment items as "hbhunger" did. It also offers numerous extra features.
----------------------------------------------------------------------
2.2. You don't need to explicitly hook foods any longer to support
basic operation.
Unified Foods intercepts calls to "minetest.item_eat". This means that
satiation and replacement items are supported automatically for normal
foods out of the box.
You can still hook foods to modify existing parameters or to set new
ones. However, this is optional.
----------------------------------------------------------------------
2.3. Unified Foods can merge similar items.
If there are, for example, three types of hamburgers, Unified Foods
retains all of the items or nodes, but it optionally assigns a similar
image and food parameters to all of them.
No permanent conversion is done. Just a temporary merge to promote the
sense of smoother operation. However, permanent conversion could be
added as another feature.
----------------------------------------------------------------------
2.4. Eating a particular food can optionally produce a specified mes-
sage to the user. Lists of messages are supported. If a list is speci-
fied, a random message is chosen from the list.
----------------------------------------------------------------------
2.5. "hbhunger" had a bug which prevented it from properly registering
items that didn't set "on_use". Unified Foods supports items of that
type. This means that, for example, you can make arbitrary items eata-
ble.
----------------------------------------------------------------------
2.6. Eating works whether or not damage is enabled.
If hunger is enabled and damage is disabled, the hunger time loop is
stopped and poison does no damage at the Unified Foods level.
----------------------------------------------------------------------
2.7. Two new commands "/starve" and "/satiate" have been added.
"/starve" makes the user hungry. "/satiate" makes him or her satiated
instead. These commands are useful for debugging purposes.
----------------------------------------------------------------------
2.8. It's easy to add juices to Unified Foods.
You can create a new juice, including merges with existing objects,
crafting recipes, and aliases, using just one simple statement. For
example, this statement:
reg_juice ("apple",
{ color = "#FFC929" } , { "mtfoods:apple_juice" })
sets up and/or performs all of these steps:
* Create a glass of juice named "food:apple_juice"
* Alias the glass to "mtfoods:apple_juice" if that item exists
* Set "mtfoods:apple_juice" to new juice's image and satiation
* Add a crafting recipe for new juice
* Create aliases "apple_juice" and "applejuice"
* If the player drinks the juice, replace it with empty glass
If a juice is a uniform color, the API is able to create an appropri-
ate juice image at runtime. So, it's possible to have numerous juices
without the need for numerous image files.
However, juice image files may be specified as well. This allows spe-
cial cases such as rainbow juice or worm juice to be handled.
----------------------------------------------------------------------
2.9. Unified Foods allows craft-item foods to be placed. Two modes are
supported:
Craft-items may be placed as static 2D sprites that always face the
caller.
This often looks better than the "plantlike" or "torchlike" drawing
modes that MT "_games" usually use when 2D objects are placed.
Or craft-items may be placed as dynamic 2D sprites that work the same
way but are "alive". For example, placed hamburgers may attempt to run
away from hungry players.
Craft-items may also be placed in "plantlike" or "torchlike" mode if a
world developer prefers this.
The mode in which craft-items are to be placed can be specified glob-
ally in "world.conf" or on a per-item basis in the mod source code for
individual items.
For more detailed documentation, see the comments preceding "register_
food" in "foodcore.lua".
----------------------------------------------------------------------
3. This mod requires only "default" and "hud", but "bucket" and "farm-
ing" are strongly recommended.
----------------------------------------------------------------------
4. This mod replaces the complicated API used by "food" v2 with an API
that's easier to use.
In particular, in Unified Foods, one subroutine call, in one place, is
typically enough to set up a food. Two calls, if a juice variation of
the food is desired.
Additionally, this mod restores some of the foods that were discarded
in "food" v2.
Historical note: The last pre-v2 commit to "food" was:
22be9b83c3087e15eea8878c5aef9be0f12d6158
----------------------------------------------------------------------
5. Unified Foods creates food and utensils in the "food:" namespace.
Most of these objects are original items that fall back to existing
items where possible.
For example, if "farming" is installed, "food:bread" becomes an alias
for "farming:bread". Otherwise, it's defined as a new and independent
item.
----------------------------------------------------------------------
6. If "drawtype" is set to "sprite" or "mob" for an item, "vsize" may
set, as well, to scale the size of the item up or down.
vsize = 0.50 will, for example, scale the item to half size. vsize =
2.00 will scale it to twice normal size.
The code adjusts collision boxes and vertical positions for items ap-
propriately.
----------------------------------------------------------------------
Appendix A. Partial list of objects supported.
Fruits:
Apple, Banana, Cherry, Orange, Pineapple, and Strawberry. Plus the
associated juices.
----------------------------------------------------------------------
Misc.:
Hamburger. Hamburger juice. Rainbow and worm juices. OBOE (Open Blade
of Exile) potions in multiple colors. Taco.
Raw and cooked pasta. A couple of types of breakfast cereal. Dog
treats.
Glass of Romulan Ale. Glass of Ginger Ale. Bottle of apple cider.
----------------------------------------------------------------------
Vegetables:
Onion, onion rings, onion slices.
Potato, potato juice, baked potato, potato slices, french fries, pota-
to chips.
Carrot, corn, rhubarb, and tomato. Plus most of the associated juices.
----------------------------------------------------------------------
Dairy:
Glass or bucket of milk. Butter. Cheese.
----------------------------------------------------------------------
Chocolate:
Cocoa bean, chocolate powder, dark chocolate, milk chocolate, and cup
or mug of chocolate milk.
----------------------------------------------------------------------
Coffee:
Raw coffee beans, roasted coffee beans, and cup or mug of coffee.
----------------------------------------------------------------------
Dessert:
Snackcake, blueberry muffin, raw tart base, tart base, and strawberry
tart.
Banana split, shortbread, cream, strawberry shortcake, and cupcake.
Moono desserts: Butterscotch Dillybar, Butterscotch Sundae, Heart on a
Stick, Strawberry Bar, Strawberry Icecream, and Strawberry Star.
There are also some cakes, but we encourage people to use the cakes
and pies from the "cakepie" mod instead. The cakes in this mod are
provided primarily for legacy support purposes.
----------------------------------------------------------------------
End of file.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/textures/mobs_meat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/coderfood/unified_foods/textures/mobs_meat_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

299
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/LICENSE

@ -0,0 +1,299 @@
All of the files involved are used and distributed under FOSS licens-
es.
----------------------------------------------------------------------
License: CC0 aka CC Public Domain
is, or was, described by:
https://creativecommons.org/publicdomain/zero/1.0/
License: CC BY-SA 4.0
is, or was, described by:
https://creativecommons.org/licenses/by-sa/4.0/
License: CC BY-SA 3.0
is, or was, described by:
https://creativecommons.org/licenses/by-sa/3.0/
License: CC BY-NC-SA 4.0
is, or was, described by:
https://creativecommons.org/licenses/by-nc-sa/4.0/
License: CC BY-NC-SA 3.0
is, or was, described by:
https://creativecommons.org/licenses/by-nc-sa/3.0/
----------------------------------------------------------------------
Original components which are not covered under other copyrights and
licenses are copyright and licensed as follows:
(c) 2019 and CC BY-NC-SA 4.0: OldCoder (Robert Kiraly).
----------------------------------------------------------------------
Additional meats:
- codermobs_beef.png
- codermobs_beef_raw.png
- codermobs_ostrich_cooked.png
- codermobs_ostrich_raw.png
- codermobs_venison.png
- codermobs_venison_raw.png
- codermobs_lamb_raw.png
- codermobs_lamb_cooked.png
(c) 2021 Poikilos CC BY-SA 4.0
Redrawn mobs meats and animal materials:
- codermobs_pork_cooked.png
- codermobs_pork_raw.png
- animal_materials_pork_raw.png
(c) 2021 Poikilos CC BY-SA 4.0
Improved or adapted mobs meats and animal materials
(based on image of same name unless specified):
- animal_materials_egg_big.png (improved)
- codermobs_ostrich_*.png (based on raw and cooked chicken **)
- codermobs_ostrich_egg.png (based on sapier egg)
- codermobs_egg_big_fried.* (based on fried egg **)
- codermobs_ostrich_egg_fried.png (based on fried egg **)
- codermobs_chicken_*.png (improved) **
(c) 2011 sapier, 2021 Poikilos CC BY-SA 4.0
`**` The author is assumed to be sapier due to context, but correct the author later if found.
Spider Meat:
- Edited by Poikilos, based on model and texture by AspireMint according to
<https://forums.minetest.org/viewtopic.php?f=9&t=9301> and
possibly implied by
<https://git.minetest.org/minetest-LOTR/Lord-of-the-Test/src/branch/master/README.md>.
- codermobs_lott_spider_meat_raw.png
- codermobs_lott_spider_meat.png
(c) ~2014 AspireMint and 2021 Poikilos (edited by) CC BY-SA 3.0
- history: <https://git.minetest.org/minetest-LOTR/Lord-of-the-Test/commits/branch/master/mods/lottmobs/textures/lottmobs_spider.png>
----------------------------------------------------------------------
More Creeps and Weirdos for Mobs Redo
https://github.com/22i/amcaw
(Poikilos fork: https://github.com/poikilos/amcaw)
includes: baby, blorp, bubblescum, camel, castle critter, castle guard,
castle king, cavelady, caveman, desert lizard, digibug, discomole,
flobmothership, floob, g, googoat, growbotgreg, guineapig, hippo,
hotdog, hunchback, lawyer, loliman, mandog, oldlady, ponie, ponygirl,
ragingbull, ratman, robotted, robottod, rocketgirafe, rockmonster,
sneaky sal, snowdevil and zebra.
(c) Astromojang, RickWeek84, amcaw CC BY-SA 3.0
except:
- codermobs_oldlady_sea_hag_mesh.png
(c) Astromojang, RickWeek84, amcaw and 2021 Poikilos (edited by)
CC BY-SA 3.0
----------------------------------------------------------------------
Skeletons:
mdskeleton model:
Mdoege
mdskeleton texture (replaced 2019):
(c) 2019 Poikilos CC BY-SA 4.0
mdskeleton sounds (replaced 2019):
(c) 2019 Poikilos CC BY-SA 4.0
---------------------------------------------------------------------
Models and mesh textures for "baby_chick", "bom", and "icebom":
(c) 2019 and CC-BY-NC-SA 4.0: Poikilos. OldCoder as well for the "ice-
bom" mesh texture.
For sound-file information, see the Lua files.
----------------------------------------------------------------------
Denny code and media:
See "denny.lua"
----------------------------------------------------------------------
Improved Spider/Bug Sounds:
codermobs_damage_giant_exoskeleton, codermobs_death_giant_bug,
codermobs_use_giant_exoskeleton
(c) 2019 and CC BY-SA 4.0: Poikilos
Improved Particles:
codermobs_blood, codermobs_damage_stone, codermobs_lott_spider_blood
(c) 2019 and CC BY-SA 4.0: Poikilos
codermobs_fireball:
(c) 2012 to 2019 and CC-BY-SA 3.0: Sapier, Poikilos
----------------------------------------------------------------------
Media for "animal_materials", "deer", "elk", and "ostrich":
See the 5 associated Lua source files. In general, the media is:
(c) 2012 to 2019 and CC-BY-SA 3.0: Sapier and Poikilos.
The "ostrich" texture is as described above but also attribution: Old-
Coder.
Code for "animal_materials": Same as media. The other 4 mobs listed
here use new code.
More about the Elk:
Pixel Art Elk texture:
(c) 2012 to 2019 and CC BY-SA 3.0: Sapier, Polikilos (skinned by)
HD (video-based) and Lo-fi (16-color video-based) Elk Textures:
based on Elk video "Elk.webm.360p.vp9" (CC BY 2.0 Generic)
Stephen Baker [BLM/Oregon](blm.gov/yg5c).jpg, Poikilos (skinned by)
Additionally, "chicken.lua" uses Sapier's 3D egg. See that Lua source
file as well.
----------------------------------------------------------------------
Egg texture:
MIT License
(c) 2016-2019 TenPlus1 and Poikilos
----------------------------------------------------------------------
Car model:
(c) 2015 and CC-BY-NC-SA 3.0: Melkor.
----------------------------------------------------------------------
mdoege code and/or media
-----------------------------
WTFPL
PilzAdam code and/or media
-----------------------------
WTFPL
Bat
-----------------------------
Code: GPL
Model and texture: CC BY-SA 3.0. Attribution: Defense Subgame.
Sound file: WTFPL
Birds
-----------------------------
(c) 2012-2019 and CC-BY-SA 3.0: Sapier, Poikilos. Sapier created
the original models. Poikilos derived new models from them and created
new textures.
Butterfly
-----------------------------
(c) 2012 to 2019 and CC BY-SA 3.0: AspireMint.
Realistic Milk Bucket
-----------------------------
(c) 2015-2019 and CC BY-SA 3.0: ElementW, Poikilos (modified by).
D00Med code
-----------------------------
GNU Lesser General Public License 2.1
D00Med models and/or textures
-----------------------------
Originals: CC BY-SA 3.0 Unported. Attribution: D00Med.
New panda texture: CC BY SA 3.0 2016 D00Med and 2021 Poikilos
Mr. Goat
-----------------------------
(c) 2016 to 2019 and CC BY-SA 3.0: Don Batman. OldCoder worked on the
eyes.
NSSM components
-----------------------------
No NSSM are believed presently to be used. If they're used in the
future, the applicable license will be GPL3.
Sapier components
-----------------------------
(c) 2012-2019 and CC-BY-SA 3.0: Sapier.
"mobs_mc" components
-----------------------------
Code and models: GNU GPL V3
Other "mobs_mc" Polar Bear media: CC BY-SA 4.0. Attribution: "mobs_mc"
team.
Skandarella components
-----------------------------
For snail, kangaroo, tiger, and T-Rex media license information, see:
license-skandarella.txt
----------------------------------------------------------------------
Krupnov Pavel and TenPlus1 components:
The MIT License (MIT)
(c) 2014 Krupnov Pavel -- bugs, kpgmobs, pmobs
(c) 2014 Krupnov Pavel and 2016 TenPlus1 -- mobs_animal (deer mesh,
dungeon master (hunched version), small rat, sand monster /
as mummy, sheep, stone monster / as dirt monster, treant)
(c) 2011 sapier, 2021 Poikilos (redraw meats) -- animalmaterials
(c) 2016 TenPlus1 -- mobs_monster and mobs_npc
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------------------------------------
Blockmen components:
(c) 2015-2016 BlockMen <blockmen2015@gmail.com>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product documentation
is required.
2. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
(end of document)

386
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/animal_materials.lua

@ -0,0 +1,386 @@
-- ===================================================================
-- Code and media license.
--
-- You may copy, use, modify or do nearly anything but remove this
-- copyright notice. Of course, you're not allowed to pretend you've
-- created or written the Sapier or Poikilos pieces.
--
-- CC-BY-SA 3.0. Attribution: Sapier and Poikilos.
-- ===================================================================
-- Boilerplate to support localized strings if intllib mod is install-
-- ed.
local S
if (minetest.get_modpath("intllib")) then
dofile(minetest.get_modpath("intllib").."/intllib.lua")
S = intllib.Getter(minetest.get_current_modname())
else
S = function ( s ) return s end
end
core.log("action","MOD: animal_materials loading ...")
local version = "0.1.3"
animal_materialsdata = {}
-- ===================================================================
-- Node definitions
-- ===================================================================
-- Item definitions
-- ===================================================================
-- deamondeath sword
minetest.register_tool(":animal_materials:sword_deamondeath", {
description = S("Sword (Deamondeath)"),
inventory_image = "default_tool_steelsword.png",
tool_capabilities = {
full_punch_interval = 0.50,
max_drop_level=1,
groupcaps={
fleshy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=10, maxlevel=1},
snappy={times={[2]=0.70, [3]=0.30}, uses=40, maxlevel=1},
choppy={times={[3]=0.70}, uses=40, maxlevel=0},
deamon={times={[1]=0.25, [2]=0.10, [3]=0.05}, uses=20, maxlevel=3},
}
}
})
-- ===================================================================
-- scissors
--
minetest.register_tool(":animal_materials:scissors", {
description = S("Scissors"),
inventory_image = "animal_materials_scissors.png",
tool_capabilities = {
max_drop_level=0,
groupcaps={
wool = {uses=40,maxlevel=1}
}
},
})
-- ===================================================================
-- lasso
minetest.register_craftitem(":animal_materials:lasso", {
description = S("Lasso"),
image = "animal_materials_lasso.png",
stack_max=10,
})
-- ===================================================================
-- net
minetest.register_craftitem(":animal_materials:net", {
description = S("Net"),
image = "animal_materials_net.png",
stack_max=10,
})
-- ===================================================================
-- saddle
minetest.register_craftitem(":animal_materials:saddle", {
description = S("Saddle"),
image = "animal_materials_saddle.png",
stack_max=1
})
-- ===================================================================
-- contract
minetest.register_craftitem(":animal_materials:contract", {
description = S("Contract"),
image = "animal_materials_contract.png",
stack_max=10,
})
-- ===================================================================
-- meat
local dep_meat_raw = nil
if minetest.registered_items["mobs:meat"] then
dep_meat_raw = "mobs:meat"
elseif minetest.registered_items["animalmaterials:meat"] then
dep_meat_raw = "animalmaterials:meat"
end
if not dep_meat_raw then
minetest.register_craftitem(":animal_materials:meat_raw", {
description = S("Raw Meat"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
else
minetest.register_alias("animal_materials:meat_raw", dep_meat_raw)
end
local dep_pork_raw = nil
if minetest.registered_items["mobs:pork_raw"] then
dep_pork_raw = "mobs:pork_raw"
elseif minetest.registered_items["animalmaterials:meat_pork"] then
dep_pork_raw = "animalmaterials:meat_pork"
end
if not dep_pork_raw then
minetest.register_craftitem(":animal_materials:meat_pork", {
description = S("Raw Pork"),
image = "codermobs_pork_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_alias("animal_materials:pork_raw", "animal_materials:meat_pork")
else
minetest.register_alias("animal_materials:pork_raw", dep_pork_raw)
minetest.register_alias("animal_materials:meat_pork", dep_pork_raw)
end
minetest.register_craftitem(":animal_materials:meat_beef", {
description = S("Raw Beef"),
image = "codermobs_beef_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
local dep_chicken_raw = nil
if minetest.registered_items["animalmaterials:meat_chicken"] then
dep_chicken_raw = "animalmaterials:meat_chicken"
end
if not dep_chicken_raw then
minetest.register_craftitem(":animal_materials:meat_chicken", {
description = S("Raw Chicken"),
image = "codermobs_chicken_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
else
minetest.register_alias("animalmaterials:meat_chicken", dep_chicken_raw)
-- ^ The alias is only necessary for older versions of bucket_game--
-- as long as new ones always use the latter craftitem everywhere else,
-- they don't need the alias for any other reason.
end
local dep_lamb_raw = nil
if minetest.registered_items["animalmaterials:meat_lamb"] then
dep_lamb_raw = "animalmaterials:meat_lamb"
end
if not dep_lamb_raw then
minetest.register_craftitem(":animal_materials:meat_lamb", {
description = S("Raw Lamb"),
image = "codermobs_lamb_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
else
minetest.register_alias("animal_materials:meat_lamb", dep_lamb_raw)
end
minetest.register_craftitem(":animal_materials:meat_venison", {
description = S("Raw Venison"),
image = "codermobs_venison_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:meat_undead", {
description = S("Meat (not quite dead)"),
image = "animal_materials_meat_undead_raw.png",
on_use = minetest.item_eat(-2),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:meat_toxic", {
description = S("Toxic Meat"),
image = "animal_materials_meat_toxic_raw.png",
on_use = minetest.item_eat(-5),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:meat_ostrich", {
description = S("Raw Ostrich"),
image = "animal_materials_ostrich_meat_raw.png",
on_use = minetest.item_eat(3),
groups = { meat=1, eatable=1 },
stack_max=5
})
minetest.register_craftitem(":animal_materials:fish_bluewhite", {
description = S("Fish (bluewhite)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
minetest.register_craftitem(":animal_materials:fish_clownfish", {
description = S("Fish (clownfish)"),
image = "animal_materials_meat_raw.png",
on_use = minetest.item_eat(1),
groups = { meat=1, eatable=1 },
stack_max=25
})
-- ===================================================================
-- feather
minetest.register_craftitem(":animal_materials:feather", {
description = S("Feather"),
image = "animal_materials_feather.png",
stack_max=25
})
-- ===================================================================
-- milk
minetest.register_craftitem(":animal_materials:milk", {
description = S("Milk"),
image = "animal_materials_milk.png",
on_use = minetest.item_eat(1),
groups = { eatable=1 },
stack_max=10
})
-- ===================================================================
-- egg
minetest.register_craftitem(":animal_materials:egg", {
description = S("Egg"),
image = "animal_materials_egg.png",
stack_max=10
})
minetest.register_craftitem(":animal_materials:egg_big", {
description = S("Big Egg"),
image = "animal_materials_egg_big.png",
stack_max=5
})
animal_materialsdata["animal_materials_egg"] = {
graphics_3d = {
visual = "mesh",
mesh = "animal_materials_egg_ent.b3d",
textures = { "animal_materials_egg_ent_mesh.png" },
collisionbox = { -0.12,-0.125,-0.12,0.12,0.125,0.12 },
visual_size = {x=1,y=1,z=1},
}
}
animal_materialsdata["animal_materials_egg_big"] = {
graphics_3d = {
visual = "mesh",
mesh = "animal_materials_egg_ent.b3d",
textures = { "animal_materials_egg_ent_mesh.png" },
collisionbox = { -0.24,-0.25,-0.24,0.24,0.25,0.24 },
visual_size = {x=2,y=2,z=2},
}
}
-- ===================================================================
-- bone
minetest.register_craftitem(":animal_materials:bone", {
description = S("Bone"),
image = "animal_materials_bone.png",
stack_max=25
})
-- ===================================================================
-- furs
minetest.register_craftitem(":animal_materials:fur", {
description = S("Fur"),
image = "animal_materials_fur.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:fur_deer", {
description = S("Deer fur"),
image = "animal_materials_deer_fur.png",
stack_max=10
})
minetest.register_craftitem(":animal_materials:coat_cattle", {
description = S("Cattle coat"),
image = "animal_materials_cattle_coat.png",
stack_max=10
})
-- ===================================================================
-- horns
minetest.register_craftitem(":animal_materials:antlers", {
description = S("Antlers"),
image = "animal_materials_antlers.png",
stack_max=20
})
minetest.register_craftitem(":animal_materials:ivory", {
description = S("Ivory"),
image = "animal_materials_ivory.png",
stack_max=20
})
-- ===================================================================
-- scale
minetest.register_craftitem(":animal_materials:scale_golden", {
description = S("Scale (golden)"),
image = "animal_materials_scale_golden.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:scale_white", {
description = S("Scale (white)"),
image = "animal_materials_scale_white.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:scale_grey", {
description = S("Scale (grey)"),
image = "animal_materials_scale_grey.png",
stack_max=25
})
minetest.register_craftitem(":animal_materials:scale_blue", {
description = S("Scale (blue)"),
image = "animal_materials_scale_blue.png",
stack_max=25
})
-- ===================================================================
-- recipes
minetest.register_craft({
output = "wool:white",
recipe = {
{"animal_materials:feather","animal_materials:feather","animal_materials:feather"},
{"animal_materials:feather", "animal_materials:feather","animal_materials:feather"},
{"animal_materials:feather","animal_materials:feather","animal_materials:feather"},
}
})
minetest.register_craft({
output = "animal_materials:contract",
recipe = {
{"default:paper"},
{"default:paper"},
}
})

483
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/hen.lua

@ -0,0 +1,483 @@
-- Hen. Descended from "Farlands" version.
-- ===================================================================
-- License information for Sapier's 3D-egg media.
--
-- You may copy, use, modify or do nearly anything but remove this
-- copyright notice. Of course, you're not allowed to pretend you've
-- created or written the Sapier pieces.
--
-- CC-BY-SA 3.0. Attribution: Sapier.
-- ===================================================================
local numset = codermobs.numset_if_any
local codermobs_egg_time_delay =
numset ("codermobs_egg_time_delay" ) or 120
if codermobs_egg_time_delay < 3 then
codermobs_egg_time_delay = 3
end
local codermobs_egg_hatch_chance =
numset ("codermobs_egg_hatch_chance" ) or 3
local EGG_UNFERTILIZED = 1
local EGG_FERTILIZED = 2
-- ===================================================================
local lcname = "chicken"
local ucname = "Chicken"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- This mob is a special case
local obj_hen = "codermobs:hen"
-- ===================================================================
mobs_param = {
lcname = "hen" ,
ucname = "Hen" ,
obj_name = "codermobs:hen" ,
aoc = 4 ,
spawn_chance = 20000 ,
day_mode = true ,
min_light = 5 ,
max_light = 30 ,
min_height = -31000 ,
max_height = 31000 ,
spawn_type = "animal" ,
spawn_nodes = {
"default:dirt_with_dry_grass" ,
"default:dirt_with_grass" ,
"earthgen:dirt_with_dry_grass" ,
"ethereal:bamboo_dirt" ,
"ethereal:green_dirt" ,
"ethereal:green_dirt_top" ,
"ethereal:grove_dirt" ,
"mg:dirt_with_dry_grass" ,
"noisegrid:grass" ,
} ,
add_egg = true ,
egg_image = "wool_brown.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
local msname_cooked = msname .. "_cooked"
local msname_raw = msname .. "_raw"
local msname_img = msname .. ".png"
local msname_cooked_img = msname_cooked .. ".png"
local msname_raw_img = msname_raw .. ".png"
local msname_egg = msname .. "_egg"
local msname_egg_fried = msname_egg .. "_fried"
local msname_egg_img = msname_egg .. ".png"
local msname_egg_fried_img = msname_egg_fried .. ".png"
local obj_name_cooked = obj_name .. "_cooked"
local obj_name_raw = obj_name .. "_raw"
local obj_name_egg = obj_name .. "_egg"
local obj_name_egg_entity = obj_name_egg .. "_entity"
local obj_name_egg_fried = obj_name_egg .. "_fried"
-- ===================================================================
local do_breed = function (self)
local pos = self.object:getpos()
local objs = minetest.get_objects_inside_radius (pos, 12)
local egg_status = EGG_UNFERTILIZED
for n = 1, #objs do
if not objs [n]:is_player() then
local obj = objs [n]:get_luaentity()
if obj and obj.name == "codermobs:rooster" then
egg_status = EGG_FERTILIZED
end
end
end
minetest.set_node (pos,
{ name = obj_name_egg, param2 = egg_status })
minetest.sound_play ("chicken_lay_egg", {
pos = pos, gain = 1.0, max_hear_distance = 5,
})
end
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
makes_footstep_sound = true ,
-- Most behavior/sight/battle
armor = 200 ,
attack_type = "dogfight" ,
damage = 1 ,
hp_max = 10 ,
hp_min = 5 ,
passive = false ,
reach = 1 ,
runaway = true ,
view_range = 5 ,
-- Velocities
run_velocity = 3 ,
walk_velocity = 1 ,
-- Step/jump/fall parameters
fall_damage = 0 ,
fall_speed = -8 ,
fear_height = 5 ,
jump = false ,
jump_height = 0 ,
stepheight = 1.2 ,
-- Environment damage
lava_damage = 5 ,
light_damage = 0 ,
water_damage = 1 ,
-- Misc. parameters
floats = 0 ,
-- Too small:
-- collisionbox = {-0.2, 0, -0.2, 0.2, 0.45, 0.2},
-- Too large:
-- collisionbox = {-0.4, 0, -0.4, 0.4, 0.90, 0.4},
-- visual_size = { x=2, y=2 },
collisionbox = { -0.30, -0.01 , -0.30, 0.30, 0.66, 0.30 } ,
mesh = msname .. ".b3d" ,
textures = {{ "codermobs_hen_mesh.png" }} ,
visual = "mesh" ,
visual_size = { x=1.5, y=1.5 } ,
animation = {
stand_start = 0 ,
stand_end = 20 ,
walk_start = 25 ,
walk_end = 45 ,
speed_normal = 15 ,
} ,
drops = {
{ name=obj_name_raw, chance=1, min=2, max=2 } ,
} ,
follow = {
"farming:seed_wheat", "farming:seed_cotton"
} ,
sounds = { random = msname } ,
specific_attack = codermobs.make_mob_list ({
"bug", "beetle"
}) ,
on_rightclick = function (self, clicker)
if mobs:feed_tame (self, clicker, 8, true, true) then
return
end
mobs:protect (self, clicker)
mobs:capture_mob (self, clicker, 30, 50, 80, false, nil)
end,
do_custom = function (self)
if self.child or math.random (1, 4000) > 1 then return end
do_breed (self)
end ,
-- Poikilos June 2019: false here prevents the creation of a mini-
-- chicken based on the adult mesh.
on_breed = function (self, ent)
do_breed (self)
return false
end ,
}
-- ===================================================================
codermobs.setup_mob()
mobs:alias_mob ("codermobs:chicken" , obj_hen)
mobs:alias_mob ("codermobs:chook" , obj_hen)
mobs:alias_mob ("mobs:chicken" , obj_hen)
mobs:alias_mob ("mobs_animal:chicken" , obj_hen)
-- ===================================================================
-- Egg throwing item
local egg_GRAVITY = 9
local egg_VELOCITY = 19
-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
local playerpos = player:getpos()
minetest.sound_play("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
})
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, obj_name_egg_entity)
local ent = obj:get_luaentity()
local dir = player:get_look_dir()
ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:setvelocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
})
obj:setacceleration({
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
item:take_item()
return item
end
-- ===================================================================
-- Egg.
minetest.register_node (obj_name_egg, {
description = ucname .. " Egg",
inventory_image = msname_egg_img ,
wield_image = msname_egg_img ,
paramtype = "light",
walkable = false,
is_ground_content = true,
sunlight_propagates = true,
-- This draws the new 3D chicken egg:
--
drawtype = "mesh" ,
mesh = "codermobs_chicken_egg.b3d" ,
tiles = { "animal_materials_egg_ent_mesh.png" } ,
selection_box = {
type = "fixed" ,
fixed = { -0.12,-0.425,-0.12,0.12,-0.175,0.12 } ,
} ,
visual_scale = 0.12 ,
groups = {snappy = 2, dig_immediate = 3},
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos,
{ name = obj_name_egg, param2 = EGG_UNFERTILIZED })
end
end,
on_construct = function (pos)
minetest.get_node_timer (pos):start (codermobs_egg_time_delay)
end ,
on_use = mobs_shoot_egg ,
on_timer = function (pos, elapsed)
local self = minetest.get_node (pos)
local sp2 = self.param2
minetest.remove_node (pos)
if sp2 ~= nil and sp2 == EGG_FERTILIZED then
local num = math.random (1, codermobs_egg_hatch_chance)
if num == 1 then
minetest.add_entity (pos, "codermobs:baby_chick")
end
end
end ,
})
minetest.register_alias ("codermobs:egg" , obj_name_egg)
minetest.register_alias ("mobs:egg" , obj_name_egg)
minetest.register_alias ("egg" , obj_name_egg)
-- ===================================================================
-- Egg entity
mobs:register_arrow (obj_name_egg_entity, {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = { msname_egg_img } ,
velocity = 6,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_node = function(self, pos, node)
local num = math.random(1, 10)
-- RJK 191223: This code is disabled for now because it'll presently
-- crash if it's used.
if false and num == 1 then
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
local mob = minetest.add_entity (pos, obj_name)
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
end
})
-- ===================================================================
-- Fried egg.
minetest.register_craftitem (obj_name_egg_fried, {
description = "Fried " .. ucname .. " Egg" ,
inventory_image = msname_egg_fried_img ,
on_use = minetest.item_eat (2) ,
})
minetest.register_alias ("mobs:chicken_egg_fried",
obj_name_egg_fried)
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_egg ,
output = obj_name_egg_fried ,
})
-- ===================================================================
-- Raw bird.
local dep_chicken_raw = nil
if minetest.registered_items["animal_materials:meat_chicken"] then
dep_chicken_raw = "animal_materials:meat_chicken"
elseif minetest.registered_items["animalmaterials:meat_chicken"] then
dep_chicken_raw = "animalmaterials:meat_chicken"
end
if not dep_chicken_raw then
minetest.register_craftitem (obj_name_raw, {
description = "Raw " .. ucname ,
inventory_image = msname_raw_img ,
on_use = function (itemstack, player, pointed_thing)
local name = player:get_player_name()
local msg = name .. " ate raw " .. ucname .. ". Salmonella!"
minetest.chat_send_all (msg)
player:set_hp (player:get_hp() - 2)
end ,
})
minetest.register_alias ("mobs:chicken_raw", obj_name_raw)
else
minetest.register_alias ("mobs:chicken_raw", dep_chicken_raw)
minetest.register_alias (obj_name_raw, dep_chicken_raw)
end
-- ===================================================================
-- Cooked bird.
local dep_chicken_cooked = nil
if minetest.registered_items["cooking:meat_chicken_cooked"] then
dep_chicken_cooked = "cooking:meat_chicken_cooked"
end
if not dep_chicken_cooked then
minetest.register_craftitem (obj_name_cooked, {
description = "Cooked " .. ucname ,
inventory_image = msname_cooked_img ,
on_use = minetest.item_eat (6) ,
})
minetest.register_alias ("mobs:chicken_cooked",
obj_name_cooked)
else
minetest.register_alias ("mobs:chicken_cooked", dep_chicken_cooked)
minetest.register_alias (obj_name_cooked, dep_chicken_cooked)
end
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_raw ,
output = obj_name_cooked ,
})
-- ===================================================================
-- Chicken feather.
minetest.register_craftitem ("codermobs:chicken_feather", {
description = "Feather" ,
inventory_image = "codermobs_chicken_feather.png" ,
})
minetest.register_alias ("mobs:chicken_feather",
"codermobs:chicken_feather")
-- ===================================================================
codermobs.log_done()
-- ===================================================================
-- End of file.

128
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/lott_spider.lua

@ -0,0 +1,128 @@
-- Giant Spider. Descended from LOTT version.
-- ===================================================================
local lcname = "lott_spider"
local ucname = "LOTT Spider"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = -1 ,
spawn_chance = 120000 ,
day_mode = true ,
min_light = 0 ,
max_light = 30 ,
min_height = -31000 ,
max_height = 31000 ,
spawn_type = "npc" ,
spawn_nodes = {
"default:junglegrass" ,
"default:jungleleaves" ,
"default:jungletree" ,
} ,
add_egg = true ,
egg_image = "default_stone.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
minetest.register_craftitem (obj_name .. "_meat", {
description = "Cooked Spider",
inventory_image = msname .. "_meat.png",
on_use = minetest.item_eat (4),
})
minetest.register_craftitem (obj_name .. "_meat_raw", {
description = "Raw Spider",
inventory_image = msname .. "_meat_raw.png",
})
minetest.register_craft ({
type = "cooking",
output = obj_name .. "_meat",
recipe = obj_name .. "_meat_raw",
})
mobs_param.core_param = {
type = mobs_param.spawn_type ,
passive = false,
attacks_monsters = true,
hp_min = 15,
hp_max = 30,
collisionbox = {-0.9, -0.01, -0.7, 0.7, 0.6, 0.7},
textures = { msname .. ".png"} ,
visual_size = {x=7,y=7},
visual = "mesh",
mesh = msname .. ".x",
makes_footstep_sound = true,
view_range = 15,
walk_velocity = 1,
run_velocity = 3,
armor = 200,
damage = 3,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
drops = {
{ name = "farming:string" ,
chance = 2, min = 1, max = 3 } ,
{ name = obj_name .. "_meat_raw" ,
chance = 4, min = 1, max = 2 } ,
} ,
light_resistant = true,
drawtype = "front",
water_damage = 5,
floats = 0,
runaway = true,
lava_damage = 5,
light_damage = 0,
on_rightclick = nil,
attack_type = "dogfight",
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 1,
stand_end = 1,
walk_start = 20,
walk_end = 40,
run_start = 20,
run_end = 40,
punch_start = 50,
punch_end = 90,
},
blood_texture = msname .. "_blood.png",
sounds = {
war_cry = "codermobs_eerie" ,
damage = "codermobs_damage_giant_exoskeleton" ,
death = "codermobs_death_giant_bug" ,
attack = "codermobs_use_giant_exoskeleton" ,
},
}
-- ===================================================================
codermobs.setup_mob()
mobs:alias_mob ("mobs_monster:spider" , obj_name)
codermobs.log_done()
-- ===================================================================
-- End of file.

19
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/oldcoder.txt

@ -0,0 +1,19 @@
Name: codermobs
Source: New mod using existing media files
License: See "LICENSE"
----------------------------------------------------------------------
1. This is a new mod which implements a number of Final Minetest 3D
mobs.
For general information, see the "_game" documentation, which covers
this mod and the associated modpack in detail.
----------------------------------------------------------------------
2. The code is largely new, but it includes elements from existing
mods. The media files, in most cases, have been extracted from the
same or similar mods.
For license information, see "LICENSE".

371
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/ostrich.lua

@ -0,0 +1,371 @@
-- Ostrich. Descended from Sapier version.
-- ===================================================================
-- Media license. Applies to model and associated texture.
--
-- You may copy, use, modify or do nearly anything but remove this
-- copyright notice. Of course, you're not allowed to pretend you've
-- created or written the Sapier, Poikilos, or OldCoder pieces.
--
-- CC-BY-SA 3.0. Attribution: Sapier, Poikilos, and OldCoder.
-- ===================================================================
local lcname = "ostrich"
local ucname = "Ostrich"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = -1 ,
spawn_chance = 80000 ,
day_mode = true ,
min_light = 14 ,
max_light = 20 ,
min_height = 0 ,
max_height = 200 ,
spawn_type = "animal" ,
spawn_nodes = {
"default:dirt_with_dry_grass" ,
"ethereal:mushroom_dirt" ,
} ,
spawn_by = {
"group:dry_grass" ,
"group:grass" ,
"flowers:mushroom_brown" ,
} ,
add_egg = true ,
egg_image = "wool_pink.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
-- local mcname = "codermobs_chicken"
local mcname = "codermobs_ostrich"
local msname_cooked = mcname .. "_cooked"
local msname_raw = mcname .. "_raw"
local msname_img = mcname .. ".png"
local msname_cooked_img = msname_cooked .. ".png"
-- local msname_raw_img = msname_raw .. ".png"
local msname_raw_img = "animal_materials_ostrich_meat_raw.png"
local msname_egg = mcname .. "_egg"
local msname_egg_fried = msname_egg .. "_fried"
-- local msname_egg_fried_img = "animal_materials_egg_big_fried.png"
-- ^ by Poikilos (no upstream)
-- local msname_egg_img = "animal_materials_egg_big.png"
-- ^ upstream name is animalmaterials_egg_big.png (brown, but real ostrich eggs are offwhite)
local msname_egg_fried_img = msname_egg_fried .. ".png"
local msname_egg_img = msname_egg .. ".png"
local obj_name_cooked = obj_name .. "_cooked"
-- local obj_name_raw = obj_name .. "_raw"
-- ^ formerly codermobs:ostrich_raw (dup of animal_materials, see alias below)
local obj_name_raw = ":animal_materials:meat_ostrich"
local obj_name_egg = obj_name .. "_egg"
local obj_name_egg_entity = obj_name_egg .. "_entity"
local obj_name_egg_fried = obj_name_egg .. "_fried"
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
makes_footstep_sound = true ,
armor = 200 ,
attack_npcs = false ,
attack_type = "dogfight" ,
damage = 2 ,
fear_height = 3 ,
floats = 0 ,
group_attack = true ,
hp_max = 15 ,
hp_min = 5 ,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
owner_loyal = true ,
passive = false ,
pushable = true ,
reach = 2 ,
run_velocity = 3 ,
runaway = true ,
type = "animal" ,
view_range = 10 ,
walk_velocity = 2 ,
lava_damage = 5 ,
light_damage = 0 ,
water_damage = 1 ,
collisionbox = { -0.50, -0.85, -0.50, 0.50, 0.60, 0.50 } ,
mesh = "codermobs_ostrich.b3d" ,
rotate = 270 ,
textures = { "codermobs_ostrich_mesh.png" } ,
visual = "mesh" ,
sounds = {
} ,
follow = { "default:apple", "farming:potato" } ,
drops = {
{
name="animal_materials:meat_ostrich",
chance=1, min=1, max=3
} ,
} ,
specific_attack = codermobs.make_mob_list ({
"chicken", "bunny",
}) ,
animation = {
speed_normal = 10 ,
stand_start = 1 ,
stand_end = 40 ,
walk_start = 41 ,
walk_end = 81 ,
},
on_rightclick = function (self, clicker)
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, 50, false, nil) then
return
end
end,
}
-- ===================================================================
codermobs.setup_mob()
-- ===================================================================
-- Egg-throwing item
local egg_GRAVITY = 9
local egg_VELOCITY = 19
-- Shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
local playerpos = player:getpos()
minetest.sound_play ("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
})
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, obj_name_egg_entity)
local ent = obj:get_luaentity()
local dir = player:get_look_dir()
ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:setvelocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
})
obj:setacceleration({
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()
item:take_item()
return item
end
-- ===================================================================
-- Egg.
minetest.register_node (obj_name_egg, {
description = ucname .. " Egg",
inventory_image = msname_egg_img ,
wield_image = msname_egg_img ,
paramtype = "light",
walkable = false,
is_ground_content = true,
sunlight_propagates = true,
drawtype = "mesh" ,
mesh = "animal-materials-egg.b3d" ,
tiles = { "animal_materials_egg_ent_mesh.png" } ,
visual_scale = 0.24 ,
selection_box = {
type = "fixed" ,
fixed = { -0.25, -0.25, -0.25, 0.25, 0.25, 0.24 } ,
} ,
groups = {snappy = 2, dig_immediate = 3},
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos, {name = obj_name_egg, param2 = 1})
end
end ,
on_use = mobs_shoot_egg ,
})
-- ===================================================================
-- Egg entity.
mobs:register_arrow (obj_name_egg_entity, {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = { msname_egg_img } ,
velocity = 6,
hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,
hit_node = function (self, pos, node)
local num = math.random (1, 10)
-- RJK 191223: This code is disabled for now because it'll presently
-- crash if it's used.
if false and num == 1 then
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
local mob = minetest.add_entity (pos, obj_name)
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
end
})
-- ===================================================================
-- Fried egg.
minetest.register_craftitem (obj_name_egg_fried, {
description = "Fried " .. ucname .. " Egg" ,
inventory_image = msname_egg_fried_img ,
on_use = minetest.item_eat (3) ,
})
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_egg ,
output = obj_name_egg_fried ,
})
-- ===================================================================
-- Raw bird.
if not minetest.registered_items[obj_name_raw] then
minetest.register_craftitem (obj_name_raw, {
description = "Raw " .. ucname ,
inventory_image = msname_raw_img ,
on_use = function (itemstack, player, pointed_thing)
local name = player:get_player_name()
local msg = name .. " ate raw " .. ucname .. ". Salmonella!"
minetest.chat_send_all (msg)
player:set_hp (player:get_hp() - 2)
end ,
})
end
minetest.register_alias("codermobs:ostrich_raw", "animal_materials:meat_ostrich")
-- ^ only necessary for old versions of codermobs
-- ===================================================================
-- Cooked bird.
-- For the register_craftitem and register_craft calls below,
-- the cooking mod from the animals_modpack or animalmaterials modpacks
-- do the same as below except for with ostrich:
-- - raw craftitems are in the animalmaterials namespace,
-- - cooked versions are in the cooking namespace
-- - but cooking doesn't have ostrich
minetest.register_craftitem (obj_name_cooked, {
description = "Cooked " .. ucname ,
inventory_image = msname_cooked_img ,
on_use = minetest.item_eat (6) ,
})
minetest.register_craft ({
type = "cooking" ,
recipe = obj_name_raw ,
output = obj_name_cooked ,
})
-- ===================================================================
codermobs.log_done()
-- ===================================================================
-- End of file.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/projects/animal_materials_egg_big+ostrich.xcf

Binary file not shown.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/projects/animal_materials_egg_big_fried+ostrich.xcf

Binary file not shown.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/projects/animalmaterials_lamb_raw+cooked.xcf

Binary file not shown.

118
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/rat_better.lua

@ -0,0 +1,118 @@
-- Better Rat. Descended from Melkor version.
-- Note: Should be loaded *after* regular rat.
-- ===================================================================
local lcname = "rat_better"
local ucname = "Better Rat"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = 2 ,
spawn_chance = 150000 ,
day_mode = true ,
min_light = 10 ,
max_light = 20 ,
min_height = -31000 ,
max_height = 31000 ,
scale = 1.5 ,
spawn_type = "animal" ,
spawn_nodes = {
"darkage:silt" ,
"default:desert_sand" ,
"default:dirt_with_dry_grass" ,
"default:dirt_with_grass" ,
"default:silver_sand" ,
"default:stone" ,
"earthgen:dirt_with_dry_grass" ,
"ethereal:green_dirt" ,
"ethereal:green_dirt_top" ,
"ethereal:grove_dirt" ,
"ethereal:mushroom_dirt" ,
"loud_walking:polluted_dirt" ,
"mg:dirt_with_dry_grass" ,
"noisegrid:grass" ,
} ,
add_egg = false ,
egg_image = msname .. "_inv.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
visual = "mesh" ,
mesh = msname .. ".b3d" ,
rotate = 180,
textures = {
{ msname .. "_black.png" } ,
{ msname .. "_brown.png" } ,
{ msname .. "_gray.png" } ,
{ msname .. "_white.png" } ,
},
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
hp_min= 2,
hp_max = 5,
armor = 80,
knock_back = 2,
blood_amount = 1,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
water_damage = 1,
floats = 0,
runaway = true,
lava_damage = 5,
fall_damage = 0,
damage = 1,
attack_type = "dogfight",
group_attack = true,
drops = {
{ name="mobs:cheese", chance=1, min=1, max=2 } ,
} ,
follow = { "mobs:cheese" , } ,
replace_rate = 50,
replace_what = { "mobs:cheese" , "mobs:cheeseblock" , } ,
replace_with = "air",
view_range = 8,
on_rightclick = function (self, clicker)
mobs:capture_mob (self, clicker, 25, 80, 0, true, nil)
end ,
}
-- cooked rat, yummy!
minetest.register_craft ({
type = "cooking" ,
output = "codermobs:rat_standard_cooked" ,
recipe = obj_name ,
cooktime = 5,
})
-- ===================================================================
codermobs.setup_mob()
codermobs.log_done()
-- ===================================================================
-- End of file.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_egg_big.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_meat_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_meat_toxic_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_meat_undead_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/animal_materials_pork_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 960 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_chicken_cooked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_chicken_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_cooked_rat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_egg_big_fried.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_lamb_cooked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_lamb_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_meat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_meat_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_cooked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_egg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_egg_fried.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_ostrich_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_pork_cooked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_pork_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 960 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_rat_better_inv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_rat_cooked.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/textures/codermobs_rat_inv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

164
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/codermobs/warthog.lua

@ -0,0 +1,164 @@
-- Warthog. Descended from KrupnoPavel version.
-- ===================================================================
local lcname = "warthog"
local ucname = "Warthog"
local msname = "codermobs_" .. lcname
local obj_name = "codermobs:" .. lcname
-- ===================================================================
mobs_param = {
lcname = lcname ,
ucname = ucname ,
obj_name = obj_name ,
aoc = -1 ,
spawn_chance = 80000 ,
day_mode = true ,
min_light = 14 ,
max_light = 20 ,
min_height = 0 ,
max_height = 200 ,
spawn_type = "animal" ,
spawn_nodes = {
"default:dirt_with_dry_grass" ,
"ethereal:mushroom_dirt" ,
} ,
spawn_by = {
"group:dry_grass" ,
"group:grass" ,
"flowers:mushroom_brown" ,
} ,
add_egg = true ,
egg_image = "wool_pink.png" ,
}
-- ===================================================================
codermobs.adjust_param()
-- ===================================================================
mobs_param.core_param = {
type = mobs_param.spawn_type ,
makes_footstep_sound = true ,
armor = 200 ,
attack_npcs = false ,
attack_type = "dogfight" ,
damage = 2 ,
fear_height = 2 ,
floats = 0 ,
group_attack = true ,
hp_max = 15 ,
hp_min = 5 ,
stepheight = 1.2 ,
jump_height = 0 ,
jump = false ,
owner_loyal = true ,
passive = false ,
pushable = true ,
reach = 2 ,
run_velocity = 3 ,
runaway = true ,
type = "animal" ,
view_range = 10 ,
walk_velocity = 2 ,
lava_damage = 5 ,
light_damage = 0 ,
water_damage = 1 ,
collisionbox = { -0.40, -0.01, -0.40, 0.40, 0.95, 0.40 } ,
mesh = msname .. ".x" ,
textures = {{ msname .. ".png" }} ,
visual = "mesh" ,
animation = {
stand_start = 25 ,
stand_end = 55 ,
punch_start = 70 ,
punch_end = 100 ,
walk_start = 70 ,
walk_end = 100 ,
speed_normal = 15 ,
} ,
sounds = {
random = "mobs_pig",
attack = "mobs_pig_angry",
} ,
follow = { "default:apple", "farming:potato" } ,
drops = {
{ name="mobs:pork_raw", chance=1, min=1, max=3 } ,
} ,
specific_attack = codermobs.make_mob_list ({
"rat" , "rat_better", "chicken",
}) ,
on_rightclick = function (self, clicker)
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, 50, false, nil) then
return
end
end,
}
-- ===================================================================
-- raw porkchop
local dep_pork_raw = nil
if minetest.registered_items["animal_materials:meat_pork"] then
dep_pork_raw = "animal_materials:meat_pork"
elseif minetest.registered_items["animalmaterials:meat_pork"] then
dep_pork_raw = "animalmaterials:meat_pork"
end
if not dep_pork_raw then
minetest.register_craftitem(":mobs:pork_raw", {
description = "Raw Porkchop" ,
inventory_image = "codermobs_pork_raw.png",
on_use = minetest.item_eat(4),
groups = {food_meat_raw = 1, food_pork_raw = 1, flammable = 2},
})
else
minetest.register_alias("mobs:pork_raw", dep_pork_raw)
end
-- cooked porkchop
minetest.register_craftitem(":mobs:pork_cooked", {
description = "Cooked Porkchop" ,
inventory_image = "codermobs_pork_cooked.png",
on_use = minetest.item_eat(8),
groups = {food_meat = 1, food_pork = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:pork_cooked",
recipe = "mobs:pork_raw",
cooktime = 5,
})
-- ===================================================================
codermobs.setup_mob()
mobs:alias_mob ("mobs:pumba" , obj_name)
mobs:alias_mob ("mobs:warthog" , obj_name)
mobs:alias_mob ("mobs_animal:pumba" , obj_name)
codermobs.log_done()
-- ===================================================================
-- End of file.

345
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/crafts.lua

@ -0,0 +1,345 @@
local S = mobs.intllib
-- name tag
minetest.register_craftitem("mobs:nametag", {
description = S("Name Tag"),
inventory_image = "mobs_nametag.png",
groups = {flammable = 2},
})
if minetest.get_modpath("dye") and minetest.get_modpath("farming") then
minetest.register_craft({
type = "shapeless",
output = "mobs:nametag",
recipe = {"default:paper", "dye:black", "farming:string"},
})
end
-- leather
minetest.register_craftitem("mobs:leather", {
description = S("Leather"),
inventory_image = "mobs_leather.png",
groups = {flammable = 2},
})
local dep_meat_raw = nil
if minetest.registered_items["animal_materials:meat_raw"] then
dep_meat_raw = "animal_materials:meat_raw"
elseif minetest.registered_items["animalmaterials:meat_raw"] then
dep_meat_raw = "animalmaterials:meat_raw"
end
if not dep_meat_raw then
-- raw meat
minetest.register_craftitem("mobs:meat_raw", {
description = S("Raw Meat"),
inventory_image = "mobs_meat_raw.png",
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, flammable = 2},
})
else
minetest.register_alias("mobs:meat_raw", dep_meat_raw)
end
local dep_meat_cooked = nil
if minetest.registered_items["cooking:meat_cooked"] then
dep_meat_cooked = "cooking:meat_cooked"
end
if not dep_meat_cooked then
-- cooked meat
minetest.register_craftitem("mobs:meat", {
description = S("Meat"),
inventory_image = "mobs_meat.png",
on_use = minetest.item_eat(8),
groups = {food_meat = 1, flammable = 2},
})
else
minetest.register_alias("mobs:meat", dep_meat_cooked)
end
minetest.register_craft({
type = "cooking",
output = "mobs:meat",
recipe = "mobs:meat_raw",
cooktime = 5,
})
-- lasso
minetest.register_tool("mobs:lasso", {
description = S("Lasso (right-click animal to put in inventory)"),
inventory_image = "mobs_magic_lasso.png",
groups = {flammable = 2},
})
if minetest.get_modpath("farming") then
minetest.register_craft({
output = "mobs:lasso",
recipe = {
{"farming:string", "", "farming:string"},
{"", "default:diamond", ""},
{"farming:string", "", "farming:string"},
}
})
end
minetest.register_alias("mobs:magic_lasso", "mobs:lasso")
-- net
minetest.register_tool("mobs:net", {
description = S("Net (right-click animal to put in inventory)"),
inventory_image = "mobs_net.png",
groups = {flammable = 2},
})
if minetest.get_modpath("farming") then
minetest.register_craft({
output = "mobs:net",
recipe = {
{"group:stick", "", "group:stick"},
{"group:stick", "", "group:stick"},
{"farming:string", "group:stick", "farming:string"},
}
})
end
-- shears (right click to shear animal)
minetest.register_tool("mobs:shears", {
description = S("Steel Shears (right-click to shear)"),
inventory_image = "mobs_shears.png",
groups = {flammable = 2},
})
minetest.register_craft({
output = 'mobs:shears',
recipe = {
{'', 'default:steel_ingot', ''},
{'', 'group:stick', 'default:steel_ingot'},
}
})
-- protection rune
minetest.register_craftitem("mobs:protector", {
description = S("Mob Protection Rune"),
inventory_image = "mobs_protector.png",
groups = {flammable = 2},
})
minetest.register_craft({
output = "mobs:protector",
recipe = {
{"default:stone", "default:stone", "default:stone"},
{"default:stone", "default:goldblock", "default:stone"},
{"default:stone", "default:stone", "default:stone"},
}
})
-- saddle
minetest.register_craftitem ("mobs:saddle", {
description = S("Saddle") ,
inventory_image = "mobs_saddle.png",
groups = { flammable=2 } ,
stack_max = 1 ,
})
minetest.register_craft({
output = "mobs:saddle",
recipe = {
{"mobs:leather", "mobs:leather", "mobs:leather"},
{"mobs:leather", "default:steel_ingot", "mobs:leather"},
{"mobs:leather", "default:steel_ingot", "mobs:leather"},
}
})
-- mob fence (looks like normal fence but collision is 2 high)
default.register_fence("mobs:fence_wood", {
description = S("Mob Fence"),
texture = "default_wood.png",
material = "default:fence_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
collision_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 1.9, 0.5},
},
},
})
-- mob fence top (has enlarged collisionbox to stop mobs getting over)
minetest.register_node("mobs:fence_top", {
description = S("Mob Fence Top"),
drawtype = "nodebox",
tiles = {"default_wood.png"},
paramtype = "light",
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
node_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2},
},
collision_box = {
type = "fixed",
fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4},
},
selection_box = {
type = "fixed",
fixed = {-0.4, -1.5, -0.4, 0.4, 0, 0.4},
},
})
minetest.register_craft({
output = "mobs:fence_top 12",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "default:fence_wood", ""},
}
})
-- items that can be used as fuel
minetest.register_craft({
type = "fuel",
recipe = "mobs:nametag",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:lasso",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:net",
burntime = 8,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:leather",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:saddle",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:fence_wood",
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "mobs:fence_top",
burntime = 2,
})
-- this tool spawns same mob and adds owner, protected, nametag info
-- then removes original entity, this is used for fixing any issues.
local tex_obj
minetest.register_tool(":mobs:mob_reset_stick", {
description = "Mob Reset Stick",
inventory_image = "default_stick.png^[colorize:#ff000050",
stack_max = 1,
groups = {not_in_creative_inventory = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "object" then
return
end
local obj = pointed_thing.ref
local control = user:get_player_control()
local sneak = control and control.sneak
if obj and not sneak then
local self = obj:get_luaentity()
local obj2 = minetest.add_entity(obj:get_pos(), self.name)
if obj2 then
local ent2 = obj2:get_luaentity()
ent2.protected = self.protected
ent2.owner = self.owner
ent2.nametag = self.nametag
ent2.gotten = self.gotten
ent2.tamed = self.tamed
ent2.health = self.health
ent2.order = self.order
if self.child then
obj2:set_velocity({x = 0, y = self.jump_height, z = 0})
end
obj2:set_properties({nametag = self.nametag})
obj:remove()
end
end
if obj and sneak then
tex_obj = obj
local name = user:get_player_name()
local tex = ""
minetest.show_formspec(name, "mobs_texture", "size[8,4]"
.. "field[0.5,1;7.5,0;name;"
.. minetest.formspec_escape(S("Enter texture:")) .. ";" .. tex .. "]"
.. "button_exit[2.5,3.5;3,1;mob_texture_change;"
.. minetest.formspec_escape(S("Change")) .. "]")
end
end,
})
minetest.register_on_player_receive_fields(function(player, formname, fields)
-- right-clicked with nametag and name entered?
if formname == "mobs_texture"
and fields.name
and fields.name ~= "" then
local name = player:get_player_name()
if not tex_obj then
return
end
-- make sure nametag is being used to name mob
local item = player:get_wielded_item()
if item:get_name() ~= "mobs:mob_reset_stick" then
return
end
-- limit name entered to 64 characters long
if string.len(fields.name) > 64 then
fields.name = string.sub(fields.name, 1, 64)
end
-- update texture
local self = tex_obj:get_luaentity()
self.base_texture = {fields.name}
tex_obj:set_properties({textures = {fields.name}})
-- reset external variable
tex_obj = nil
end
end)

51
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/license.txt

@ -0,0 +1,51 @@
Copyright and license for new code and/or media not covered below:
(c) 2019 and CC BY-NC-SA 4.0 International: OldCoder (Robert Kiraly).
----------------------------------------------------------------------
New Poikilos textures:
mobs_damage_blood_big.png
mobs_damage_blood.png
mobs_damage_bug_big.png
mobs_damage_bug.png
mobs_damage_stone_big.png
mobs_damage_stone.png
mobs_damage_sweat_big.png
mobs_damage_sweat.png
(c) 2019 and CC BY-SA 4.0 International: Poikilos.
----------------------------------------------------------------------
Additional changes:
mobs_chicken_egg.png
mobs_chicken_egg_overlay.png
(c) 2016-2019 and MIT License: TenPlus1, Poikilos.
----------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2016 TenPlus1
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

50
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/oldcoder.txt

@ -0,0 +1,50 @@
Name: mods
Source: For of upstream mod - Do not replace
License: See "license.txt"
----------------------------------------------------------------------
1. This is a fork of an upstream mod. Don't attempt to update or re-
place it.
To be documented.
----------------------------------------------------------------------
2. Partial list of changes:
* Multiple bug fixes related to old models that are rotated relative
to today's standard.
* Bug fix related to behavior of mobs at the edge of cliffs.
* Mobs that are sensitive to light can now optionally be configured to
burst into flames when light damage occurs.
* Fix failure of API code to pass riding/driving parameters specified
by higher levels to riding/driving code.
* Add support for more sophisticated approach to assessing mob densi-
ty.
* Improve support for amphibious mobs.
* Better TNT smoke texture.
* Fix failure in riding/driving code to handle missing parameters.
* Add support for steering both ground vehicles and aircraft using
the keyboard as well as the mouse. Note: These are separate features.
* Talking mobs. Multiple languages are supported.
* New damage-related textures by Poikilos:
mobs_damage_blood_big.png
mobs_damage_blood.png
mobs_damage_stone_big.png
mobs_damage_stone.png
mobs_damage_sweat_big.png
mobs_damage_sweat.png
* Add section to "license.txt" to cover new code and media.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/textures/mobs_meat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/mobs/textures/mobs_meat_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

13
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/oldcoder.txt

@ -0,0 +1,13 @@
Name: codermobs
Source: New modpack mixing original and forked mods
License: See notes below
----------------------------------------------------------------------
The full documentation for "codermobs" is presently merged into the
"_game" documentation.
Media files are derived, in general, from older mods. The code mixes
old and new pieces.
License files are present in the individual mod directories.

28
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/LICENSE

@ -0,0 +1,28 @@
Krupnov Pavel and TenPlus1 components:
The MIT License (MIT)
Copyright (c) 2014 Krupnov Pavel -- bugs, kpgmobs, pmobs
Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1 -- mobs_animal
Copyright (c) 2016 TenPlus1 -- mobs_monster and mobs_npc
Copyright (c) 2021 Poikilos -- whinny meats (redone from scratch at 32x32)
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

19
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/init.lua

@ -0,0 +1,19 @@
dofile (minetest.get_modpath ("whinny").."/api.lua" )
dofile (minetest.get_modpath ("whinny").."/horse.lua" )
minetest.register_craftitem ("whinny:meat", {
description = "Cooked Horsemeat",
inventory_image = "whinny_meat.png",
on_use = minetest.item_eat(4),
})
minetest.register_craftitem ("whinny:meat_raw", {
description = "Raw Horsemeat",
inventory_image = "whinny_meat_raw.png",
})
minetest.register_craft ({
type = "cooking",
output = "whinny:meat",
recipe = "whinny:meat_raw",
})

7
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/oldcoder.txt

@ -0,0 +1,7 @@
Name: whinny
Source: Fork of an upstream mod (do not replace)
License: See "LICENSE"
----------------------------------------------------------------------
To be documented.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/projects/whinny_meat+raw.xcf

Binary file not shown.

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/textures/whinny_meat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
Bucket_Game-branches/distinguish_meats-vs-211114a/mods/codermobs/whinny/textures/whinny_meat_raw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Loading…
Cancel
Save