Browse Source

reorganized files for clarity

master
poikilos 7 years ago
committed by Jacob Gustafson
parent
commit
da31c6f111
  1. 0
      patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE
  2. 0
      patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua
  3. 0
      patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua
  4. 0
      patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj
  5. 0
      patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png
  6. 0
      patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png
  7. 108
      patches/deprecated-subgame-basis/mods/spawners-0.4.15 or lower/README.md
  8. 403
      patches/deprecated-subgame-basis/mods/spawners-0.4.15 or lower/spawners_mobs.lua
  9. 335
      patches/deprecated-subgame-basis/mods/spawners-0.4.15 or lower/spawners_ores.lua
  10. 0
      patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua
  11. 0
      patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua
  12. 0
      patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png
  13. 0
      patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png
  14. 12
      patches/deprecated-subgame/mods/spawners-0.4.15 or lower/spawners_mobs.lua
  15. 335
      patches/deprecated-subgame/mods/spawners-0.4.15 or lower/spawners_ores.lua

0
patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE → patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/LICENSE

0
patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua → patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua

0
patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua → patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua

0
patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj → patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/models/homedecor_beer_mug.obj

0
patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png → patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
patches/subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png → patches/deprecated-subgame-basis/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

108
patches/deprecated-subgame-basis/mods/spawners-0.4.15 or lower/README.md

@ -0,0 +1,108 @@
# Spawners #
This MOD for Minetest let the player craft mob and ore Spawner blocks. Mobs/Ores are spawning randomly in a short intervals.
From version 0.6 Pyramids can be spawned in desert and environmental spwaners are added. Environmental spawners are used for spawning inside of temples and dungeons (mapgen v6 default minetest game). - Thanks to BlockMen. These kind of spawners are very rarely dropping real mob spawners, in any other case they don't drop anything.
Easy to implement new mob mods just look in to config.lua.
New features can be enabled/disabled in settings.txt file.
Currently it works with [Pyramids Mummy](https://forum.minetest.net/viewtopic.php?id=7063), [Mobs Redo](https://forum.minetest.net/viewtopic.php?f=11&t=9917) and [Creatures](https://forum.minetest.net/viewtopic.php?f=11&t=8638).
![spawners_promo.jpg](https://bitbucket.org/repo/y69Me7/images/3793257566-spawners_promo.jpg)
![spawner_waiting_medium.gif](https://bitbucket.org/repo/y69Me7/images/246761582-spawner_waiting_medium.gif) ![spawner_animated_medium.gif](https://bitbucket.org/repo/y69Me7/images/1359872529-spawner_animated_medium.gif)
## YouTube video ##
[Minetest - spawners MOD v0.1](https://youtu.be/TlaMVl0ZDtw)
## Mod dependencies ##
* default
* fake_fire?
* xpanes?
* mobs?
* creatures?
* pyramids?
mobs redo, creatures are supported mods
fake_fire, xpanes for recipes
## Links ##
[[Mod]Minetest Forum Page](https://forum.minetest.net/viewtopic.php?f=11&t=13857)
[[Server]Minetest Forum Page](https://forum.minetest.net/viewtopic.php?f=10&t=13727) - try this MOD on this server
[G+ Collection](https://plus.google.com/collection/06fEx)
[G+ Community](https://plus.google.com/communities/105201070842404099845)
## License ##
WTFPL
## Changelog ##
### 0.6 ###
* inherited BlockMen Pyramid mod, so now Spawners can spawn Pyramids in desert (mapgen v6)
* spawning Pyramids work independently from BlockMen Pyramids mod (can be removed) but works also besides BlockMen Pyramid mod
* added more various loot (default) in pyramids chests and higher up the chance of spawning more loot
* added new environmental spawners
* added generation of environmental spawners for default mapgen v6 temples and dungeons
* addend new config parameter 'disable' for night_only attribute in config file
* added new attribute 'env' in config file for defining environmental spawners
* added settings.txt file for enable/disable new features (pyramids, mapgen spawners..)
* fixed abm catch_up (disabled), now it works
### 0.5.1 ###
* added mobs redo stone monster spawner (re-done from BlockMen Pyramids)
### 0.5 ###
* new mobs redo sheep textures
* added mobs redo spider spawner
* added oerrki spawner for creatures mod
* added screenshot and description for MODs in-game tab
* added pyramids mod to optional dependencies
### 0.4 ###
* NEW added ore spawners - iron, gold and copper
* ore spawners have chance to spawn 2 ores from 1 ingot
* ore spawners have formspec
* new sounds for ore spawners
* added particle effect for ore spawners
* re-done all textures from scratch (mob and ore spawners)
* adjusted mob spawners ABM
* added maximum stacked items for spawners to max 1
* mob spawners fixed name conflicts in config file warthog vs. pumba
### 0.3 ###
* new folder and file structure
* more convenient disable/enable, add/remove new MODs in config.lua file - added property for custom sounds
* added sound for bunny
* fixed sound for pyramids:mummy
* added footsteps and dug sounds for the spawners
* shorter and more effective code, easier to read, fixed variable namings
* ABM tweak - longer delay to trigger but bigger chance for spawn entity
* disabled ABM catch_up
* added normal map texture for default spawner
### 0.2 ###
* support pyramids mod - mummy
* support creatures mod
* shorten the code - more effecient
### 0.1 ###
* Initial Release
* detects only 6 nodes for 'air' around the spawner [top, bottom, left, right, front, back] afterwards it will check the node above and below the found 'air' node - so there is enough space to spawn someone
* always picks random side from where the mob will spawn
* detects for light and time of day - spawn mobs only at night if 'only_night' set to true
* status 'waiting' - blue sparkles, for not enough light (day spawners) or too much light for night spawners
* status 'default/inactive' i.e. if the spawner is closed from each side or there is no space to spawn mob
* status 'active' when spawner is active and is spawning mobs
* status 'overheat' when there is too much 'max_objects_per_block' (prevents from server errors), max value is taken from minetest.conf
* easy to configure, add and remove MODs for mobs
* only [Mobs Redo](https://github.com/tenplus1/mobs) from tenplus1 is added for now
* added recipes for all spawners, it's expensive so it will not get overcrowded on the server only with spawners
* almost everything is done dynamically
* spawners emit small amount of light
* active and overheated spawner can cause fire to flammable nodes around it
* spawners are active only if player is in radius (21)
* spawners are diggable only with steel pickaxe and above, so no noob griefers can raid your base too easy
* mobs play sound when spawned
* animated textures

403
patches/deprecated-subgame-basis/mods/spawners-0.4.15 or lower/spawners_mobs.lua

@ -0,0 +1,403 @@
local max_obj_per_mapblock = tonumber(minetest.setting_get("max_objects_per_block"))
--
-- * CREATE ALL SPAWNERS NODES *
--
function spawners.create(mob_name, mod_prefix, size, offset, mesh, texture, night_only, sound_custom, env)
--
-- DUMMY INSIDE THE SPAWNER
--
local dummy_definition = {
hp_max = 1,
physical = true,
collisionbox = {0,0,0,0,0,0},
visual = "mesh",
visual_size = size,
mesh = mesh,
textures = texture,
makes_footstep_sound = false,
timer = 0,
automatic_rotate = math.pi * -3,
m_name = "dummy"
}
dummy_definition.on_activate = function(self)
self.object:setvelocity({x=0, y=0, z=0})
self.object:setacceleration({x=0, y=0, z=0})
self.object:set_armor_groups({immortal=1})
end
-- remove dummy after dug up the spawner
dummy_definition.on_step = function(self, dtime)
self.timer = self.timer + dtime
local n = minetest.get_node_or_nil(self.object:getpos())
if self.timer > 2 then
if n and n.name and n.name ~= "spawners:"..mod_prefix.."_"..mob_name.."_spawner_active" and n.name ~= "spawners:"..mod_prefix.."_"..mob_name.."_spawner_active_env" then
self.object:remove()
end
end
end
minetest.register_entity("spawners:dummy_"..mod_prefix.."_"..mob_name, dummy_definition)
--
-- * CRAFTING SPAWNERS *
--
if not env then
-- print("[Mod][Spawners] Registering Crafting Spawner.")
--
-- ACTIVE SPAWNER
--
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_active", {
description = mod_prefix.."_"..mob_name.." spawner active",
paramtype = "light",
light_source = 4,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
damage_per_second = 4,
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,igniter=1,not_in_creative_inventory=1},
drop = "spawners:"..mod_prefix.."_"..mob_name.."_spawner",
on_construct = function(pos)
pos.y = pos.y + offset
minetest.add_entity(pos,"spawners:dummy_"..mod_prefix.."_"..mob_name)
end,
})
--
-- WAITING SPAWNER
--
-- waiting for light - everything is ok but too much light or not enough light
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting", {
description = mod_prefix.."_"..mob_name.." spawner waiting",
paramtype = "light",
light_source = 2,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_waiting_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,not_in_creative_inventory=1},
drop = "spawners:"..mod_prefix.."_"..mob_name.."_spawner",
})
--
-- INACTIVE SPAWNER (DEFAULT)
--
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner", {
description = mod_prefix.."_"..mob_name.." spawner",
paramtype = "light",
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {"spawners_spawner.png"},
is_ground_content = true,
groups = {cracky=1,level=2},
stack_max = 1,
on_construct = function(pos)
local random_pos, waiting = spawners.check_node_status(pos, mob_name, night_only)
if random_pos then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_active"})
elseif waiting then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting"})
else
end
end,
})
--
-- OVERHEATED SPAWNER
--
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_overheat", {
description = mod_prefix.."_"..mob_name.." spawner overheated",
paramtype = "light",
light_source = 2,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
damage_per_second = 4,
sunlight_propagates = true,
tiles = {"spawners_spawner.png^[colorize:#FF000030"},
is_ground_content = true,
groups = {cracky=1,level=2,igniter=1,not_in_creative_inventory=1},
drop = "spawners:"..mod_prefix.."_"..mob_name.."_spawner",
on_construct = function(pos)
minetest.get_node_timer(pos):start(60)
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner"})
end,
})
else
--
-- * ENVIRONMENTAL SPAWNERS *
--
-- minetest.log("action", "[Mod][Spawners] Registering Environmental Spawner.")
--
-- ACTIVE SPAWNER ENV
--
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_active_env", {
description = mod_prefix.."_"..mob_name.." spawner active env",
paramtype = "light",
light_source = 4,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
damage_per_second = 4,
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,igniter=1,not_in_creative_inventory=1},
drop = {
max_items = 1,
items = {
{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
}
},
on_construct = function(pos)
pos.y = pos.y + offset
minetest.add_entity(pos,"spawners:dummy_"..mod_prefix.."_"..mob_name)
end,
})
--
-- WAITING SPAWNER ENV
--
-- waiting for light - everything is ok but too much light or not enough light
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting_env", {
description = mod_prefix.."_"..mob_name.." spawner waiting env",
paramtype = "light",
light_source = 2,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_waiting_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,not_in_creative_inventory=1},
drop = {
max_items = 1,
items = {
{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
}
},
})
--
-- INACTIVE SPAWNER (DEFAULT) ENV
--
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_env", {
description = mod_prefix.."_"..mob_name.." spawner env",
paramtype = "light",
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {"spawners_spawner.png"},
is_ground_content = true,
groups = {cracky=1,level=2,not_in_creative_inventory=1},
stack_max = 1,
drop = {
max_items = 1,
items = {
{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
}
},
on_construct = function(pos)
local random_pos, waiting = spawners.check_node_status(pos, mob_name, night_only)
if random_pos then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_active_env"})
elseif waiting then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting_env"})
else
end
end,
})
--
-- OVERHEATED SPAWNER ENV
--
minetest.register_node("spawners:"..mod_prefix.."_"..mob_name.."_spawner_overheat_env", {
description = mod_prefix.."_"..mob_name.." spawner overheated env",
paramtype = "light",
light_source = 2,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
damage_per_second = 4,
sunlight_propagates = true,
tiles = {"spawners_spawner.png^[colorize:#FF000030"},
is_ground_content = true,
groups = {cracky=1,level=2,igniter=1,not_in_creative_inventory=1},
drop = {
max_items = 1,
items = {
{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
}
},
on_construct = function(pos)
minetest.get_node_timer(pos):start(60)
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_env"})
end,
})
end
--
-- * ABM *
--
minetest.register_abm({
nodenames = {
"spawners:"..mod_prefix.."_"..mob_name.."_spawner",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_active",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_overheat",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_env",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_active_env",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_overheat_env",
"spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting_env"
},
neighbors = {"air"},
interval = 10.0,
chance = 6,
catch_up = false,
action = function(pos, node, active_object_count, active_object_count_wider)
local random_pos, waiting = spawners.check_node_status(pos, mob_name, night_only)
-- additional name extention for environmental spawners
local ext
local env_ext = string.sub(node.name, string.len(node.name) - 3)
if env_ext and env_ext == "_env" then
ext = "_env"
else
ext = ""
end
-- minetest.log("action", "[Mod][Spawners] checking for: "..mob_name.." at "..minetest.pos_to_string(pos))
if random_pos then
-- do not spawn if too many active entities in map block and call cooldown
if active_object_count_wider > max_obj_per_mapblock then
-- make sure the right node status is shown
if node.name ~= "spawners:"..mob_name.."_spawner_overheat"..ext then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_overheat"..ext})
end
-- extend the timeout if still too many entities in map block
if node.name == "spawners:"..mod_prefix.."_"..mob_name.."_spawner_overheat"..ext then
minetest.get_node_timer(pos):stop()
minetest.get_node_timer(pos):start(60)
end
return
end
-- make sure the right node status is shown
if node.name ~= "spawners:"..mod_prefix.."_"..mob_name.."_spawner_active"..ext then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_active"..ext})
end
-- enough place to spawn more mobs
spawners.start_spawning(random_pos, 1, "spawners:"..mob_name, mod_prefix, sound_custom)
elseif waiting then
-- waiting status
if node.name ~= "spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting"..ext then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner_waiting"..ext})
end
else
-- no random_pos found
if minetest.get_node_timer(pos):is_started() then
minetest.get_node_timer(pos):stop()
end
if node.name ~= "spawners:"..mod_prefix.."_"..mob_name.."_spawner"..ext then
minetest.set_node(pos, {name="spawners:"..mod_prefix.."_"..mob_name.."_spawner"..ext})
end
end
end
})
end
--
-- CALL 'CREATE' FOR ALL SPAWNERS
--
for i, mob_table in ipairs(spawners.mob_tables) do
if mob_table then
spawners.create(mob_table.name, mob_table.mod_prefix, mob_table.dummy_size, mob_table.dummy_offset, mob_table.dummy_mesh, mob_table.dummy_texture, mob_table.night_only, mob_table.sound_custom, mob_table.env)
end
end

335
patches/deprecated-subgame-basis/mods/spawners-0.4.15 or lower/spawners_ores.lua

@ -0,0 +1,335 @@
-- Formspecs
local ore_formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"label[2,1.7;Input Ingot]"..
"list[current_name;fuel;3.5,1.5;1,1;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"button_exit[5,1.5;2,1;exit;Save]"..
"listring[current_name;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
function spawners.get_formspec(pos)
-- Inizialize metadata
local meta = minetest.get_meta(pos)
-- Inizialize inventory
local inv = meta:get_inventory()
for listname, size in pairs({
fuel = 1,
}) do
if inv:get_size(listname) ~= size then
inv:set_size(listname, size)
end
end
-- Update formspec, infotext and node
meta:set_string("formspec", ore_formspec)
end
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
minetest.record_protection_violation(pos, player:get_player_name())
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local ingot = minetest.get_node_or_nil(pos).name
ingot = string.split(ingot, ":")
ingot = string.split(ingot[2], "_")
if ingot[3] == "iron" then
ingot[3] = "steel"
end
if stack:get_name() == "default:"..ingot[3].."_ingot" then
return stack:get_count()
else
return 0
end
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
minetest.record_protection_violation(pos, player:get_player_name())
return 0
end
return stack:get_count()
end
local function on_receive_fields(pos, formname, fields, sender)
local ore_node = minetest.get_node_or_nil(pos)
if minetest.is_protected(pos, sender:get_player_name()) then
minetest.record_protection_violation(pos, sender:get_player_name())
return
end
-- get the ore name
local ingot = ore_node.name
ingot = string.split(ingot, ":")
ingot = string.split(ingot[2], "_")
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local fuellist = inv:get_list("fuel")
if inv:is_empty("fuel") then
if ore_node.name ~= "spawners:stone_with_"..ingot[3].."_spawner" then
minetest.swap_node(pos, {name="spawners:stone_with_"..ingot[3].."_spawner"})
end
meta:set_string("infotext", ingot[3].." ore spawner is empty")
else
meta:set_string("infotext", ingot[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
end
-- fix iron vs. steel issue
if ingot[3] == "iron" then
ingot[3] = "steel"
end
if not fuellist[1]:is_empty() and inv:get_stack("fuel", 1):get_name() == "default:"..ingot[3].."_ingot" then
-- fix iron vs. steel issue
if ingot[3] == "steel" then
ingot[3] = "iron"
end
local waiting, found_node = spawners.check_node_status_ores(pos, "stone_with_"..ingot[3], "default:stone")
if found_node then
minetest.swap_node(pos, {name="spawners:stone_with_"..ingot[3].."_spawner_active"})
elseif waiting then
minetest.swap_node(pos, {name="spawners:stone_with_"..ingot[3].."_spawner_waiting"})
meta:set_string("infotext", "Waiting status - player was away or no stone around, "..ingot[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
else
return
end
end
end
-- Ores creation
function spawners.create_ore(ore_name, mod_prefix, size, offset, texture, sound_custom)
-- dummy inside the spawner
local dummy_ore_definition = {
hp_max = 1,
physical = false,
collisionbox = {0,0,0,0,0,0},
visual = "wielditem",
visual_size = size,
timer = 0,
textures={"default:"..ore_name},
makes_footstep_sound = false,
automatic_rotate = math.pi * -3,
m_name = "dummy_ore"
}
local ore = string.split(ore_name, "_")
dummy_ore_definition.on_activate = function(self)
self.object:setvelocity({x=0, y=0, z=0})
self.object:setacceleration({x=0, y=0, z=0})
self.object:set_armor_groups({immortal=1})
end
-- remove dummy after dug up the spawner
dummy_ore_definition.on_step = function(self, dtime)
self.timer = self.timer + dtime
local n = minetest.get_node_or_nil(self.object:getpos())
if self.timer > 2 then
if n and n.name and n.name ~= "spawners:"..ore_name.."_spawner_active" and n.name ~= "spawners:"..ore_name.."_spawner_waiting" and n.name ~= "spawners:"..ore_name.."_spawner" then
self.object:remove()
end
end
end
minetest.register_entity("spawners:dummy_ore_"..ore_name, dummy_ore_definition)
-- node spawner active
minetest.register_node("spawners:"..ore_name.."_spawner_active", {
description = ore_name.." spawner active",
paramtype = "light",
light_source = 4,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
damage_per_second = 4,
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,igniter=1,not_in_creative_inventory=1},
drop = "spawners:"..ore_name.."_spawner",
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = on_receive_fields,
})
-- node spawner waiting - no stone around or no fuel
minetest.register_node("spawners:"..ore_name.."_spawner_waiting", {
description = ore_name.." spawner waiting",
paramtype = "light",
light_source = 2,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_waiting_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,not_in_creative_inventory=1},
drop = "spawners:"..ore_name.."_spawner",
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = on_receive_fields,
})
-- node spawner inactive (default)
minetest.register_node("spawners:"..ore_name.."_spawner", {
description = ore_name.." spawner",
paramtype = "light",
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {"spawners_spawner.png"},
is_ground_content = true,
groups = {cracky=1,level=2},
stack_max = 1,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
spawners.get_formspec(pos)
pos.y = pos.y + offset
minetest.add_entity(pos,"spawners:dummy_ore_"..ore_name)
meta:set_string("infotext", ore[3].." ore spawner is empty")
end,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = on_receive_fields,
})
-- ABM
minetest.register_abm({
nodenames = {"spawners:"..ore_name.."_spawner_active", "spawners:"..ore_name.."_spawner_waiting"},
interval = 5.0,
chance = 5,
action = function(pos, node, active_object_count, active_object_count_wider)
local waiting, found_node = spawners.check_node_status_ores(pos, ore_name, "default:stone")
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if found_node then
-- make sure the right node status is shown
if node.name ~= "spawners:"..ore_name.."_spawner_active" then
minetest.swap_node(pos, {name="spawners:"..ore_name.."_spawner_active"})
end
-- take fuel
local stack = inv:get_stack("fuel", 1)
stack:take_item()
inv:set_stack("fuel", 1, stack)
meta:set_string("infotext", ore[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
-- enough place to spawn more ores
spawners.start_spawning_ores(found_node, "default:"..ore_name, sound_custom)
-- empty / no fuel
if inv:is_empty("fuel") then
minetest.swap_node(pos, {name="spawners:"..ore_name.."_spawner"})
meta:set_string("infotext", ore[3].." ore spawner is empty.")
end
else
-- waiting status
if node.name ~= "spawners:"..ore_name.."_spawner_waiting" then
minetest.swap_node(pos, {name="spawners:"..ore_name.."_spawner_waiting"})
meta:set_string("infotext", "Waiting status - player was away or no stone around, "..ore[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
end
end
end
})
end
-- default:stone_with_gold
spawners.create_ore("stone_with_gold", "", {x=.33,y=.33}, 0, {"default_stone.png^default_mineral_gold.png"}, "strike")
-- default:stone_with_iron
spawners.create_ore("stone_with_iron", "", {x=.33,y=.33}, 0, {"default_stone.png^default_mineral_gold.png"}, "strike")
-- default:stone_with_copper
spawners.create_ore("stone_with_copper", "", {x=.33,y=.33}, 0, {"default_stone.png^default_mineral_gold.png"}, "strike")
-- recipes
minetest.register_craft({
output = "spawners:stone_with_gold_spawner",
recipe = {
{"default:diamondblock", "fire:flint_and_steel", "default:diamondblock"},
{"xpanes:bar_flat", "default:goldblock", "xpanes:bar_flat"},
{"default:diamondblock", "xpanes:bar_flat", "default:diamondblock"},
}
})
minetest.register_craft({
output = "spawners:stone_with_iron_spawner",
recipe = {
{"default:diamondblock", "fire:flint_and_steel", "default:diamondblock"},
{"xpanes:bar_flat", "default:steelblock", "xpanes:bar_flat"},
{"default:diamondblock", "xpanes:bar_flat", "default:diamondblock"},
}
})
minetest.register_craft({
output = "spawners:stone_with_copper_spawner",
recipe = {
{"default:diamondblock", "fire:flint_and_steel", "default:diamondblock"},
{"xpanes:bar_flat", "default:copperblock", "xpanes:bar_flat"},
{"default:diamondblock", "xpanes:bar_flat", "default:diamondblock"},
}
})

0
patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua → patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/crafts.lua

0
patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua → patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/gastronomy.lua

0
patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png → patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug.png

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
patches/subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png → patches/deprecated-subgame/mods/homedecor_modpack-0.4.15 or lower/homedecor/textures/homedecor_beer_mug_inv.png

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

12
patches/subgame/mods/spawners/spawners_mobs.lua → patches/deprecated-subgame/mods/spawners-0.4.15 or lower/spawners_mobs.lua

@ -203,7 +203,8 @@ function spawners.create(mob_name, mod_prefix, size, offset, mesh, texture, nigh
max_items = 1, max_items = 1,
items = { items = {
--{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20} --{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
{items = {"default:diamond", "default:iron"}, rarity = 20} {items = {"default:iron_lump", "default:diamond", "default:diamond"}, rarity = 7},
{items = {"default:iron_lump", "default:diamond"}, rarity = 2},
{items = { "default:diamond"}, rarity = 1} {items = { "default:diamond"}, rarity = 1}
} }
}, },
@ -243,7 +244,8 @@ function spawners.create(mob_name, mod_prefix, size, offset, mesh, texture, nigh
max_items = 1, max_items = 1,
items = { items = {
--{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20} --{items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
{items = {"default:diamond", "default:iron"}, rarity = 20} {items = {"default:iron_lump", "default:diamond", "default:diamond"}, rarity = 7},
{items = {"default:iron_lump", "default:diamond"}, rarity = 2},
{items = { "default:diamond"}, rarity = 1} {items = { "default:diamond"}, rarity = 1}
} }
}, },
@ -268,7 +270,8 @@ function spawners.create(mob_name, mod_prefix, size, offset, mesh, texture, nigh
max_items = 1, max_items = 1,
items = { items = {
-- {items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20} -- {items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
{items = {"default:diamond", "default:iron"}, rarity = 20} {items = {"default:iron_lump", "default:diamond", "default:diamond"}, rarity = 7},
{items = {"default:iron_lump", "default:diamond"}, rarity = 2},
{items = { "default:diamond"}, rarity = 1} {items = { "default:diamond"}, rarity = 1}
} }
}, },
@ -304,7 +307,8 @@ function spawners.create(mob_name, mod_prefix, size, offset, mesh, texture, nigh
max_items = 1, max_items = 1,
items = { items = {
-- {items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20} -- {items = {"spawners:"..mod_prefix.."_"..mob_name.."_spawner"}, rarity = 20}
{items = {"default:diamond", "default:iron"}, rarity = 20} {items = {"default:iron_lump", "default:diamond", "default:diamond"}, rarity = 7},
{items = {"default:iron_lump", "default:diamond"}, rarity = 2},
{items = { "default:diamond"}, rarity = 1} {items = { "default:diamond"}, rarity = 1}
} }
}, },

335
patches/deprecated-subgame/mods/spawners-0.4.15 or lower/spawners_ores.lua

@ -0,0 +1,335 @@
-- Formspecs
local ore_formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"label[2,1.7;Input Ingot]"..
"list[current_name;fuel;3.5,1.5;1,1;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"button_exit[5,1.5;2,1;exit;Save]"..
"listring[current_name;fuel]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
function spawners.get_formspec(pos)
-- Inizialize metadata
local meta = minetest.get_meta(pos)
-- Inizialize inventory
local inv = meta:get_inventory()
for listname, size in pairs({
fuel = 1,
}) do
if inv:get_size(listname) ~= size then
inv:set_size(listname, size)
end
end
-- Update formspec, infotext and node
meta:set_string("formspec", ore_formspec)
end
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
minetest.record_protection_violation(pos, player:get_player_name())
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local ingot = minetest.get_node_or_nil(pos).name
ingot = string.split(ingot, ":")
ingot = string.split(ingot[2], "_")
if ingot[3] == "iron" then
ingot[3] = "steel"
end
if stack:get_name() == "default:"..ingot[3].."_ingot" then
return stack:get_count()
else
return 0
end
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
minetest.record_protection_violation(pos, player:get_player_name())
return 0
end
return stack:get_count()
end
local function on_receive_fields(pos, formname, fields, sender)
local ore_node = minetest.get_node_or_nil(pos)
if minetest.is_protected(pos, sender:get_player_name()) then
minetest.record_protection_violation(pos, sender:get_player_name())
return
end
-- get the ore name
local ingot = ore_node.name
ingot = string.split(ingot, ":")
ingot = string.split(ingot[2], "_")
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local fuellist = inv:get_list("fuel")
if inv:is_empty("fuel") then
if ore_node.name ~= "spawners:stone_with_"..ingot[3].."_spawner" then
minetest.swap_node(pos, {name="spawners:stone_with_"..ingot[3].."_spawner"})
end
meta:set_string("infotext", ingot[3].." ore spawner is empty")
else
meta:set_string("infotext", ingot[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
end
-- fix iron vs. steel issue
if ingot[3] == "iron" then
ingot[3] = "steel"
end
if not fuellist[1]:is_empty() and inv:get_stack("fuel", 1):get_name() == "default:"..ingot[3].."_ingot" then
-- fix iron vs. steel issue
if ingot[3] == "steel" then
ingot[3] = "iron"
end
local waiting, found_node = spawners.check_node_status_ores(pos, "stone_with_"..ingot[3], "default:stone")
if found_node then
minetest.swap_node(pos, {name="spawners:stone_with_"..ingot[3].."_spawner_active"})
elseif waiting then
minetest.swap_node(pos, {name="spawners:stone_with_"..ingot[3].."_spawner_waiting"})
meta:set_string("infotext", "Waiting status - player was away or no stone around, "..ingot[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
else
return
end
end
end
-- Ores creation
function spawners.create_ore(ore_name, mod_prefix, size, offset, texture, sound_custom)
-- dummy inside the spawner
local dummy_ore_definition = {
hp_max = 1,
physical = false,
collisionbox = {0,0,0,0,0,0},
visual = "wielditem",
visual_size = size,
timer = 0,
textures={"default:"..ore_name},
makes_footstep_sound = false,
automatic_rotate = math.pi * -3,
m_name = "dummy_ore"
}
local ore = string.split(ore_name, "_")
dummy_ore_definition.on_activate = function(self)
self.object:setvelocity({x=0, y=0, z=0})
self.object:setacceleration({x=0, y=0, z=0})
self.object:set_armor_groups({immortal=1})
end
-- remove dummy after dug up the spawner
dummy_ore_definition.on_step = function(self, dtime)
self.timer = self.timer + dtime
local n = minetest.get_node_or_nil(self.object:getpos())
if self.timer > 2 then
if n and n.name and n.name ~= "spawners:"..ore_name.."_spawner_active" and n.name ~= "spawners:"..ore_name.."_spawner_waiting" and n.name ~= "spawners:"..ore_name.."_spawner" then
self.object:remove()
end
end
end
minetest.register_entity("spawners:dummy_ore_"..ore_name, dummy_ore_definition)
-- node spawner active
minetest.register_node("spawners:"..ore_name.."_spawner_active", {
description = ore_name.." spawner active",
paramtype = "light",
light_source = 4,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
damage_per_second = 4,
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,igniter=1,not_in_creative_inventory=1},
drop = "spawners:"..ore_name.."_spawner",
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = on_receive_fields,
})
-- node spawner waiting - no stone around or no fuel
minetest.register_node("spawners:"..ore_name.."_spawner_waiting", {
description = ore_name.." spawner waiting",
paramtype = "light",
light_source = 2,
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {
{
name = "spawners_spawner_waiting_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 32,
aspect_h = 32,
length = 2.0
},
}
},
is_ground_content = true,
groups = {cracky=1,level=2,not_in_creative_inventory=1},
drop = "spawners:"..ore_name.."_spawner",
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = on_receive_fields,
})
-- node spawner inactive (default)
minetest.register_node("spawners:"..ore_name.."_spawner", {
description = ore_name.." spawner",
paramtype = "light",
drawtype = "allfaces",
walkable = true,
sounds = default.node_sound_stone_defaults(),
sunlight_propagates = true,
tiles = {"spawners_spawner.png"},
is_ground_content = true,
groups = {cracky=1,level=2},
stack_max = 1,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
spawners.get_formspec(pos)
pos.y = pos.y + offset
minetest.add_entity(pos,"spawners:dummy_ore_"..ore_name)
meta:set_string("infotext", ore[3].." ore spawner is empty")
end,
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_take = allow_metadata_inventory_take,
on_receive_fields = on_receive_fields,
})
-- ABM
minetest.register_abm({
nodenames = {"spawners:"..ore_name.."_spawner_active", "spawners:"..ore_name.."_spawner_waiting"},
interval = 5.0,
chance = 5,
action = function(pos, node, active_object_count, active_object_count_wider)
local waiting, found_node = spawners.check_node_status_ores(pos, ore_name, "default:stone")
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if found_node then
-- make sure the right node status is shown
if node.name ~= "spawners:"..ore_name.."_spawner_active" then
minetest.swap_node(pos, {name="spawners:"..ore_name.."_spawner_active"})
end
-- take fuel
local stack = inv:get_stack("fuel", 1)
stack:take_item()
inv:set_stack("fuel", 1, stack)
meta:set_string("infotext", ore[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
-- enough place to spawn more ores
spawners.start_spawning_ores(found_node, "default:"..ore_name, sound_custom)
-- empty / no fuel
if inv:is_empty("fuel") then
minetest.swap_node(pos, {name="spawners:"..ore_name.."_spawner"})
meta:set_string("infotext", ore[3].." ore spawner is empty.")
end
else
-- waiting status
if node.name ~= "spawners:"..ore_name.."_spawner_waiting" then
minetest.swap_node(pos, {name="spawners:"..ore_name.."_spawner_waiting"})
meta:set_string("infotext", "Waiting status - player was away or no stone around, "..ore[3].." ore spawner fuel: "..inv:get_stack("fuel", 1):get_count())
end
end
end
})
end
-- default:stone_with_gold
-- spawners.create_ore("stone_with_gold", "", {x=.33,y=.33}, 0, {"default_stone.png^default_mineral_gold.png"}, "strike")
-- default:stone_with_iron
-- spawners.create_ore("stone_with_iron", "", {x=.33,y=.33}, 0, {"default_stone.png^default_mineral_gold.png"}, "strike")
-- default:stone_with_copper
-- spawners.create_ore("stone_with_copper", "", {x=.33,y=.33}, 0, {"default_stone.png^default_mineral_gold.png"}, "strike")
-- recipes
-- minetest.register_craft({
-- output = "spawners:stone_with_gold_spawner",
-- recipe = {
-- {"default:diamondblock", "fire:flint_and_steel", "default:diamondblock"},
-- {"xpanes:bar_flat", "default:goldblock", "xpanes:bar_flat"},
-- {"default:diamondblock", "xpanes:bar_flat", "default:diamondblock"},
-- }
-- })
-- minetest.register_craft({
-- output = "spawners:stone_with_iron_spawner",
-- recipe = {
-- {"default:diamondblock", "fire:flint_and_steel", "default:diamondblock"},
-- {"xpanes:bar_flat", "default:steelblock", "xpanes:bar_flat"},
-- {"default:diamondblock", "xpanes:bar_flat", "default:diamondblock"},
-- }
-- })
-- minetest.register_craft({
-- output = "spawners:stone_with_copper_spawner",
-- recipe = {
-- {"default:diamondblock", "fire:flint_and_steel", "default:diamondblock"},
-- {"xpanes:bar_flat", "default:copperblock", "xpanes:bar_flat"},
-- {"default:diamondblock", "xpanes:bar_flat", "default:diamondblock"},
-- }
-- })
Loading…
Cancel
Save