1
0
mirror of https://github.com/Dragonop/claycrafter.git synced 2025-06-29 12:00:23 +02:00

42 Commits

Author SHA1 Message Date
211c3f4b68 Delete description.txt 2020-11-13 01:37:23 -03:00
26d8e9dd24 Delete depends.txt 2020-11-13 01:37:13 -03:00
b49f0ad425 Update mod.conf 2020-11-13 01:36:55 -03:00
204a25d060 Merge pull request #12 from Dragonop/Dragonop-#9
Fix bug where claycrafter won't turn off. Fixes issue #9
2020-11-13 01:32:24 -03:00
4a8a178800 Fix bug where claycrafter won't turn off
Fixed a bug where the Claycrafter would remain in its active state even if the output inv was full. This didn't waste or create any resources (only light and kept the block animated), it was purely cosmetic. Fixes issue #9, I guess.
2020-11-13 01:30:44 -03:00
fea2299053 Update description.txt 2020-11-13 01:15:53 -03:00
0502b438a8 Updated screenshot.png
Updated to better depict the current state of the claycrafter mod.
2020-11-13 01:07:33 -03:00
64aae49bbd Glass of water now placeable - nerfed convert time
Glass of Water is now a placeable node. Can now be used to empty it out, returning an Empty Drinking Glass.
Don't recomend changing the item_eat value to any other than 0, if you don't want free food.
2020-11-13 00:53:54 -03:00
fc192685b0 Added glass_of_water_inv
Added inventory image for glass of water (since it's now placeable)
2020-11-13 00:25:17 -03:00
2b2a893960 Updated glass of water texture
Updated glass of water texture to fit the new drinking glass from the vessels mod
2020-11-12 23:55:15 -03:00
75b30587e0 Updated infotext
Changed itemstate "In use" to "Yes"
2020-11-12 23:47:03 -03:00
1626a812fa Add reversible craft for compressed dirt
1 compressed dirt can now be used to get back 9 dirt
2020-11-12 22:36:56 -03:00
c8c4e41cae Move glass of water def to items.lua 2016-02-06 17:51:51 -05:00
ea612c59d5 Add files for recipes and items 2016-02-06 17:44:27 -05:00
21e22e4451 Empty init.lua of node and craft defs. 2016-02-06 17:43:54 -05:00
7f35425823 mod.conf 2016-01-24 12:50:12 -03:00
d241c8d869 More groups for compressed dirt 2016-01-24 07:08:39 -03:00
2c68b350be Vessels inv
Vessels inv now works, more room in dst.
2016-01-23 13:37:15 -03:00
ff87677ae5 return 0 for vessels inv 2016-01-22 05:01:47 -03:00
a51b17ca63 Merge pull request #10 from everamzah/master
Vessel inv
2016-01-22 04:44:05 -03:00
399ef94bdd Vessel inv 2016-01-22 02:03:01 -05:00
c63c448da4 infotext 2016-01-22 02:54:34 -03:00
928fbb389e Credits 2016-01-20 07:52:31 -03:00
cdd5f49528 Fixes issue #5 (this time for real)
(this time it actually fixes it hah)
2016-01-20 07:29:13 -03:00
7a8d7ea8c6 Vessel group
Added vessel group to glass of water.
2016-01-19 16:10:59 -03:00
8d7c5f68e5 Fixes issue #5 2016-01-19 12:30:24 -03:00
d8c9f54d2f Merge pull request #6 from everamzah/master
Don't continue to add and subtract if dst is full
2016-01-19 11:57:01 -03:00
f89373d836 Don't continue to add and subtract if dst is full 2016-01-19 08:32:03 -05:00
917fded0aa screenshot.png
Updated screenshot.png
2016-01-19 07:31:14 -03:00
2235a03900 Deleted comments in init.lua
Deleted comments in init.lua and changed h2o = 4 to h2o = 1
2016-01-19 06:42:41 -03:00
d39cb0e4e6 Recipe for claycrafter
Recipe for claycrafter and minor corrections
2016-01-18 02:43:07 -03:00
680ecf0fb1 Credits 2016-01-18 02:30:38 -03:00
30088cd750 Merge pull request #4 from everamzah/master
Claycrafter is now functional
2016-01-18 02:26:37 -03:00
2b0938cd7d Up to spec.
As per my interpretation
4 clay per 1 glass of water
2016-01-17 16:10:18 -05:00
67f2bd8978 Use awesome new textures 2016-01-17 15:38:27 -05:00
ccaaf14107 Minor adjustments and notes 2016-01-17 15:30:50 -05:00
240c0fd283 Merge branch 'master' of https://github.com/dragonop/claycrafter 2016-01-17 15:24:48 -05:00
87b49c2ca6 Textures
Textures for the claycrafter formspec, and renamed down/up to bottom/top
2016-01-17 13:51:27 -03:00
11b759a464 Start furnace conversion 2016-01-17 07:23:02 -05:00
ac7374a703 claycrafter 2016-01-16 16:23:53 -03:00
08749c8b7b Textures for claycrafter node
Placeholder textures
2016-01-16 16:22:27 -03:00
199c0c2ee7 Merge pull request #3 from Dragonop/revert-2-Removing-claycrafter-node
Revert "Deleted claycrafter unused node"
2016-01-15 13:18:46 -03:00
22 changed files with 378 additions and 64 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*.swp

View File

@ -2,13 +2,16 @@
Minetest clay crafter mod. Adds a way to craft clay out of compressed dirt.
Dependencies:
-Default
-Vessels
-Bucket
Default
Vessels
Bucket
claycrafter.lua is derivated from furnace.lua (minetest_game) by PilzAdam and Amaz1.
Edited by everamzah to work for this mod.
#####License for Code
Copyright (C) 2010-2013 Dragonop <joaco-mono@hotmail.com>
Copyright (C) 2016 Dragonop <joaco-mono@hotmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by

306
claycrafter.lua Normal file
View File

@ -0,0 +1,306 @@
--
-- Formspecs
--
local function active_formspec(fuel_percent, item_percent)
local formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.75,0.5;1,1;]"..
"list[current_name;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;claycrafter_claycrafter_water_bg.png^[lowpart:"..
(100-fuel_percent)..":claycrafter_claycrafter_water_fg.png]"..
"image[3.75,1.5;1,1;gui_claycrafter_arrow_bg.png^[lowpart:"..
(item_percent)..":gui_claycrafter_arrow_fg.png^[transformR270]"..
"list[current_name;dst;4.75,0.96;3,2;]"..
"list[current_name;vessels;0,1.5;2,2;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"..
"listring[current_name;vessels]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
return formspec
end
local inactive_formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.75,0.5;1,1;]"..
"list[current_name;fuel;2.75,2.5;1,1;]"..
"image[2.75,1.5;1,1;claycrafter_claycrafter_water_bg.png]"..
"image[3.75,1.5;1,1;gui_claycrafter_arrow_bg.png^[transformR270]"..
"list[current_name;dst;4.75,0.96;3,2;]"..
"list[current_name;vessels;0,1.5;2,2;]"..
"list[current_player;main;0,4.25;8,1;]"..
"list[current_player;main;0,5.5;8,3;8]"..
"listring[current_name;dst]"..
"listring[current_player;main]"..
"listring[current_name;src]"..
"listring[current_player;main]"..
"listring[current_name;vessels]"..
"listring[current_player;main]"..
default.get_hotbar_bg(0, 4.25)
--
-- Node callback functions that are the same for active and inactive claycrafter
--
local function can_dig(pos, player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src") and inv:is_empty("vessels")
end
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if listname == "fuel" then -- "Water"
if minetest.get_item_group(stack:get_name(), "h2o") > 0 then
if inv:is_empty("src") then
meta:set_string("infotext", "Claycrafter is empty")
end
return stack:get_count()
else
return 0
end
elseif listname == "src" then
return stack:get_count()
elseif listname == "dst" then
return 0
elseif listname == "vessels" then
return 0
end
end
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local stack = inv:get_stack(from_list, from_index)
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
--
-- Node definitions
--
minetest.register_node("claycrafter:claycrafter", {
description = "Claycrafter",
tiles = {
"claycrafter_claycrafter_top.png", "claycrafter_claycrafter_bottom.png",
"claycrafter_claycrafter_side.png", "claycrafter_claycrafter_side.png",
"claycrafter_claycrafter_back.png", "claycrafter_claycrafter_front.png"
},
paramtype2 = "facedir",
groups = {choppy = 1, oddly_breakable_by_hand = 1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take
})
minetest.register_node("claycrafter:claycrafter_active", {
description = "Claycrafter",
tiles = {
"claycrafter_claycrafter_top.png", "claycrafter_claycrafter_bottom.png",
"claycrafter_claycrafter_side.png", "claycrafter_claycrafter_side.png",
"claycrafter_claycrafter_side.png",
{
image = "claycrafter_claycrafter_front_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
}
}
},
paramtype2 = "facedir",
light_source = 8,
drop = "claycrafter:claycrafter",
groups = {choppy = 1, oddly_breakable_by_hand = 1, not_in_creative_inventory = 1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
can_dig = can_dig,
allow_metadata_inventory_put = allow_metadata_inventory_put,
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take
})
--
-- ABM
--
local function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
minetest.register_abm({
nodenames = {"claycrafter:claycrafter", "claycrafter:claycrafter_active"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
--
-- Inizialize metadata
--
local meta = minetest.get_meta(pos)
local fuel_time = meta:get_float("fuel_time") or 0
local src_time = meta:get_float("src_time") or 0
local fuel_totaltime = meta:get_float("fuel_totaltime") or 0
--
-- Inizialize inventory
--
local inv = meta:get_inventory()
for listname, size in pairs({
src = 1,
fuel = 1,
dst = 6,
vessels = 4
}) do
if inv:get_size(listname) ~= size then
inv:set_size(listname, size)
end
end
local srclist = inv:get_list("src")
local fuellist = inv:get_list("fuel")
local dstlist = inv:get_list("dst")
--
-- Cooking
--
local cooktime = minetest.get_item_group(inv:get_stack("fuel", 1):get_name(), "h2o")
local cookable = true
if inv:get_stack("src", 1):get_name() ~= "claycrafter:compressed_dirt" then
cookable = false
end
-- Check if we have enough fuel to burn
if fuel_time < fuel_totaltime then
-- The claycrafter is currently active and has enough fuel
fuel_time = fuel_time + 1
-- If there is a cookable item then check if it is ready yet
if cookable then
src_time = src_time + 1
if src_time >= cooktime then
-- Place result in dst list if possible
if inv:room_for_item("dst", ItemStack({name = "default:clay", count = 4}))
and inv:room_for_item("vessels", ItemStack({name = "vessels:drinking_glass"}))
then
inv:add_item("dst", {name = "default:clay", count = 4})
inv:remove_item("src", inv:get_stack("src", 1):get_name())
src_time = 0
else
swap_node(pos, "claycrafter:claycrafter")
end
end
end
else
-- Furnace ran out of fuel
if cookable and inv:room_for_item("dst", ItemStack({name = "default:clay", count = 4})) then
-- We need to get new fuel
local fueltime = minetest.get_item_group(inv:get_stack("fuel", 1):get_name(), "h2o")
if fueltime == 0 then
-- No valid fuel in fuel list
fuel_totaltime = 0
fuel_time = 0
src_time = 0
else
-- Take fuel from fuel list
if inv:room_for_item("vessels", ItemStack({name = "vessels:drinking_glass"}))
then
inv:remove_item("fuel", inv:get_stack("fuel", 1):get_name())
inv:add_item("vessels", {name = "vessels:drinking_glass"})
else
swap_node(pos, "claycrafter:claycrafter_active")
end
fuel_totaltime = fueltime
fuel_time = 0
end
else
-- We don't need to get new fuel since there is no cookable item
fuel_totaltime = 0
fuel_time = 0
src_time = 0
end
end
--
-- Update formspec, infotext and node
--
local formspec = inactive_formspec
local item_state = ""
local item_percent = 0
if cookable then
item_percent = math.floor(src_time / cooktime * 100)
item_state = "Yes"
else
if srclist[1]:is_empty() then
item_state = "Empty"
else
item_state = "No water"
end
end
local fuel_state = "Empty"
local active = "inactive "
if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then
active = "active "
local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100)
fuel_state = "In use"
formspec = active_formspec(fuel_percent, item_percent)
swap_node(pos, "claycrafter:claycrafter_active")
else
if not fuellist[1]:is_empty() then
fuel_state = "Yes"
end
swap_node(pos, "claycrafter:claycrafter")
end
local infotext = "Claycrafter " .. active .. "(Dirt: " .. item_state .. "; Water: " .. fuel_state .. ")"
--
-- Set meta values
--
meta:set_float("fuel_totaltime", fuel_totaltime)
meta:set_float("fuel_time", fuel_time)
meta:set_float("src_time", src_time)
meta:set_string("formspec", formspec)
meta:set_string("infotext", infotext)
end
})

View File

@ -1,3 +0,0 @@
vessels
default
bucket

View File

@ -1 +0,0 @@
Craft clay out of compressed dirt.

View File

@ -1,58 +1,7 @@
--the claycrafter is supposed to be some sort of furnace
--that uses compressed dirt and glasses of water to make clay, it's not needed to use the mod currently.
local modpath = minetest.get_modpath("claycrafter")
minetest.register_node("claycrafter:claycrafter", {
description = "Clay crafter",
tiles = {
"claycrafter_claycrafter_up.png",
"claycrafter_claycrafter_down.png",
"claycrafter_claycrafter_side.png",
"claycrafter_claycrafter_side.png",
"claycrafter_claycrafter_back.png",
"claycrafter_claycrafter_front.png",
},
groups = {oddly_breakable_by_hand = 1, choppy = 1}
})
-- TODO: Investigate function to automatically get mod name.
--Compressed dirt
minetest.register_node("claycrafter:compressed_dirt", {
description = "Compressed Dirt",
tiles = {"claycrafter_compressed_dirt.png"},
groups = {crumbly = 1, oddly_breakable_by_hand = 1}
})
minetest.register_craft({
output = "claycrafter:compressed_dirt",
recipe = {
{"default:dirt", "default:dirt", "default:dirt"},
{"default:dirt", "default:dirt", "default:dirt"},
{"default:dirt", "default:dirt", "default:dirt"},
}
})
--Glass of water
minetest.register_craftitem("claycrafter:glass_of_water", {
description = "Glass of Water",
inventory_image = "claycrafter_glass_of_water.png"
})
minetest.register_craft({
output = "claycrafter:glass_of_water 8",
recipe = {
{"vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass"},
{"vessels:drinking_glass", "bucket:bucket_water", "vessels:drinking_glass"},
{"vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass"}
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"},
}
})
--Craft the clay
minetest.register_craft({
type = "shapeless",
output = "default:clay 4",
recipe = {"claycrafter:compressed_dirt", "claycrafter:glass_of_water"},
replacements = {
{"claycrafter:glass_of_water", "vessels:drinking_glass"},
}
})
dofile(modpath .. "/items.lua")
dofile(modpath .. "/recipes.lua")
dofile(modpath .. "/claycrafter.lua")

21
items.lua Normal file
View File

@ -0,0 +1,21 @@
minetest.register_node("claycrafter:compressed_dirt", {
description = "Compressed Dirt",
tiles = {"claycrafter_compressed_dirt.png"},
groups = {crumbly = 1, oddly_breakable_by_hand = 1, soil = 1, cracky =1}
})
minetest.register_node("claycrafter:glass_of_water", {
description = ("Glass of Water"),
drawtype = "plantlike",
tiles = {"claycrafter_glass_of_water.png"},
inventory_image = "claycrafter_glass_of_water_inv.png",
wield_image = "claycrafter_glass_of_water.png",
paramtype = "light",
is_ground_content = false,
walkable = false,
sunlight_propagates = true,
selection_box = {type = "fixed",fixed = {-0.25, -0.5, -0.25, 0.25, 0, 0.25} },
groups = {vessel = 1, dig_immediate = 3, attached_node = 1, h2o = 3}, -- How much time to convert 1 compressed dirt to 4 clay
on_use = minetest.item_eat(0,"vessels:drinking_glass"),
sounds = default.node_sound_glass_defaults(),
})

4
mod.conf Normal file
View File

@ -0,0 +1,4 @@
name = claycrafter
description = This mod introduces the Claycrafter, which converts Compressed Dirt to Clay using Glasses of Water.
depends = vessels, default, bucket
author = Dragonop

34
recipes.lua Normal file
View File

@ -0,0 +1,34 @@
minetest.register_craft({
output = "claycrafter:compressed_dirt",
recipe = {
{"default:dirt", "default:dirt", "default:dirt"},
{"default:dirt", "default:dirt", "default:dirt"},
{"default:dirt", "default:dirt", "default:dirt"}
}
})
minetest.register_craft({
output = "default:dirt 9",
recipe = {{"claycrafter:compressed_dirt"}}
})
minetest.register_craft({
output = "claycrafter:glass_of_water 8",
recipe = {
{"vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass"},
{"vessels:drinking_glass", "bucket:bucket_water", "vessels:drinking_glass"},
{"vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass"}
},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"},
}
})
minetest.register_craft({
output = "claycrafter:claycrafter",
recipe = {
{"group:wood", "default:steel_ingot", "group:wood"},
{"group:wood", "default:glass", "group:wood"},
{"default:stick", "bucket:bucket_water", "default:stick"}
}
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B