REDO ALL THE THINGS
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.blend1
|
||||
.vscode/
|
43
.luacheckrc
Normal file
@ -0,0 +1,43 @@
|
||||
max_line_length = false
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"dump", "dump2",
|
||||
"vector",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "PcgRandom",
|
||||
"ItemStack",
|
||||
"Settings",
|
||||
"unpack",
|
||||
|
||||
table = {
|
||||
fields = {
|
||||
"copy",
|
||||
"indexof",
|
||||
"insert_all",
|
||||
"key_value_swap",
|
||||
}
|
||||
},
|
||||
|
||||
string = {
|
||||
fields = {
|
||||
"split",
|
||||
"trim",
|
||||
}
|
||||
},
|
||||
|
||||
math = {
|
||||
fields = {
|
||||
"hypot",
|
||||
"sign",
|
||||
"factorial"
|
||||
}
|
||||
},
|
||||
|
||||
"default", "stairs", "bucket"
|
||||
}
|
||||
|
||||
globals = {
|
||||
"greek"
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
MIT Copyright 2020 GreenXenith
|
||||
MIT Copyright 2021 GreenXenith
|
||||
|
||||
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
|
||||
|
455
README.md
@ -1,7 +1,452 @@
|
||||
# Greeknodes
|
||||
It's all Greek to me.
|
||||
# Greek
|
||||
_It's all Greek to me._
|
||||
|
||||
Some Greek-themed architecture nodes.
|
||||
This mod is completely dependency-agnostic, meaning no extra mods are required to have any content. Some mods are optionally required to provide certain crafting recipes (see [Dependencies](#dependencies)). All non-`greek` recipe items are configurable (see [Configuration](#configuration)).
|
||||
|
||||
License of `greeknodes_tar_base.png`, `greeknodes_tar_block.png`, `greeknodes_marble.png`:
|
||||
CC-by-SA 4.0 VanessaE ([building_blocks](https://gitlab.com/VanessaE/homedecor_modpack/-/tree/master/building_blocks))
|
||||

|
||||
|
||||
## Contents
|
||||
* Polished marble
|
||||
* Carved marble tiles
|
||||
* Painted marble tiles
|
||||
* Marble pillars
|
||||
* Marble detailing (acroterions, triglyphs, metopes)
|
||||
* Gilded gold
|
||||
* Vases
|
||||
* Lamps and fire bowls
|
||||
* Blue doors and shutters
|
||||
* Stairs for most listed nodes
|
||||
|
||||
See [the complete item list](#full-lists) for more details.
|
||||
|
||||
## Dependencies
|
||||
All listed dependencies are only defaults and are configurable unless noted otherwise.
|
||||
* `stairs`: May provide more up-to-date stair placement functionality. Not required for stairs.
|
||||
* `dye`: Used in numerous color recipes, mainly render and painted tiles (non-configurable).
|
||||
* `darkage`: Provides marble and chalk (used in polished marble and cement, respectively).
|
||||
* `building_blocks`: Provides marble for polished marble.
|
||||
* `technic_worldgen`: Provides marble for polished marble.
|
||||
* `default`: Provides silver sandstone (for cement), gold block (for gilded gold), clay (for red clay), and steel ingot (for locked doors). Also provides various `group:wood`s.
|
||||
* `basic_materials`: Provides padlock for locked doors.
|
||||
|
||||
## Configuration
|
||||
All craftitems are configurable via the `minetest.conf` using settings listed in [settingtypes.txt](settingtypes.txt). Craftitem settings use a comma-deliminated list of itemstrings. Each item listed, if available, will be used as a valid item in crafting recipes using that item type.
|
||||
|
||||
Configurable item types:
|
||||
* Marble: Used to craft polished marble. Polished marble is in turn used to craft all other marble-related items.
|
||||
NOTE: If [greeknodes compaitibility](#compatibility) is enabled, at least one registered item must be in this list.
|
||||
* Limestone: Used to craft cement for render.
|
||||
* Gold block: Used to craft gilded gold.
|
||||
* Clay: Used to craft red clay.
|
||||
* Blue wood: Used to craft doors and shutters.
|
||||
* Lock: Used to craft locked doors.
|
||||
|
||||
Other settings:
|
||||
* Maximum vase capacity
|
||||
* Snuff fire bowls on dig
|
||||
* Enable `greeknodes` aliases
|
||||
* Alias `greeknodes` marble to polished marble
|
||||
|
||||
See [settingtypes.txt](settingtypes.txt) for defaults.
|
||||
|
||||
## Compatibility
|
||||
This mod is the successor to my old `greeknodes` mod. Aliases are registered by default to convert old `greeknodes` items to `greek` items. For this to be successful, at least one valid marble item must be configured, or aliasing to polished marble must be enabled. Compatibility can be [disabled](#configuration) entirely, of course.
|
||||
|
||||
## Implementations
|
||||
### Coloring
|
||||
Some nodes (render, painted tiles) have 8 available colors variants. They can be obtained by combining them with a dye (dye is not consumed) or punching a colorable node with a dye.
|
||||
|
||||
### Stairs
|
||||
I need to be able to use dye punch-coloring on certain stairs (painted tile, render). Default stairs has two issues:
|
||||
* Takes explicit definition values instead of a whole definition
|
||||
* Doesn't return what items were actually registered
|
||||
|
||||
As such, I've rolled my own implementation near-identical to that of default stairs, but a bit more succinct and generic. I've used the rotation functions from default stairs, and it will poll for a more up-to-date function if default stairs is enabled.
|
||||
|
||||
### Doors
|
||||
Depending on external mods for content would not be very dependency-agnostic, so I've opted to roll my own doors as simply as I could manage. My implementation is smaller and in some ways more naive than default doors, but it works as well as I'd like.
|
||||
|
||||
Doors are implemented using only 2 (a, b) nodes per type rather than 8 (a, b, c, d, for unlocked and locked). An open A door is identical to a closed B door, and vise-versa, provided the front and back of the door texture is identical. Locked doors are implemented using param2 palette index (locked doors have a silver handle). They can only be obtained via crafting.
|
||||
|
||||
Doors also support skeleton keys. As an extended key feature, you can bind already-bound keys to unbound doors.
|
||||
|
||||
### Craftrings
|
||||
Some nodes have many near-identical variants (such as metopes). Rather than making a unique crafting recipe for each node, a "craftring" is registered to loop through all possible variants. Placing one version of the item in the crafting grid will output the next version. The last variant will return the first variant (to form the loop).
|
||||
|
||||
As crafting large amounts of certain variants can be tedious, variants can be copied. Placing 2 of a target variant in the crafting grid with another variant will output the target variant and keep the other 2 target variants.
|
||||
|
||||
```
|
||||
+-+-+-+ +-+-+-+ +-+
|
||||
|A|A|B| -> |A|A| | |A|
|
||||
+-+-+-+ +-+-+-+ +-+
|
||||
```
|
||||
|
||||
## Todo
|
||||
* Configurable sounds
|
||||
* Translation support
|
||||
* ???
|
||||
|
||||
## Full Lists
|
||||
<details><summary>Items</summary>
|
||||
|
||||
`*`: Has stairs
|
||||
`+`: Has colors
|
||||
`#`: Not craftable (but may be placable)
|
||||
`!`: Not obainable at all
|
||||
|
||||
* `greek:acroterion`
|
||||
* `greek:acroterion_corner`
|
||||
* `greek:blue_wood`*
|
||||
* `greek:cement`*+
|
||||
* `greek:chain`
|
||||
* `greek:door_<1-4>_<a,b>`
|
||||
* `greek:door_blank`!
|
||||
* `greek:fire_bowl`
|
||||
* `greek:fire_bowl_hanging`#
|
||||
* `greek:fire_bowl_hanging_lit`#
|
||||
* `greek:fire_bowl_lit`#
|
||||
* `greek:gilded_gold`*
|
||||
* `greek:lamp`
|
||||
* `greek:marble_cobble`*
|
||||
* `greek:marble_painted_center_<1-12>`*+
|
||||
* `greek:marble_painted_corner_<1-12>`*+
|
||||
* `greek:marble_painted_edge_<1-12>`*+
|
||||
* `greek:marble_pillar`*
|
||||
* `greek:marble_pillar_base_corinthian`
|
||||
* `greek:marble_pillar_base_doric`
|
||||
* `greek:marble_pillar_base_ionic`
|
||||
* `greek:marble_pillar_head_corinthian`
|
||||
* `greek:marble_pillar_head_doric`
|
||||
* `greek:marble_pillar_head_ionic`
|
||||
* `greek:marble_polished`*
|
||||
* `greek:marble_polished_block`*
|
||||
* `greek:marble_tile_<1-6>`*
|
||||
* `greek:metope_centaur_and_man`
|
||||
* `greek:metope_chariot`
|
||||
* `greek:metope_crowd`
|
||||
* `greek:metope_gaurd`
|
||||
* `greek:metope_horse`
|
||||
* `greek:metope_horses`
|
||||
* `greek:metope_man_kneeling`
|
||||
* `greek:metope_man_laying`
|
||||
* `greek:metope_man_standing`
|
||||
* `greek:metope_rider`
|
||||
* `greek:metope_three_men`
|
||||
* `greek:metope_two_men`
|
||||
* `greek:red_clay`
|
||||
* `greek:red_clay_fired`*
|
||||
* `greek:render`*+
|
||||
* `greek:shutters_<1-3>[_closed]`
|
||||
* `greek:triglyph`
|
||||
* `greek:triglyph_blue`
|
||||
* `greek:vase_amphora_<1-4>`
|
||||
* `greek:vase_stamnos_<1-4>`
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<details><summary>Recipes</summary>
|
||||
|
||||
`greek:acroterion 2`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
+-+-+-+
|
||||
| |M| |
|
||||
+-+-+-+
|
||||
| |M| |
|
||||
+-+-+-+
|
||||
|M|M|M|
|
||||
+-+-+-+
|
||||
|
||||
or
|
||||
|
||||
Shapeless (1) = greek:acroterion_corner
|
||||
```
|
||||
|
||||
`greek:acroterion_corner 2`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
+-+-+-+
|
||||
|M| | |
|
||||
+-+-+-+
|
||||
|M| | |
|
||||
+-+-+-+
|
||||
|M|M|M|
|
||||
+-+-+-+
|
||||
(Reversable)
|
||||
|
||||
or
|
||||
|
||||
Shapeless (1) = greek:acroterion
|
||||
```
|
||||
|
||||
`greek:blue_wood`:
|
||||
```
|
||||
Shapeless: dye:blue, group:wood
|
||||
```
|
||||
|
||||
`greek:cement`:
|
||||
```
|
||||
Cooking: group:greek:limestone
|
||||
```
|
||||
|
||||
`greek:chain 12`:
|
||||
```
|
||||
G = greek:gilded_gold
|
||||
+-+
|
||||
|G|
|
||||
+-+
|
||||
|G|
|
||||
+-+
|
||||
|G|
|
||||
+-+
|
||||
```
|
||||
|
||||
`greek:door_1_a 2`:
|
||||
```
|
||||
W = group:greek:blue_wood
|
||||
+-+-+
|
||||
|W|W|
|
||||
+-+-+
|
||||
|W|W|
|
||||
+-+-+
|
||||
|W|W|
|
||||
+-+-+
|
||||
```
|
||||
|
||||
`greek:fire_bowl 2`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
G = greek:gilded_gold
|
||||
+-+-+-+
|
||||
|M| |M|
|
||||
+-+-+-+
|
||||
| |G| |
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:gilded_gold`:
|
||||
```
|
||||
Cooking: group:greek:gold_block
|
||||
```
|
||||
|
||||
`greek:lamp 2`:
|
||||
```
|
||||
C = group:greek:red_clay
|
||||
+-+-+-+
|
||||
|C| |C|
|
||||
+-+-+-+
|
||||
| |C| |
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_cobble 5`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
+-+-+-+
|
||||
|M| |M|
|
||||
+-+-+-+
|
||||
| |M| |
|
||||
+-+-+-+
|
||||
|M| |M|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_painted_center_1 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
D = dye:blue
|
||||
+-+-+-+
|
||||
|M|D|M|
|
||||
+-+-+-+
|
||||
|D|D|D|
|
||||
+-+-+-+
|
||||
|M|D|M|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_painted_corner_1 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
D = dye:blue
|
||||
+-+-+-+
|
||||
|D|M|M|
|
||||
+-+-+-+
|
||||
|D|M|M|
|
||||
+-+-+-+
|
||||
|D|D|D|
|
||||
+-+-+-+
|
||||
(Rotatable)
|
||||
```
|
||||
|
||||
`greek:marble_painted_edge_1 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
D = dye:blue
|
||||
+-+-+-+
|
||||
|D|M|D|
|
||||
+-+-+-+
|
||||
|M|D|M|
|
||||
+-+-+-+
|
||||
|D|M|D|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_pillar 2`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
+-+
|
||||
|M|
|
||||
+-+
|
||||
|M|
|
||||
+-+
|
||||
```
|
||||
|
||||
`greek:marble_pillar_base_doric 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
P = greek:marble_pillar
|
||||
+-+-+-+
|
||||
| |P| |
|
||||
+-+-+-+
|
||||
|P|M|P|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_pillar_head_doric 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
P = greek:marble_pillar
|
||||
+-+-+-+
|
||||
|P|M|P|
|
||||
+-+-+-+
|
||||
| |P| |
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_polished 9`:
|
||||
```
|
||||
M = group:greek:marble
|
||||
+-+-+-+
|
||||
|M|M|M|
|
||||
+-+-+-+
|
||||
|M|M|M|
|
||||
+-+-+-+
|
||||
|M|M|M|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_polished_block 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
+-+-+
|
||||
|M|M|
|
||||
+-+-+
|
||||
|M|M|
|
||||
+-+-+
|
||||
```
|
||||
|
||||
`greek:marble_tile_1 4`:
|
||||
```
|
||||
B = greek:marble_polished_block
|
||||
+-+-+
|
||||
|B|B|
|
||||
+-+-+
|
||||
|B|B|
|
||||
+-+-+
|
||||
```
|
||||
|
||||
`greek:metope_man_standing 2`:
|
||||
```
|
||||
Shapeless: greek:marble_polished, group:greek:red_clay
|
||||
```
|
||||
|
||||
`greek:red_clay 8`:
|
||||
```
|
||||
C = group:greek:clay_lump
|
||||
D = dye:red
|
||||
+-+-+-+
|
||||
|C|C|C|
|
||||
+-+-+-+
|
||||
|C|D|C|
|
||||
+-+-+-+
|
||||
|C|C|C|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:red_clay_fired`:
|
||||
```
|
||||
Cooking: group:greek:red_clay
|
||||
```
|
||||
|
||||
`greek:render 2`:
|
||||
```
|
||||
Shapeless: greek:cement, group:sand, group:water_bucket
|
||||
Replacements: (group:water_bucket, bucket:bucket_empty)
|
||||
```
|
||||
|
||||
`greek:shutters_1 2`:
|
||||
```
|
||||
W = group:greek:blue_wood
|
||||
+-+-+-+
|
||||
|W| |W|
|
||||
+-+-+-+
|
||||
|W| |W|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:triglyph 4`:
|
||||
```
|
||||
M = greek:marble_polished
|
||||
+-+-+-+
|
||||
|M| |M|
|
||||
+-+-+-+
|
||||
|M| |M|
|
||||
+-+-+-+
|
||||
|
||||
or
|
||||
|
||||
Shapeless (1): greek:triglyph_blue, dye:white
|
||||
```
|
||||
|
||||
`greek:triglyph_blue`:
|
||||
```
|
||||
Shapeless: greek:triglyph, dye:blue
|
||||
```
|
||||
|
||||
`greek:vase_amphora_1 2`:
|
||||
```
|
||||
C = group:greek:red_clay
|
||||
+-+-+-+
|
||||
|C| |C|
|
||||
+-+-+-+
|
||||
|C| |C|
|
||||
+-+-+-+
|
||||
|C|C|C|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
`greek:vase_stamnos_1 2`:
|
||||
```
|
||||
C = group:greek:red_clay
|
||||
+-+-+-+
|
||||
|C| |C|
|
||||
+-+-+-+
|
||||
|C|C|C|
|
||||
+-+-+-+
|
||||
```
|
||||
|
||||
Craftrings:
|
||||
* `greek:door_*_a`
|
||||
* `greek:marble_painted_center_*`
|
||||
* `greek:marble_painted_corner_*`
|
||||
* `greek:marble_painted_edge_*`
|
||||
* `greek:marble_pillar_base_*`
|
||||
* `greek:marble_pillar_head_*`
|
||||
* `greek:marble_tile_*`
|
||||
* `greek:metope_*`
|
||||
* `greek:shutters_*`
|
||||
* `greek:vase_amphora_*`
|
||||
* `greek:vase_stamnos_*`
|
||||
|
||||
</details>
|
||||
|
48
compat.lua
Normal file
@ -0,0 +1,48 @@
|
||||
-- Aliases for legacy greeknodes mod
|
||||
|
||||
local nodes = {
|
||||
{"marble_cobble", "marble_cobble"},
|
||||
{"polished_marble", "marble_polished"},
|
||||
{"polished_marble_block", "marble_polished_block"},
|
||||
{"pillar", "marble_pillar"},
|
||||
{"pillar_head_dioric", "marble_pillar_head_doric"},
|
||||
{"pillar_head_corinthian", "marble_pillar_head_corinthian"},
|
||||
{"pillar_head_ionic", "marble_pillar_head_ionic"},
|
||||
{"marble_tile", "marble_tile_1"},
|
||||
{"gilded_gold_block", "gilded_gold"},
|
||||
}
|
||||
|
||||
for _, pair in pairs(nodes) do
|
||||
minetest.register_alias("greeknodes:" .. pair[1], "greek:" .. pair[2])
|
||||
end
|
||||
|
||||
local stairs = {
|
||||
{"marblepillar_stair", "marble_pillar"},
|
||||
{"marblecobble_stair", "marble_cobble"},
|
||||
{"polishedmarble_stair", "marble_polished"},
|
||||
{"polishedmarbleblock_stair", "marble_polished_block"},
|
||||
{"marbletile_stair", "marble_tile_1"},
|
||||
{"gilded_gold_stair", "gilded_gold"},
|
||||
}
|
||||
|
||||
for _, shape in pairs({"stair_", "slab_", "stair_inner_", "stair_outer_"}) do
|
||||
for _, pair in pairs(stairs) do
|
||||
minetest.register_alias("stairs:" .. shape .. pair[1], "greek:" .. shape .. pair[2])
|
||||
end
|
||||
end
|
||||
|
||||
if greek.settings_get("alias_polished_marble") then
|
||||
minetest.register_alias("greeknodes:marble", "greek:marble_polished")
|
||||
else
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for _, item in ipairs(greek.settings_list("marble")) do
|
||||
if minetest.registered_nodes[item] then
|
||||
return minetest.register_alias("greeknodes:marble", item)
|
||||
end
|
||||
end
|
||||
error("[greek] No valid marble found to alias 'greeknodes:marble' to. Please check your configuration and loaded mods.")
|
||||
end)
|
||||
end
|
||||
|
||||
minetest.register_alias("greeknodes:tar_base", "")
|
||||
minetest.register_alias("greeknodes:tar", "")
|
285
decor.lua
Normal file
@ -0,0 +1,285 @@
|
||||
-- Misc decor nodes (marble detailing, render, etc)
|
||||
|
||||
-- Triglyphs
|
||||
greek.register_node_and_stairs("greek:triglyph", {
|
||||
description = "Marble Triglyph",
|
||||
tiles = {"greek_marble_polished.png", "greek_marble_polished.png", "greek_triglyph.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:triglyph 4",
|
||||
recipe = {
|
||||
{"greek:marble_polished", "", "greek:marble_polished"},
|
||||
{"greek:marble_polished", "", "greek:marble_polished"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:triglyph",
|
||||
recipe = {"greek:triglyph_blue", "dye:white"},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
greek.register_node_and_stairs("greek:triglyph_blue", {
|
||||
description = "Blue Marble Triglyph",
|
||||
tiles = {"greek_marble_polished.png^[multiply:#4a797d", "greek_marble_polished.png^[multiply:#4a797d", "greek_triglyph.png^[multiply:#4a797d"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:triglyph_blue",
|
||||
recipe = {"greek:triglyph", "dye:blue"},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
-- Metopes
|
||||
local metopes = {
|
||||
"man_standing",
|
||||
"two_men",
|
||||
"three_men",
|
||||
"crowd",
|
||||
"gaurd",
|
||||
"chariot",
|
||||
"horse",
|
||||
"horses",
|
||||
"centaur_and_man",
|
||||
"rider",
|
||||
"man_laying",
|
||||
"man_kneeling",
|
||||
}
|
||||
|
||||
for _, name in pairs(metopes) do
|
||||
minetest.register_node("greek:metope_" .. name, {
|
||||
description = "Metope (" .. (" " .. name):gsub("%W%l", string.upper):sub(2) .. ")",
|
||||
tiles = {
|
||||
"greek_metope_base.png", "greek_metope_base.png",
|
||||
"greek_metope_base.png^greek_metope_" .. name .. ".png^[transformFX", "greek_metope_base.png^greek_metope_" .. name .. ".png^[transformFX",
|
||||
"greek_metope_base.png^greek_metope_" .. name .. ".png", "greek_metope_base.png^greek_metope_" .. name .. ".png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
end
|
||||
|
||||
greek.register_craftring("greek:metope_%s", metopes)
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:metope_" .. metopes[1] .. " 2",
|
||||
recipe = {"greek:marble_polished", "group:greek:red_clay"},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
-- Acroterions
|
||||
minetest.register_node("greek:acroterion", {
|
||||
description = "Marble Acroterion",
|
||||
-- drawtype = "allfaces", -- #9210
|
||||
tiles = {
|
||||
"blank.png", "greek_marble_polished.png",
|
||||
"blank.png", "blank.png",
|
||||
"blank.png", {name = "greek_acroterion.png", backface_culling = false},
|
||||
},
|
||||
use_texture_alpha = true,
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:acroterion 2",
|
||||
recipe = {
|
||||
{"", "greek:marble_polished", ""},
|
||||
{"", "greek:marble_polished", ""},
|
||||
{"greek:marble_polished", "greek:marble_polished", "greek:marble_polished"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:acroterion",
|
||||
recipe = {"greek:acroterion_corner"},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
minetest.register_node("greek:acroterion_corner", {
|
||||
description = "Marble Acroterion Corner",
|
||||
-- drawtype = "allfaces", -- #9210
|
||||
tiles = {
|
||||
"blank.png", "greek_marble_polished.png",
|
||||
"blank.png", {name = "greek_acroterion_corner.png^[transformFX", backface_culling = false},
|
||||
"blank.png", {name = "greek_acroterion_corner.png", backface_culling = false},
|
||||
},
|
||||
use_texture_alpha = true,
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:acroterion_corner 2",
|
||||
recipe = {
|
||||
{"greek:marble_polished", "", ""},
|
||||
{"greek:marble_polished", "", ""},
|
||||
{"greek:marble_polished", "greek:marble_polished", "greek:marble_polished"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:acroterion_corner 2",
|
||||
recipe = {
|
||||
{"", "", "greek:marble_polished"},
|
||||
{"", "", "greek:marble_polished"},
|
||||
{"greek:marble_polished", "greek:marble_polished", "greek:marble_polished"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:acroterion_corner",
|
||||
recipe = {"greek:acroterion"},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
-- Render
|
||||
minetest.register_craftitem("greek:cement", {
|
||||
description = "Cement",
|
||||
inventory_image = "greek_cement.png",
|
||||
})
|
||||
|
||||
for _, item in pairs(greek.settings_list("limestone")) do
|
||||
greek.add_group(item, "limestone")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:cement",
|
||||
recipe = "group:greek:limestone",
|
||||
type = "cooking",
|
||||
cooktime = 7,
|
||||
})
|
||||
|
||||
-- Palette colors and corresponding dyes
|
||||
local palette = {[0] = "#ffffff", "#e63845", "#ff6f45", "#f6dd4a", "#83d753", "#526ff0", "#d07fef", "#2b2b2b"}
|
||||
local dyes = {["dye:white"] = 0, ["dye:red"] = 1, ["dye:orange"] = 2, ["dye:yellow"] = 3, ["dye:green"] = 4, ["dye:blue"] = 5, ["dye:violet"] = 6, ["dye:black"] = 7}
|
||||
|
||||
greek.register_node_and_stairs("greek:render", {
|
||||
description = "Render",
|
||||
tiles = {"greek_render.png"},
|
||||
paramtype2 = "color",
|
||||
palette = "greek_render_palette.png",
|
||||
groups = {cracky = 3},
|
||||
sounds = greek.marble_sounds,
|
||||
on_punch = function(pos, node, puncher, pointed)
|
||||
if not minetest.is_protected(pos, puncher:get_player_name()) then
|
||||
local stack = puncher:get_wielded_item():get_name()
|
||||
if dyes[stack] then
|
||||
minetest.swap_node(pos, {name = node.name, param2 = (dyes[stack] * 32) + (node.param2 % 32)})
|
||||
end
|
||||
end
|
||||
return minetest.node_punch(pos, node, puncher, pointed)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:render 2",
|
||||
recipe = {"greek:cement", "group:sand", "group:water_bucket"},
|
||||
replacements = {{"group:water_bucket", "bucket:bucket_empty"}},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
for dye, color in pairs(dyes) do
|
||||
minetest.register_craft({
|
||||
output = minetest.itemstring_with_color("greek:render", palette[color]),
|
||||
recipe = {"greek:render", dye},
|
||||
replacements = {{dye, dye}},
|
||||
type = "shapeless",
|
||||
})
|
||||
end
|
||||
|
||||
-- Misc
|
||||
greek.register_node_and_stairs("greek:gilded_gold", {
|
||||
description = "Gilded Gold",
|
||||
tiles = {"greek_gilded_gold.png"},
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 1},
|
||||
sounds = greek.default_sounds("node_sound_metal_defaults"),
|
||||
})
|
||||
|
||||
for _, item in pairs(greek.settings_list("gold_block")) do
|
||||
greek.add_group(item, "gold_block")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:gilded_gold",
|
||||
recipe = "group:greek:gold_block",
|
||||
type = "cooking",
|
||||
cooktime = 25,
|
||||
})
|
||||
|
||||
greek.register_node_and_stairs("greek:red_clay_fired", {
|
||||
description = "Fired Red Clay",
|
||||
tiles = {"greek_red_clay_fired.png"},
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 2},
|
||||
sounds = greek.default_sounds("node_sound_stone_defaults"),
|
||||
})
|
||||
|
||||
for _, item in pairs(greek.settings_list("red_clay")) do
|
||||
-- Only bother registering our own if it is used
|
||||
if item == "greek:red_clay" then
|
||||
minetest.register_craftitem("greek:red_clay", {
|
||||
description = "Red Clay Lump",
|
||||
inventory_image = "greek_red_clay.png",
|
||||
})
|
||||
|
||||
for _, craftitem in pairs(greek.settings_list("clay_lump")) do
|
||||
greek.add_group(craftitem, "clay_lump")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:red_clay 8",
|
||||
recipe = {
|
||||
{"group:greek:clay_lump", "group:greek:clay_lump", "group:greek:clay_lump"},
|
||||
{"group:greek:clay_lump", "dye:red", "group:greek:clay_lump"},
|
||||
{"group:greek:clay_lump", "group:greek:clay_lump", "group:greek:clay_lump"},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
greek.add_group(item, "red_clay")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:red_clay_fired",
|
||||
recipe = "group:greek:red_clay",
|
||||
type = "cooking",
|
||||
cooktime = 10,
|
||||
})
|
||||
|
||||
minetest.register_node("greek:chain", {
|
||||
description = "Chain",
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_chain.obj",
|
||||
tiles = {{name = "greek_chain.png", backface_culling = false}},
|
||||
inventory_image = "greek_chain_inv.png",
|
||||
paramtype2 = "facedir",
|
||||
place_param2 = 0,
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
climbable = true,
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {{-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16}},
|
||||
},
|
||||
groups = {choppy = 3, oddly_breakable_by_hand = 2},
|
||||
sounds = greek.default_sounds("node_sound_metal_defaults")
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:chain 12",
|
||||
recipe = {
|
||||
{"greek:gilded_gold"},
|
||||
{"greek:gilded_gold"},
|
||||
{"greek:gilded_gold"},
|
||||
}
|
||||
})
|
329
doors.lua
Normal file
@ -0,0 +1,329 @@
|
||||
-- Custom door implementation because I don't want to depend on other mods for content.
|
||||
-- Registers only 2 nodes per door. Relies on front and back faces being identical. Locked doors implemented via param2.
|
||||
|
||||
local function can_interact(pos, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
-- Not locked, is owner, or has valid key
|
||||
return owner == "" or player:get_player_name() == owner or meta:get_string("secret") == player:get_wielded_item():get_meta():get_string("secret")
|
||||
end
|
||||
|
||||
local function toggle_door(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local door, flip = node.name:match("^(.+_)(%w)$")
|
||||
local yaw = minetest.dir_to_yaw(minetest.facedir_to_dir(node.param2))
|
||||
local rot = minetest.dir_to_facedir(minetest.yaw_to_dir(yaw + math.rad(flip == "a" and -90 or 90)))
|
||||
|
||||
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "greek:door_blank", param2 = rot})
|
||||
minetest.swap_node(pos, {name = door .. (flip == "a" and "b" or "a"), param2 = rot + (meta:get_string("owner") ~= "" and 128 or 0)})
|
||||
|
||||
local state = (meta:get_int("state") + 1) % 2
|
||||
meta:set_int("state", state)
|
||||
if minetest.get_modpath("doors") then minetest.sound_play("doors_door_" .. ({"close", "open"})[state + 1], pos, true) end
|
||||
end
|
||||
|
||||
minetest.register_node("greek:door_blank", {
|
||||
drawtype = "airlike",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
pointable = false,
|
||||
diggable = false,
|
||||
buildable_to = false,
|
||||
floodable = false,
|
||||
drop = "",
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, -6 / 16},
|
||||
},
|
||||
})
|
||||
|
||||
local door_count = 4
|
||||
|
||||
for i = 1, door_count do
|
||||
local def = {
|
||||
description = "Blue Door " .. i,
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_door.obj",
|
||||
tiles = {{name = "greek_door_" .. i .. ".png", backface_culling = true, color = "white"}},
|
||||
overlay_tiles = {"greek_door_handle.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "colorfacedir",
|
||||
palette = "greek_door_palette.png",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, -6 / 16},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, -6 / 16},
|
||||
},
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
|
||||
on_rightclick = function(pos, _, clicker) if can_interact(pos, clicker) then toggle_door(pos) end end,
|
||||
on_key_use = function(pos, player) if can_interact(pos, player) then toggle_door(pos) end end,
|
||||
on_skeleton_key_use = function(pos, player, newsecret)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local name = player:get_player_name()
|
||||
local owner = meta:get_string("owner")
|
||||
|
||||
if owner ~= name then
|
||||
if owner ~= "" then minetest.chat_send_player(name, "You do not own this door.") end
|
||||
return
|
||||
end
|
||||
|
||||
local secret = meta:get_string("secret")
|
||||
secret = secret ~= "" and secret or newsecret
|
||||
meta:set_string("secret", secret)
|
||||
|
||||
return secret
|
||||
end,
|
||||
on_punch = function(pos, node, puncher, pointed)
|
||||
-- Allow binding a key to multiple doors
|
||||
local stack = puncher:get_wielded_item()
|
||||
print(stack:get_name())
|
||||
if minetest.get_item_group(stack:get_name(), "key") == 1 then
|
||||
local meta = minetest.get_meta(pos)
|
||||
local name = puncher:get_player_name()
|
||||
|
||||
if meta:get_string("owner") == name then
|
||||
local current = meta:get_string("secret")
|
||||
local new = stack:get_meta():get_string("secret")
|
||||
|
||||
if current == "" then
|
||||
meta:set_string("secret", new)
|
||||
elseif current ~= new then
|
||||
minetest.chat_send_player(name, "This door has already been bound to a key.")
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.node_punch(pos, node, puncher, pointed)
|
||||
end,
|
||||
on_rotate = function() return false end,
|
||||
on_dig = function(pos, node, digger)
|
||||
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
|
||||
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "air"})
|
||||
return minetest.node_dig(pos, node, digger)
|
||||
end,
|
||||
on_blast = function(pos)
|
||||
if minetest.get_meta(pos):get_string("owner") ~= "" then return end
|
||||
local name = minetest.get_node(pos).name
|
||||
minetest.remove_node(pos)
|
||||
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
|
||||
return {name}
|
||||
end,
|
||||
}
|
||||
|
||||
do -- Register normal version
|
||||
local defcopy = table.copy(def)
|
||||
|
||||
-- Check for obstructions and place invisible node
|
||||
defcopy.on_place = function(itemstack, placer, pointed)
|
||||
local pos
|
||||
|
||||
if pointed.type ~= "node" then return itemstack end
|
||||
|
||||
local node = minetest.get_node(pointed.under)
|
||||
local pdef = minetest.registered_nodes[node.name]
|
||||
|
||||
if pdef and pdef.on_rightclick and not placer:get_player_control().sneak then
|
||||
return pdef.on_rightclick(pointed.under, node, placer, itemstack, pointed)
|
||||
end
|
||||
|
||||
if pdef and pdef.buildable_to then
|
||||
pos = pointed.under
|
||||
else
|
||||
pos = pointed.above
|
||||
node = minetest.get_node(pos)
|
||||
pdef = minetest.registered_nodes[node.name]
|
||||
if not pdef or not pdef.buildable_to then return itemstack end
|
||||
end
|
||||
|
||||
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local top_node = minetest.get_node_or_nil(above)
|
||||
local topdef = top_node and minetest.registered_nodes[top_node.name]
|
||||
|
||||
if not topdef or not topdef.buildable_to then return itemstack end
|
||||
|
||||
local pn = placer and placer:get_player_name() or ""
|
||||
if minetest.is_protected(pos, pn) or minetest.is_protected(above, pn) then return itemstack end
|
||||
|
||||
return minetest.item_place_node(itemstack, placer, pointed)
|
||||
end
|
||||
|
||||
-- Set metadata and rotate door
|
||||
defcopy.after_place_node = function(pos, placer)
|
||||
local node = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
-- Check if door is locked
|
||||
if math.floor(node.param2 / 32) >= 4 then
|
||||
local name = placer:get_player_name()
|
||||
meta:set_string("owner", name)
|
||||
meta:set_string("infotext", "Blue Door\nOwned by " .. name)
|
||||
end
|
||||
|
||||
meta:set_int("state", 0)
|
||||
|
||||
local dir = node.param2 % 32
|
||||
local ref = {
|
||||
{x = -1, y = 0, z = 0},
|
||||
{x = 0, y = 0, z = 1},
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x = 0, y = 0, z = -1},
|
||||
}
|
||||
|
||||
local aside = {
|
||||
x = pos.x + ref[dir + 1].x,
|
||||
y = pos.y + ref[dir + 1].y,
|
||||
z = pos.z + ref[dir + 1].z,
|
||||
}
|
||||
|
||||
if minetest.get_item_group(minetest.get_node(aside).name, "door") == 1 then
|
||||
minetest.swap_node(pos, {name = node.name:match("^(.+_)%w$") .. "b", param2 = node.param2})
|
||||
end
|
||||
|
||||
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "greek:door_blank", param2 = node.param2})
|
||||
end
|
||||
|
||||
defcopy.color = "#242424"
|
||||
|
||||
-- Use overlay for door because it wont be colored
|
||||
defcopy.inventory_overlay = "greek_door_" .. i .. "_inv.png"
|
||||
defcopy.inventory_image = "greek_door_inv_handle.png"
|
||||
|
||||
defcopy.wield_overlay = "greek_door_" .. i .. "_inv.png"
|
||||
defcopy.wield_image = "greek_door_inv_handle.png"
|
||||
|
||||
minetest.register_node("greek:door_" .. i .. "_a", defcopy)
|
||||
end
|
||||
|
||||
do -- Register mirrored version (should not be obtainable normally)
|
||||
local defcopy = table.copy(def)
|
||||
-- Fancy flipping
|
||||
local front = "([combine\\:16x32\\:0,0=%s\\^[transformFX)"
|
||||
local back = "([combine\\:16x32\\:-16,0=%s\\^[transformFX)"
|
||||
local sides = "([combine\\:4x32\\:-32,0=%s\\^[transformFX)"
|
||||
local tops = "([combine\\:2x32\\:-36,0=%s\\^[transformFX)"
|
||||
|
||||
defcopy.tiles[1].name = (("[combine:38x32:0,0=%s:16,0=%s:32,0=%s:36,0=%s"):format(front, back, sides, tops):gsub("%%s", def.tiles[1].name))
|
||||
defcopy.overlay_tiles = {(("[combine:38x32:0,0=([combine\\:16x32\\:0,0=%s\\^[transformFX):16,0=([combine\\:16x32\\:-16,0=%s\\^[transformFX)"):gsub("%%s", def.overlay_tiles[1]))}
|
||||
|
||||
defcopy.groups.not_in_creative_inventory = 1
|
||||
|
||||
defcopy.drop = "greek:door_" .. i .. "_a"
|
||||
defcopy.preserve_metadata = function(_, node, oldmeta, drops)
|
||||
-- Preserve locked state
|
||||
if oldmeta.owner then
|
||||
local meta = drops[1]:get_meta()
|
||||
meta:set_int("palette_index", 128)
|
||||
meta:set_string("description", "Locked " .. minetest.registered_items[node.name].description)
|
||||
meta:set_string("color", "#dcdcdc")
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("greek:door_" .. i .. "_b", defcopy)
|
||||
end
|
||||
end
|
||||
|
||||
greek.register_craftring("greek:door_%s_a", door_count)
|
||||
|
||||
for _, item in pairs(greek.settings_list("blue_wood")) do
|
||||
-- Only bother registering our own if it is used
|
||||
if item == "greek:blue_wood" then
|
||||
greek.register_node_and_stairs("greek:blue_wood", {
|
||||
description = "Blue Wood",
|
||||
tiles = {"greek_blue_wood.png"},
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 2},
|
||||
sounds = greek.default_sounds("node_sound_wood_defaults"),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:blue_wood",
|
||||
recipe = {"group:wood", "dye:blue"},
|
||||
type = "shapeless",
|
||||
})
|
||||
end
|
||||
|
||||
greek.add_group(item, "blue_wood")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:door_1_a 2",
|
||||
recipe = {
|
||||
{"group:greek:blue_wood", "group:greek:blue_wood"},
|
||||
{"group:greek:blue_wood", "group:greek:blue_wood"},
|
||||
{"group:greek:blue_wood", "group:greek:blue_wood"},
|
||||
},
|
||||
})
|
||||
|
||||
for _, item in pairs(greek.settings_list("door_lock")) do
|
||||
greek.add_group(item, "door_lock")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = ItemStack({
|
||||
name = "greek:door_1_a",
|
||||
meta = {
|
||||
description = "Locked " .. minetest.registered_items["greek:door_1_a"].description,
|
||||
color = "#dcdcdc",
|
||||
palette_index = 128,
|
||||
},
|
||||
}):to_string(),
|
||||
recipe = {"greek:door_1_a", "group:greek:door_lock"},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
local shutter_count = 3
|
||||
|
||||
for i = 1, shutter_count do
|
||||
local def = {
|
||||
description = "Blue Shutters " .. i,
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_shutters.obj",
|
||||
tiles = {{name = "greek_shutters_" .. i .. ".png", backface_culling = true}, "blank.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 6 / 16, 0.5, 0.5, 0.5},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 6 / 16, 0.5, 0.5, 0.5},
|
||||
},
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
||||
on_rightclick = function(pos, node)
|
||||
minetest.swap_node(pos, {name = "greek:shutters_" .. i .. "_open", param2 = node.param2})
|
||||
if minetest.get_modpath("doors") then minetest.sound_play("doors_door_open", pos, true) end
|
||||
end,
|
||||
}
|
||||
|
||||
minetest.register_node("greek:shutters_" .. i, def)
|
||||
|
||||
def = table.copy(def)
|
||||
def.tiles = {"blank.png", def.tiles[1]}
|
||||
def.groups.not_in_creative_inventory = 1
|
||||
def.drop = "greek:shutters_" .. i
|
||||
def.on_rightclick = function(pos, node)
|
||||
minetest.swap_node(pos, {name = "greek:shutters_" .. i, param2 = node.param2})
|
||||
if minetest.get_modpath("doors") then minetest.sound_play("doors_door_close", pos, true) end
|
||||
end
|
||||
|
||||
minetest.register_node("greek:shutters_" .. i .. "_open", def)
|
||||
end
|
||||
|
||||
greek.register_craftring("greek:shutters_%s", shutter_count)
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:shutters_1 2",
|
||||
recipe = {
|
||||
{"group:greek:blue_wood", "", "group:greek:blue_wood"},
|
||||
{"group:greek:blue_wood", "", "group:greek:blue_wood"},
|
||||
},
|
||||
})
|
389
init.lua
@ -1,279 +1,120 @@
|
||||
-- Marble
|
||||
minetest.register_node("greeknodes:marble_cobble", {
|
||||
description = "Marble Cobble",
|
||||
tiles = {"greeknodes_marble_cobble.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
greek = {}
|
||||
|
||||
minetest.register_node("greeknodes:polished_marble", {
|
||||
description = "Polished Marble",
|
||||
tiles = {"greeknodes_marble_polished.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
local MODNAME = minetest.get_current_modname()
|
||||
local MODPATH = minetest.get_modpath(MODNAME)
|
||||
|
||||
minetest.register_node("greeknodes:polished_marble_block", {
|
||||
description = "Polished Marble Block",
|
||||
tiles = {"greeknodes_marble_polished_block.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
minetest.log("action", "[greek] Loading ...")
|
||||
|
||||
minetest.register_node("greeknodes:pillar", {
|
||||
description = "Marble Pillar",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_side.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("greeknodes:pillar_head_dioric", {
|
||||
description = "Marble Pillar Head (Dioric)",
|
||||
tiles = {"greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_head_dioric.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("greeknodes:pillar_head_corinthian", {
|
||||
description = "Marble Pillar Head (Corinthian)",
|
||||
tiles = {"greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_head_corinthian.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("greeknodes:pillar_head_ionic", {
|
||||
description = "Marble Pillar Head (Ionic)",
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_head_ionic_side.png", "greeknodes_marble_pillar_head_ionic_side.png", "greeknodes_marble_pillar_head_ionic.png", "greeknodes_marble_pillar_head_ionic.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("greeknodes:marble_tile", {
|
||||
description = "Marble Tile",
|
||||
tiles = {"greeknodes_marble_tile.png"},
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("greeknodes:gilded_gold_block", {
|
||||
description = "Gilded Gold Block",
|
||||
tiles = {"greeknodes_gilded_gold.png"},
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
})
|
||||
|
||||
-- Stairs & Slabs
|
||||
stairs.register_stair_and_slab(
|
||||
"marblepillar_stair",
|
||||
"greeknodes:pillar",
|
||||
{cracky = 3},
|
||||
{"greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_top.png", "greeknodes_marble_pillar_side.png"},
|
||||
"Marble Pillar Stair",
|
||||
"Marble Pillar Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
|
||||
stairs.register_stair_and_slab(
|
||||
"marblecobble_stair",
|
||||
"greeknodes:marble_cobble",
|
||||
{cracky = 3},
|
||||
{"greeknodes_marble_cobble.png"},
|
||||
"Marble Cobble Stair",
|
||||
"Marble Cobble Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
|
||||
stairs.register_stair_and_slab(
|
||||
"polishedmarble_stair",
|
||||
"greeknodes:polished_marble",
|
||||
{cracky = 3},
|
||||
{"greeknodes_marble_polished.png"},
|
||||
"Polished Marble Stair",
|
||||
"Polished Marble Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
|
||||
stairs.register_stair_and_slab(
|
||||
"polishedmarbleblock_stair",
|
||||
"greeknodes:polished_marble_block",
|
||||
{cracky = 3},
|
||||
{"greeknodes_marble_polished_block.png"},
|
||||
"Polished Marble Block Stair",
|
||||
"Polished Marble Block Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
|
||||
stairs.register_stair_and_slab(
|
||||
"marbletile_stair",
|
||||
"greeknodes:marble_tile",
|
||||
{cracky = 3},
|
||||
{"greeknodes_marble_tile.png"},
|
||||
"Marble Tile Stair",
|
||||
"Marble Tile Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
|
||||
stairs.register_stair_and_slab(
|
||||
"gilded_gold_stair",
|
||||
"greeknodes:gilded_gold_block",
|
||||
{cracky = 3},
|
||||
{"greeknodes_gilded_gold.png"},
|
||||
"Gilded Gold Block Stair",
|
||||
"Gilded Gold Block Slab",
|
||||
default.node_sound_metal_defaults()
|
||||
)
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "greeknodes:gilded_gold_block",
|
||||
recipe = "default:goldblock",
|
||||
cooktime = 25,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:polished_marble 9',
|
||||
recipe = {
|
||||
{'building_blocks:Marble', 'building_blocks:Marble', 'building_blocks:Marble'},
|
||||
{'building_blocks:Marble', 'building_blocks:Marble', 'building_blocks:Marble'},
|
||||
{'building_blocks:Marble', 'building_blocks:Marble', 'building_blocks:Marble'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:polished_marble_block 4',
|
||||
recipe = {
|
||||
{'greeknodes:polished_marble', 'greeknodes:polished_marble'},
|
||||
{'greeknodes:polished_marble', 'greeknodes:polished_marble'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:marble_cobble 5',
|
||||
recipe = {
|
||||
{'greeknodes:polished_marble', '', 'greeknodes:polished_marble'},
|
||||
{'', 'greeknodes:polished_marble', ''},
|
||||
{'greeknodes:polished_marble', '', 'greeknodes:polished_marble'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:pillar_head_dioric 2',
|
||||
recipe = {
|
||||
{'greeknodes:pillar'},
|
||||
{'greeknodes:pillar'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:pillar_head_ionic 4',
|
||||
recipe = {
|
||||
{'greeknodes:pillar', '', 'greeknodes:pillar'},
|
||||
{'', 'greeknodes:pillar', ''},
|
||||
{'', 'greeknodes:pillar', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:pillar_head_corinthian 9',
|
||||
recipe = {
|
||||
{'greeknodes:pillar', 'greeknodes:pillar', 'greeknodes:pillar'},
|
||||
{'greeknodes:pillar', 'greeknodes:pillar', 'greeknodes:pillar'},
|
||||
{'greeknodes:pillar', 'greeknodes:pillar', 'greeknodes:pillar'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:marble_tile 4',
|
||||
recipe = {
|
||||
{'building_blocks:Marble', 'building_blocks:Marble'},
|
||||
{'building_blocks:Marble', 'building_blocks:Marble'},
|
||||
}
|
||||
})
|
||||
|
||||
if minetest.get_modpath("homedecor") then
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:pillar 2',
|
||||
recipe = {
|
||||
{'building_blocks:Marble'},
|
||||
{'building_blocks:Marble'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_alias("greeknodes:marble", "building_blocks:Marble")
|
||||
minetest.register_alias("greeknodes:tar", "building_blocks:Tar")
|
||||
minetest.register_alias("greeknodes:tar_base", "building_blocks:tar_base")
|
||||
else
|
||||
minetest.register_node("greeknodes:marble", {
|
||||
description = "Marble",
|
||||
tiles = {"greeknodes_marble.png"},
|
||||
is_ground_content = true,
|
||||
groups = {cracky = 3, marble = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:pillar 2',
|
||||
recipe = {
|
||||
{'greeknodes:marble'},
|
||||
{'greeknodes:marble'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "greeknodes:tar",
|
||||
burntime = 40,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "greeknodes:tar",
|
||||
recipe = "greeknodes:tar_base",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("greeknodes:tar_base", {
|
||||
description = "Tar Base",
|
||||
image = "greeknodes_tar_base.png",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greeknodes:marble 9",
|
||||
recipe = {
|
||||
{"default:clay", "greeknodes:tar", "default:clay"},
|
||||
{"greeknodes:tar","default:clay", "greeknodes:tar"},
|
||||
{"default:clay", "greeknodes:tar","default:clay"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("greeknodes:tar", {
|
||||
description = "Tar",
|
||||
tiles = {"greeknodes_tar_block.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly = 1, tar_block = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:tar_base 2',
|
||||
recipe = {
|
||||
{"default:coal_lump", "default:gravel"},
|
||||
{"default:gravel", "default:coal_lump"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'greeknodes:tar_base 2',
|
||||
recipe = {
|
||||
{"default:gravel", "default:coal_lump"},
|
||||
{"default:coal_lump", "default:gravel"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_alias("building_blocks:Marble", "greeknodes:marble")
|
||||
minetest.register_alias("building_blocks:Tar", "greeknodes:tar")
|
||||
minetest.register_alias("building_blocks:tar_base", "greeknodes:tar_base")
|
||||
local function include(filename)
|
||||
minetest.log("info", "[greek] Loading " .. filename .. " ...")
|
||||
return dofile(MODPATH .. "/" .. filename), minetest.log("info", "[greek] Loaded " .. filename)
|
||||
end
|
||||
|
||||
local function convert(value, type)
|
||||
return ({number = tonumber(value), string = tostring(value), boolean = value == "true"})[type]
|
||||
end
|
||||
|
||||
-- Manually parse defaults because minetest.settings:get() wont return them
|
||||
local settingtypes = {}
|
||||
for line in io.lines(MODPATH .. "/settingtypes.txt") do
|
||||
if not line:match("^%s*#") and not line:match("^%s*$") then
|
||||
local name, _, stype, default = line:match("%s*(%S-) (%(.*%)) (%w+) ?(.*)")
|
||||
-- Convert string value to type (int = number, boolean = bool, else string)
|
||||
settingtypes[name] = convert(default, ({int = "number", bool = "boolean"})[stype] or "string")
|
||||
end
|
||||
end
|
||||
|
||||
function greek.settings_get(key)
|
||||
key = "greek." .. key
|
||||
local default = settingtypes[key]
|
||||
local setting = minetest.settings:get(key)
|
||||
return (setting ~= nil and {convert(setting, type(default))} or {default})[1]
|
||||
end
|
||||
|
||||
-- Convert comma-deliminated string setting to table
|
||||
function greek.settings_list(key)
|
||||
return greek.settings_get(key):gsub("%s", ""):split(",")
|
||||
end
|
||||
|
||||
-- Return default sounds if available
|
||||
function greek.default_sounds(name)
|
||||
if default and default[name] then return default[name]() end
|
||||
end
|
||||
|
||||
local register_stairs = include("stairs.lua")
|
||||
function greek.register_node_and_stairs(name, definition)
|
||||
minetest.register_node(name, definition)
|
||||
register_stairs(name, definition, name)
|
||||
end
|
||||
|
||||
-- Add custom group to item
|
||||
local function add_group(item, group)
|
||||
local def = minetest.registered_items[item]
|
||||
if def then
|
||||
local groups = table.copy(def.groups or {})
|
||||
groups["greek:" .. group] = 1
|
||||
minetest.override_item(item, {groups = groups})
|
||||
end
|
||||
end
|
||||
|
||||
local overrides = {}
|
||||
local loaded = false
|
||||
|
||||
function greek.add_group(item, group)
|
||||
if not loaded then
|
||||
overrides[item] = group
|
||||
else
|
||||
add_group(item, group)
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for item, group in pairs(overrides) do
|
||||
add_group(item, group)
|
||||
end
|
||||
loaded = true
|
||||
end)
|
||||
|
||||
-- Registers recipes to make a sequence of items by using a single item type to get the next item type
|
||||
-- `item` is a string that can be formatted with a given number or name from `total_or_table`
|
||||
-- 1 -> 2, n -> n + 1, last -> first
|
||||
-- Also registers crafts for copying one type to another (2 target type + 1 other type = 3 target type)
|
||||
function greek.register_craftring(item, total_or_table)
|
||||
if tonumber(total_or_table) then
|
||||
-- If total, make table filled with number sequence
|
||||
total_or_table = (function(a, b) for i = 1, b do a[i] = i end return a end)({}, total_or_table)
|
||||
end
|
||||
|
||||
for i = 1, #total_or_table do
|
||||
local itemname = item:format(total_or_table[i])
|
||||
minetest.register_craft({
|
||||
output = itemname,
|
||||
recipe = {item:format(total_or_table[(i - 2) % #total_or_table + 1])},
|
||||
type = "shapeless",
|
||||
})
|
||||
|
||||
-- Type copying using groups
|
||||
local groups = table.copy(minetest.registered_items[itemname].groups)
|
||||
groups[item] = 1
|
||||
|
||||
minetest.override_item(itemname, {
|
||||
groups = groups,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = itemname,
|
||||
recipe = {itemname, itemname, "group:" .. item}, -- Use 2 to set target
|
||||
type = "shapeless",
|
||||
replacements = {{itemname, itemname}, {itemname, itemname}}, -- Keep targets
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
include("marble.lua")
|
||||
include("decor.lua")
|
||||
include("doors.lua")
|
||||
include("vases.lua")
|
||||
include("lighting.lua")
|
||||
if greek.settings_get("greeknodes_aliases") then include("compat.lua") end
|
||||
|
||||
minetest.log("action", "[greek] Loaded.")
|
||||
|
139
lighting.lua
Normal file
@ -0,0 +1,139 @@
|
||||
-- Lit nodes.
|
||||
|
||||
minetest.register_node("greek:fire_bowl", {
|
||||
description = "Fire Bowl",
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_fire_bowl.obj",
|
||||
tiles = {"greek_fire_bowl.png", "blank.png"},
|
||||
inventory_image = "greek_fire_bowl_inv.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
place_param2 = 0,
|
||||
selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}},
|
||||
collision_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}},
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 2},
|
||||
sounds = greek.default_sounds("node_sound_glass_defaults"),
|
||||
on_place = function(stack, placer, pointed)
|
||||
-- If placed against ceiling, set to hanging fire bowl
|
||||
local s, p = minetest.item_place((pointed.under.y > pointed.above.y and stack:replace("greek:fire_bowl_hanging") and stack) or stack, placer, pointed)
|
||||
return s:replace("greek:fire_bowl") and s, p
|
||||
end,
|
||||
on_punch = function(pos, _, puncher)
|
||||
for _, group in pairs({"fire", "igniter", "torch"}) do
|
||||
if minetest.get_item_group(puncher:get_wielded_item():get_name(), group) > 0 then
|
||||
return minetest.swap_node(pos, {name = "greek:fire_bowl_lit"})
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("greek:fire_bowl_lit", {
|
||||
description = "Fire Bowl (Lit)",
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_fire_bowl.obj",
|
||||
tiles = {"greek_fire_bowl.png", {name = "greek_fire.png", animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1}}},
|
||||
inventory_image = "greek_fire_bowl_lit_inv.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
place_param2 = 0,
|
||||
selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}},
|
||||
collision_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}},
|
||||
light_source = 12,
|
||||
drop = greek.settings_get("fire_bowl_dig_snuff") and "greek:fire_bowl" or nil,
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 2, torch = 1},
|
||||
sounds = greek.default_sounds("node_sound_glass_defaults"),
|
||||
on_place = function(stack, placer, pointed)
|
||||
local s, p = minetest.item_place((pointed.under.y > pointed.above.y and stack:replace("greek:fire_bowl_hanging_lit") and stack) or stack, placer, pointed)
|
||||
return s:replace("greek:fire_bowl_lit") and s, p
|
||||
end,
|
||||
on_punch = function(pos, _, puncher)
|
||||
for _, group in pairs({"water", "liquid", "water_bucket"}) do
|
||||
if minetest.get_item_group(puncher:get_wielded_item():get_name(), group) > 0 then
|
||||
return minetest.swap_node(pos, {name = "greek:fire_bowl"})
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("greek:fire_bowl_hanging", {
|
||||
description = "Hanging Fire Bowl (You hacker, you)",
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_fire_bowl_hanging.obj",
|
||||
tiles = {"greek_fire_bowl.png", "blank.png", "greek_chain.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
selection_box = {type = "fixed", fixed = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5}},
|
||||
collision_box = {type = "fixed", fixed = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5}},
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
|
||||
sounds = greek.default_sounds("node_sound_glass_defaults"),
|
||||
drop = "greek:fire_bowl",
|
||||
on_punch = function(pos, _, puncher)
|
||||
for _, group in pairs({"fire", "igniter", "torch"}) do
|
||||
if minetest.get_item_group(puncher:get_wielded_item():get_name(), group) > 0 then
|
||||
return minetest.swap_node(pos, {name = "greek:fire_bowl_hanging_lit"})
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("greek:fire_bowl_hanging_lit", {
|
||||
description = "Hanging Fire Bowl (Lit) (You hacker, you)",
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_fire_bowl_hanging.obj",
|
||||
tiles = {"greek_fire_bowl.png", {name = "greek_fire.png", animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1}}, "greek_chain.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
selection_box = {type = "fixed", fixed = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5}},
|
||||
collision_box = {type = "fixed", fixed = {-0.5, -1.5, -0.5, 0.5, 0.5, 0.5}},
|
||||
light_source = 12,
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 2, not_in_creative_inventory = 1},
|
||||
sounds = greek.default_sounds("node_sound_glass_defaults"),
|
||||
drop = greek.settings_get("fire_bowl_dig_snuff") and "greek:fire_bowl" or "greek:fire_bowl_lit",
|
||||
on_punch = function(pos, _, puncher)
|
||||
for _, group in pairs({"water", "liquid", "water_bucket"}) do
|
||||
if minetest.get_item_group(puncher:get_wielded_item():get_name(), group) > 0 then
|
||||
return minetest.swap_node(pos, {name = "greek:fire_bowl_hanging"})
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:fire_bowl 2",
|
||||
recipe = {
|
||||
{"greek:marble_polished", "", "greek:marble_polished"},
|
||||
{"", "greek:gilded_gold", ""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("greek:lamp", {
|
||||
description = "Lamp",
|
||||
drawtype = "mesh",
|
||||
mesh = "greek_lamp.obj",
|
||||
tiles = {
|
||||
{name = "greek_lamp.png"},
|
||||
{name = "greek_lamp.png", animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 4, length = 1}}
|
||||
},
|
||||
inventory_image = "greek_lamp_inv.png",
|
||||
wield_image = "greek_lamp_inv.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
selection_box = {type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16}},
|
||||
collision_box = {type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16}},
|
||||
light_source = 8,
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 2, torch = 1},
|
||||
sounds = greek.default_sounds("node_sound_glass_defaults"),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:lamp 2",
|
||||
recipe = {
|
||||
{"group:greek:red_clay", "", "group:greek:red_clay"},
|
||||
{"", "group:greek:red_clay", ""},
|
||||
},
|
||||
})
|
228
marble.lua
Normal file
@ -0,0 +1,228 @@
|
||||
-- Polished marble nodes
|
||||
|
||||
greek.marble_groups = {cracky = 2}
|
||||
greek.marble_sounds = greek.default_sounds("node_sound_stone_defaults")
|
||||
|
||||
greek.register_node_and_stairs("greek:marble_polished", {
|
||||
description = "Polished Marble",
|
||||
tiles = {"greek_marble_polished.png"},
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
for _, item in pairs(greek.settings_list("marble")) do
|
||||
greek.add_group(item, "marble")
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_polished 9",
|
||||
recipe = {
|
||||
{"group:greek:marble", "group:greek:marble", "group:greek:marble"},
|
||||
{"group:greek:marble", "group:greek:marble", "group:greek:marble"},
|
||||
{"group:greek:marble", "group:greek:marble", "group:greek:marble"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_polished",
|
||||
recipe = "greek:marble_cobble",
|
||||
type = "cooking",
|
||||
cooktime = 5,
|
||||
})
|
||||
|
||||
greek.register_node_and_stairs("greek:marble_polished_block", {
|
||||
description = "Polished Marble Block",
|
||||
tiles = {"greek_marble_polished_block.png"},
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_polished_block 4",
|
||||
recipe = {
|
||||
{"greek:marble_polished", "greek:marble_polished"},
|
||||
{"greek:marble_polished", "greek:marble_polished"},
|
||||
}
|
||||
})
|
||||
|
||||
greek.register_node_and_stairs("greek:marble_cobble", {
|
||||
description = "Marble Cobble",
|
||||
tiles = {"greek_marble_cobble.png"},
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_cobble 5",
|
||||
recipe = {
|
||||
{"greek:marble_polished", "", "greek:marble_polished"},
|
||||
{"", "greek:marble_polished", ""},
|
||||
{"greek:marble_polished", "", "greek:marble_polished"},
|
||||
},
|
||||
})
|
||||
|
||||
-- Marble pillars
|
||||
greek.register_node_and_stairs("greek:marble_pillar", {
|
||||
description = "Marble Pillar",
|
||||
tiles = {"greek_marble_pillar_top.png", "greek_marble_pillar_top.png", "greek_marble_pillar_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
on_place = minetest.rotate_node,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_pillar 2",
|
||||
recipe = {
|
||||
{"greek:marble_polished"},
|
||||
{"greek:marble_polished"},
|
||||
},
|
||||
})
|
||||
|
||||
local pillar_heads = {"doric", "ionic", "corinthian"}
|
||||
|
||||
for _, head in pairs(pillar_heads) do
|
||||
minetest.register_node("greek:marble_pillar_head_" .. head, {
|
||||
description = head:gsub("^%l", string.upper) .. " Marble Pillar Head",
|
||||
tiles = {"greek_marble_pillar_top.png", "greek_marble_pillar_top.png", "greek_marble_pillar_head_" .. head .. ".png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
on_place = minetest.rotate_node,
|
||||
})
|
||||
|
||||
minetest.register_node("greek:marble_pillar_base_" .. head, {
|
||||
description = head:gsub("^%l", string.upper) .. " Marble Pillar Base",
|
||||
tiles = {"greek_marble_pillar_top.png", "greek_marble_pillar_top.png", "greek_marble_pillar_base_" .. head .. ".png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
on_place = minetest.rotate_node,
|
||||
})
|
||||
end
|
||||
|
||||
greek.register_craftring("greek:marble_pillar_head_%s", pillar_heads)
|
||||
greek.register_craftring("greek:marble_pillar_base_%s", pillar_heads)
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_pillar_head_" .. pillar_heads[1] .. " 4",
|
||||
recipe = {
|
||||
{"greek:marble_pillar", "greek:marble_polished", "greek:marble_pillar"},
|
||||
{"", "greek:marble_pillar", ""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_pillar_base_" .. pillar_heads[1] .. " 4",
|
||||
recipe = {
|
||||
{"", "greek:marble_pillar", ""},
|
||||
{"greek:marble_pillar", "greek:marble_polished", "greek:marble_pillar"},
|
||||
},
|
||||
})
|
||||
|
||||
-- Carved marble tiles
|
||||
local tile_total = 6
|
||||
|
||||
for i = 1, tile_total do
|
||||
greek.register_node_and_stairs("greek:marble_tile_" .. i, {
|
||||
description = "Marble Tile " .. i,
|
||||
tiles = {"greek_marble_tile_" .. i .. ".png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
})
|
||||
end
|
||||
|
||||
greek.register_craftring("greek:marble_tile_%s", tile_total)
|
||||
|
||||
minetest.register_craft({
|
||||
output = "greek:marble_tile_1 4",
|
||||
recipe = {
|
||||
{"greek:marble_polished_block", "greek:marble_polished_block"},
|
||||
{"greek:marble_polished_block", "greek:marble_polished_block"},
|
||||
}
|
||||
})
|
||||
|
||||
-- Painted marble tiles
|
||||
-- type name = {total, list of recipe shapes}
|
||||
local types = {
|
||||
center = {12, {{
|
||||
{0, 1, 0},
|
||||
{1, 1, 1},
|
||||
{0, 1, 0},
|
||||
}}},
|
||||
corner = {12, {
|
||||
{{1, 0, 0}, {1, 0, 0}, {1, 1, 1}},
|
||||
{{0, 0, 1}, {0, 0, 1}, {1, 1, 1}},
|
||||
{{1, 1, 1}, {0, 0, 1}, {0, 0, 1}},
|
||||
{{1, 1, 1}, {1, 0, 0}, {1, 0, 0}}
|
||||
}},
|
||||
edge = {12, {{
|
||||
{1, 0, 1},
|
||||
{0, 1, 0},
|
||||
{1, 0, 1},
|
||||
}}}
|
||||
}
|
||||
|
||||
-- Palette colors and corresponding dyes
|
||||
local palette = {[0] = "#0058af", "#ffdf7e", "#040404", "#fd294d", "#fa8a2d", "#067f23", "#8f54f5", "#f39ae4"}
|
||||
local dyes = {["dye:blue"] = 0, ["dye:yellow"] = 1, ["dye:black"] = 2, ["dye:red"] = 3, ["dye:orange"] = 4, ["dye:green"] = 5, ["dye:violet"] = 6, ["dye:pink"] = 7}
|
||||
|
||||
local dye_punch = function(pos, node, puncher, pointed)
|
||||
if not minetest.is_protected(pos, puncher:get_player_name()) then
|
||||
local stack = puncher:get_wielded_item():get_name()
|
||||
if dyes[stack] then
|
||||
minetest.swap_node(pos, {name = node.name, param2 = (dyes[stack] * 32) + (node.param2 % 32)})
|
||||
end
|
||||
end
|
||||
return minetest.node_punch(pos, node, puncher, pointed)
|
||||
end
|
||||
|
||||
for type, data in pairs(types) do
|
||||
local total = data[1]
|
||||
for i = 1, total do
|
||||
local name = ("greek:marble_painted_%s_%s"):format(type, i)
|
||||
local tile = ("greek_marble_painted_%s_%s.png"):format(type, i)
|
||||
|
||||
greek.register_node_and_stairs(name, {
|
||||
description = ("Painted %s Marble %s"):format(type:gsub("^%l", string.upper), i),
|
||||
tiles = {{name = "greek_marble_polished.png", color = "white"}},
|
||||
overlay_tiles = {tile, tile .. "^[transformFX", tile, tile .. "^[transformFY", tile .. "^[transformFX", tile .. "^[transformR180"},
|
||||
paramtype2 = "colorfacedir",
|
||||
palette = "greek_marble_painted_palette.png",
|
||||
color = palette[0], -- This is used for inventory color
|
||||
use_texture_alpha = true,
|
||||
groups = greek.marble_groups,
|
||||
sounds = greek.marble_sounds,
|
||||
on_punch = dye_punch,
|
||||
})
|
||||
|
||||
for dye, color in pairs(dyes) do
|
||||
minetest.register_craft({
|
||||
output = minetest.itemstring_with_color(name, palette[color]),
|
||||
recipe = {name, dye},
|
||||
replacements = {{dye, dye}},
|
||||
type = "shapeless",
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
greek.register_craftring("greek:marble_painted_" .. type .. "_%s", total)
|
||||
|
||||
-- Fill recipe template with items
|
||||
local items = {[0] = "greek:marble_polished", "group:dye"}
|
||||
for _, recipe in pairs(data[2]) do
|
||||
local filled = {}
|
||||
for row in pairs(recipe) do
|
||||
filled[row] = {}
|
||||
for col in pairs(recipe[row]) do
|
||||
filled[row][col] = items[recipe[row][col]]
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = ("greek:marble_painted_%s_1 4"):format(type),
|
||||
recipe = filled,
|
||||
})
|
||||
end
|
||||
end
|
7
mod.conf
@ -1,4 +1,3 @@
|
||||
name = greeknodes
|
||||
description = Some Greek architecture
|
||||
depends = default, stairs
|
||||
optional_depends = building_blocks
|
||||
name = greek
|
||||
description = A large assortment of Greek architecture blocks and materials.
|
||||
optional_depends = stairs
|
||||
|
BIN
models/greek.blend
Normal file
25
models/greek_chain.obj
Normal file
@ -0,0 +1,25 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o chain_Plane.001
|
||||
v -0.500000 -0.500000 -0.000000
|
||||
v 0.500000 -0.500000 -0.000000
|
||||
v -0.500000 0.500000 0.000000
|
||||
v 0.500000 0.500000 0.000000
|
||||
v 0.000000 -0.500000 0.500000
|
||||
v 0.000000 -0.500000 -0.500000
|
||||
v 0.000000 0.500000 0.500000
|
||||
v 0.000000 0.500000 -0.500000
|
||||
vt -0.000000 -0.093750
|
||||
vt 1.000000 -0.093750
|
||||
vt 1.000000 0.906250
|
||||
vt -0.000000 0.906250
|
||||
vt -0.000000 0.031250
|
||||
vt 1.000000 0.031250
|
||||
vt 1.000000 1.031250
|
||||
vt -0.000000 1.031250
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
g chain_Plane.001_greek_chain.png
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 5/5/2 6/6/2 8/7/2 7/8/2
|
49
models/greek_door.obj
Normal file
@ -0,0 +1,49 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o door_Cube.007
|
||||
v -0.500000 -0.500000 -0.375000
|
||||
v -0.500000 1.500000 -0.375000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v -0.500000 1.500000 -0.500000
|
||||
v 0.500000 -0.500000 -0.375000
|
||||
v 0.500000 1.500000 -0.375000
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 1.500000 -0.500000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.421053 1.000000
|
||||
vt 0.421053 0.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.421053 0.000000
|
||||
vt 0.421053 1.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.947368 0.500000
|
||||
vt 0.947368 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 0.500000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
g door_Cube.007_greek_door
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||
f 7/9/3 8/10/3 6/11/3 5/12/3
|
||||
f 5/13/4 6/14/4 2/15/4 1/16/4
|
||||
f 3/17/5 7/18/5 5/19/5 1/20/5
|
||||
f 8/21/6 4/22/6 2/23/6 6/24/6
|
101
models/greek_fire_bowl.obj
Normal file
@ -0,0 +1,101 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o fire_bowl_Cube.003
|
||||
v -0.250000 -0.496094 0.250000
|
||||
v -0.500000 -0.246094 0.500000
|
||||
v -0.250000 -0.496094 -0.250000
|
||||
v -0.500000 -0.246094 -0.500000
|
||||
v 0.250000 -0.496094 0.250000
|
||||
v 0.500000 -0.246094 0.500000
|
||||
v 0.250000 -0.496094 -0.250000
|
||||
v 0.500000 -0.246094 -0.500000
|
||||
v -0.176777 0.191406 0.176777
|
||||
v -0.176777 -0.308594 0.176777
|
||||
v 0.176777 0.191406 -0.176777
|
||||
v 0.176777 -0.308594 -0.176777
|
||||
v -0.176777 -0.308594 -0.176777
|
||||
v 0.176777 -0.308594 0.176777
|
||||
v -0.176777 0.191406 -0.176777
|
||||
v 0.176777 0.191406 0.176777
|
||||
v 0.144088 0.187608 -0.250000
|
||||
v 0.144088 0.187608 0.250000
|
||||
v 0.230912 -0.304796 -0.250000
|
||||
v 0.230912 -0.304796 0.250000
|
||||
v -0.144088 0.187608 0.250000
|
||||
v -0.144088 0.187608 -0.250000
|
||||
v -0.230912 -0.304796 0.250000
|
||||
v -0.230912 -0.304796 -0.250000
|
||||
v 0.250000 -0.304796 -0.230912
|
||||
v -0.250000 -0.304796 -0.230912
|
||||
v 0.250000 0.187608 -0.144088
|
||||
v -0.250000 0.187608 -0.144088
|
||||
v -0.250000 -0.304796 0.230912
|
||||
v 0.250000 -0.304796 0.230912
|
||||
v -0.250000 0.187608 0.144088
|
||||
v 0.250000 0.187608 0.144088
|
||||
v -0.437500 -0.308594 0.437500
|
||||
v -0.437500 -0.308594 -0.437500
|
||||
v 0.437500 -0.308594 0.437500
|
||||
v 0.437500 -0.308594 -0.437500
|
||||
vt 0.133333 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.133333 0.750000
|
||||
vt 0.533333 1.000000
|
||||
vt 0.400000 0.750000
|
||||
vt 0.533333 0.000000
|
||||
vt 0.400000 0.250000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.533333 1.000000
|
||||
vt 0.533333 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn -0.7071 -0.0000 0.7071
|
||||
vn 0.9848 0.1736 0.0000
|
||||
vn -0.9848 0.1736 -0.0000
|
||||
vn 0.0000 0.1736 -0.9848
|
||||
vn -0.0000 0.1736 0.9848
|
||||
g fire_bowl_Cube.003_greek_fire_bowl.png
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/4/2 4/3/2 8/5/2 7/6/2
|
||||
f 7/6/3 8/5/3 6/7/3 5/8/3
|
||||
f 5/8/4 6/7/4 2/2/4 1/1/4
|
||||
f 3/4/5 7/6/5 5/8/5 1/1/5
|
||||
f 34/9/5 36/10/5 35/11/5 33/12/5
|
||||
g fire_bowl_Cube.003_fire_basic_flame_animated.png
|
||||
f 10/13/6 12/14/6 11/15/6 9/16/6
|
||||
f 14/17/7 16/18/7 15/19/7 13/20/7
|
||||
f 18/21/8 20/22/8 19/23/8 17/24/8
|
||||
f 22/25/9 24/26/9 23/27/9 21/28/9
|
||||
f 26/29/10 28/30/10 27/31/10 25/32/10
|
||||
f 30/33/11 32/34/11 31/35/11 29/36/11
|
162
models/greek_fire_bowl_hanging.obj
Normal file
@ -0,0 +1,162 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o fire_bowl_hanging_Cube.009
|
||||
v -0.250000 -1.496094 0.250000
|
||||
v -0.500000 -1.246094 0.500000
|
||||
v -0.250000 -1.496094 -0.250000
|
||||
v -0.500000 -1.246094 -0.500000
|
||||
v 0.250000 -1.496094 0.250000
|
||||
v 0.500000 -1.246094 0.500000
|
||||
v 0.250000 -1.496094 -0.250000
|
||||
v 0.500000 -1.246094 -0.500000
|
||||
v -0.176777 -0.808594 0.176777
|
||||
v -0.176777 -1.308594 0.176777
|
||||
v 0.176777 -0.808594 -0.176777
|
||||
v 0.176777 -1.308594 -0.176777
|
||||
v -0.176777 -1.308594 -0.176777
|
||||
v 0.176777 -1.308594 0.176777
|
||||
v -0.176777 -0.808594 -0.176777
|
||||
v 0.176777 -0.808594 0.176777
|
||||
v 0.144088 -0.812392 -0.250000
|
||||
v 0.144088 -0.812392 0.250000
|
||||
v 0.230912 -1.304796 -0.250000
|
||||
v 0.230912 -1.304796 0.250000
|
||||
v -0.144088 -0.812392 0.250000
|
||||
v -0.144088 -0.812392 -0.250000
|
||||
v -0.230912 -1.304796 0.250000
|
||||
v -0.230912 -1.304796 -0.250000
|
||||
v 0.250000 -1.304796 -0.230912
|
||||
v -0.250000 -1.304796 -0.230912
|
||||
v 0.250000 -0.812392 -0.144088
|
||||
v -0.250000 -0.812392 -0.144088
|
||||
v -0.250000 -1.304796 0.230912
|
||||
v 0.250000 -1.304796 0.230912
|
||||
v -0.250000 -0.812392 0.144088
|
||||
v 0.250000 -0.812392 0.144088
|
||||
v -0.437500 -1.308594 0.437500
|
||||
v -0.437500 -1.308594 -0.437500
|
||||
v 0.437500 -1.308594 0.437500
|
||||
v 0.437500 -1.308594 -0.437500
|
||||
v -0.982963 -1.120590 -0.000000
|
||||
v -0.017037 -1.379410 -0.000000
|
||||
v -0.513853 0.630150 0.000000
|
||||
v 0.452072 0.371331 -0.000000
|
||||
v -0.500000 -1.250000 0.500000
|
||||
v -0.500000 -1.250000 -0.500000
|
||||
v -0.030890 0.500741 0.500000
|
||||
v -0.030890 0.500741 -0.500000
|
||||
v 0.695060 -1.120590 0.695060
|
||||
v 0.012047 -1.379410 0.012047
|
||||
v 0.363349 0.630150 0.363349
|
||||
v -0.319663 0.371331 -0.319663
|
||||
v 0.707107 -1.250000 0.000000
|
||||
v 0.000000 -1.250000 0.707107
|
||||
v 0.375396 0.500741 -0.331711
|
||||
v -0.331710 0.500741 0.375396
|
||||
v 0.695060 -1.120590 -0.695060
|
||||
v 0.012047 -1.379410 -0.012047
|
||||
v 0.363349 0.630150 -0.363349
|
||||
v -0.319663 0.371331 0.319663
|
||||
v 0.000000 -1.250000 -0.707107
|
||||
v 0.707107 -1.250000 -0.000000
|
||||
v -0.331711 0.500741 -0.375396
|
||||
v 0.375396 0.500741 0.331710
|
||||
vt 0.133333 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.133333 0.750000
|
||||
vt 0.533333 1.000000
|
||||
vt 0.400000 0.750000
|
||||
vt 0.533333 0.000000
|
||||
vt 0.400000 0.250000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.533333 1.000000
|
||||
vt 0.533333 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt 0.999900 0.000100
|
||||
vt 0.999900 0.999900
|
||||
vt 0.000100 0.999900
|
||||
vt 0.000100 0.000100
|
||||
vt -0.000000 -0.500000
|
||||
vt 1.000000 -0.500000
|
||||
vt 1.000000 1.312500
|
||||
vt -0.000000 1.312500
|
||||
vt -0.000000 -0.375000
|
||||
vt 1.000000 -0.375000
|
||||
vt 1.000000 1.437500
|
||||
vt -0.000000 1.437500
|
||||
vt -0.000000 -0.500000
|
||||
vt 1.000000 -0.500000
|
||||
vt 1.000000 1.312500
|
||||
vt -0.000000 1.312500
|
||||
vt -0.000000 -0.375000
|
||||
vt 1.000000 -0.375000
|
||||
vt 1.000000 1.437500
|
||||
vt -0.000000 1.437500
|
||||
vt -0.000000 -0.500000
|
||||
vt 1.000000 -0.500000
|
||||
vt 1.000000 1.312500
|
||||
vt -0.000000 1.312500
|
||||
vt -0.000000 -0.375000
|
||||
vt 1.000000 -0.375000
|
||||
vt 1.000000 1.437500
|
||||
vt -0.000000 1.437500
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.7071 0.0000 0.7071
|
||||
vn -0.7071 -0.0000 0.7071
|
||||
vn 0.9848 0.1736 0.0000
|
||||
vn -0.9848 0.1736 -0.0000
|
||||
vn 0.0000 0.1736 -0.9848
|
||||
vn -0.0000 0.1736 0.9848
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 0.9659 -0.2588 -0.0000
|
||||
vn 0.7071 -0.0000 -0.7071
|
||||
vn -0.6830 -0.2588 -0.6830
|
||||
vn -0.7071 -0.0000 -0.7071
|
||||
vn -0.6830 -0.2588 0.6830
|
||||
g fire_bowl_hanging_Cube.009_greek_fire_bowl.png
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/4/2 4/3/2 8/5/2 7/6/2
|
||||
f 7/6/3 8/5/3 6/7/3 5/8/3
|
||||
f 5/8/4 6/7/4 2/2/4 1/1/4
|
||||
f 3/4/5 7/6/5 5/8/5 1/1/5
|
||||
f 34/9/5 36/10/5 35/11/5 33/12/5
|
||||
g fire_bowl_hanging_Cube.009_fire_basic_flame_animated.png
|
||||
f 10/13/6 12/14/6 11/15/6 9/16/6
|
||||
f 14/17/7 16/18/7 15/19/7 13/20/7
|
||||
f 18/21/8 20/22/8 19/23/8 17/24/8
|
||||
f 22/25/9 24/26/9 23/27/9 21/28/9
|
||||
f 26/29/10 28/30/10 27/31/10 25/32/10
|
||||
f 30/33/11 32/34/11 31/35/11 29/36/11
|
||||
g fire_bowl_hanging_Cube.009_greek_chain.png
|
||||
f 37/37/12 38/38/12 40/39/12 39/40/12
|
||||
f 41/41/13 42/42/13 44/43/13 43/44/13
|
||||
f 45/45/14 46/46/14 48/47/14 47/48/14
|
||||
f 49/49/15 50/50/15 52/51/15 51/52/15
|
||||
f 53/53/16 54/54/16 56/55/16 55/56/16
|
||||
f 57/57/17 58/58/17 60/59/17 59/60/17
|
109
models/greek_lamp.obj
Normal file
@ -0,0 +1,109 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o lamp_Cube.004
|
||||
v -0.187500 -0.500000 0.187500
|
||||
v -0.187500 -0.375000 0.187500
|
||||
v -0.187500 -0.500000 -0.187500
|
||||
v -0.187500 -0.375000 -0.187500
|
||||
v 0.187500 -0.500000 0.187500
|
||||
v 0.187500 -0.375000 0.187500
|
||||
v 0.187500 -0.500000 -0.187500
|
||||
v 0.187500 -0.375000 -0.187500
|
||||
v 0.187500 -0.437500 0.125000
|
||||
v 0.187500 -0.375000 0.125000
|
||||
v 0.187500 -0.437500 -0.125000
|
||||
v 0.187500 -0.375000 -0.125000
|
||||
v 0.312500 -0.437500 0.125000
|
||||
v 0.312500 -0.375000 0.125000
|
||||
v 0.312500 -0.437500 -0.125000
|
||||
v 0.312500 -0.375000 -0.125000
|
||||
v -0.312500 -0.437500 0.062500
|
||||
v -0.312500 -0.312500 0.062500
|
||||
v -0.312500 -0.437500 -0.062500
|
||||
v -0.312500 -0.312500 -0.062500
|
||||
v -0.187500 -0.437500 0.062500
|
||||
v -0.187500 -0.312500 0.062500
|
||||
v -0.187500 -0.437500 -0.062500
|
||||
v -0.187500 -0.312500 -0.062500
|
||||
v 0.231694 -0.375000 0.044194
|
||||
v 0.231694 -0.250000 0.044194
|
||||
v 0.143306 -0.375000 -0.044194
|
||||
v 0.143306 -0.250000 -0.044194
|
||||
v 0.231694 -0.375000 -0.044194
|
||||
v 0.231694 -0.250000 -0.044194
|
||||
v 0.143306 -0.375000 0.044194
|
||||
v 0.143306 -0.250000 0.044194
|
||||
vt 0.000000 0.500000
|
||||
vt 0.125000 0.500000
|
||||
vt 0.125000 0.875000
|
||||
vt 0.000000 0.875000
|
||||
vt 0.125000 1.000000
|
||||
vt 0.500000 0.875000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.625000 0.875000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.625000 0.500000
|
||||
vt 0.500000 0.375000
|
||||
vt 0.125000 0.375000
|
||||
vt 0.125000 -0.000000
|
||||
vt 0.500000 -0.000000
|
||||
vt 0.500000 0.375000
|
||||
vt 0.500000 0.312500
|
||||
vt 0.625000 0.312500
|
||||
vt 0.625000 0.375000
|
||||
vt 0.687500 0.312500
|
||||
vt 0.625000 0.062500
|
||||
vt 0.687500 0.062500
|
||||
vt 0.625000 0.000000
|
||||
vt 0.500000 0.062500
|
||||
vt 0.500000 0.000000
|
||||
vt 0.750000 0.562500
|
||||
vt 0.625000 0.562500
|
||||
vt 0.625000 0.312500
|
||||
vt 0.750000 0.312500
|
||||
vt -0.000000 0.375000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.125000 0.250000
|
||||
vt 0.125000 0.375000
|
||||
vt 0.125000 0.000000
|
||||
vt 0.125000 0.125000
|
||||
vt -0.000000 0.125000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.125000 0.500000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.750000 0.000000
|
||||
vt 0.750000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.7071 0.0000 -0.7071
|
||||
vn -0.7071 0.0000 -0.7071
|
||||
g lamp_Cube.004_greek_lamp.png
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/3/2 8/6/2 7/7/2
|
||||
f 7/8/3 8/6/3 6/9/3 5/10/3
|
||||
f 5/11/4 6/9/4 2/2/4 1/12/4
|
||||
f 3/13/5 7/14/5 5/11/5 1/12/5
|
||||
f 8/6/6 4/3/6 2/2/6 6/9/6
|
||||
f 11/15/2 12/16/2 16/17/2 15/18/2
|
||||
f 15/19/3 16/17/3 14/20/3 13/21/3
|
||||
f 13/22/4 14/20/4 10/23/4 9/24/4
|
||||
f 11/25/5 15/26/5 13/27/5 9/28/5
|
||||
f 16/17/6 12/16/6 10/23/6 14/20/6
|
||||
f 17/29/1 18/30/1 20/31/1 19/32/1
|
||||
f 23/33/3 24/34/3 22/35/3 21/36/3
|
||||
f 19/32/5 23/37/5 21/38/5 17/29/5
|
||||
f 24/34/6 20/31/6 18/30/6 22/35/6
|
||||
g lamp_Cube.004_greek_lamp.png_flame
|
||||
f 27/39/7 28/40/7 26/41/7 25/42/7
|
||||
f 31/43/8 32/44/8 30/45/8 29/46/8
|
126
models/greek_shutters.obj
Normal file
@ -0,0 +1,126 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o shutters_Cube.008
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.500000 -0.500000 0.375000
|
||||
v -0.500000 0.500000 0.375000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v 0.500000 -0.500000 0.375000
|
||||
v 0.500000 0.500000 0.375000
|
||||
v -0.500000 -0.500000 0.375000
|
||||
v -0.500000 0.500000 0.375000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v 0.500000 -0.500000 0.375000
|
||||
v 0.500000 0.500000 0.375000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v -1.000000 -0.500000 0.500000
|
||||
v -1.000000 0.500000 0.500000
|
||||
v 1.000000 -0.500000 0.375000
|
||||
v 1.000000 0.500000 0.375000
|
||||
v 1.000000 0.500000 0.500000
|
||||
v -1.000000 0.500000 0.375000
|
||||
v 1.000000 -0.500000 0.500000
|
||||
v -1.000000 -0.500000 0.375000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 -0.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888816 0.000094
|
||||
vt 0.888816 0.999906
|
||||
vt 0.000094 0.999906
|
||||
vt 0.000094 0.000094
|
||||
vt 0.888889 0.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 0.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.444455 0.000094
|
||||
vt 0.444455 0.999906
|
||||
vt 0.000094 0.999906
|
||||
vt 0.000094 0.000094
|
||||
vt 0.444444 0.000000
|
||||
vt 0.444444 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.888889 0.500000
|
||||
vt 0.888889 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.888889 0.500000
|
||||
vt 0.888889 -0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.888889 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.888889 0.000000
|
||||
vt 0.888889 1.000000
|
||||
vt 0.444444 1.000000
|
||||
vt 0.444444 0.000000
|
||||
vt 0.888816 0.000094
|
||||
vt 0.888816 0.999906
|
||||
vt 0.444455 0.999906
|
||||
vt 0.444455 0.000094
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
g shutters_Cube.008_greek_shutters_closed
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 7/5/2 8/6/2 6/7/2 5/8/2
|
||||
f 3/9/3 4/10/3 8/11/3 7/12/3
|
||||
f 5/13/4 6/14/4 2/15/4 1/16/4
|
||||
f 3/17/5 7/18/5 5/19/5 1/20/5
|
||||
f 8/21/6 4/22/6 2/23/6 6/24/6
|
||||
g shutters_Cube.008_greek_shutters_open
|
||||
f 22/25/1 24/26/1 17/27/1 18/28/1
|
||||
f 19/29/2 20/30/2 21/31/2 23/32/2
|
||||
f 9/33/2 10/34/2 12/35/2 11/36/2
|
||||
f 15/37/1 16/38/1 14/39/1 13/40/1
|
||||
f 23/41/4 21/42/4 16/43/4 15/44/4
|
||||
f 24/45/3 22/46/3 10/47/3 9/48/3
|
||||
f 23/49/5 15/50/5 13/51/5 19/52/5
|
||||
f 18/53/6 12/54/6 10/55/6 22/56/6
|
||||
f 16/57/6 21/58/6 20/59/6 14/60/6
|
||||
f 11/61/5 17/62/5 24/63/5 9/64/5
|
||||
f 13/65/3 14/66/3 20/67/3 19/68/3
|
||||
f 11/69/4 12/70/4 18/71/4 17/72/4
|
138
models/greek_vase_amphora.obj
Normal file
@ -0,0 +1,138 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o vase_amphora_Cube.005
|
||||
v -0.125000 -0.500000 0.125000
|
||||
v -0.250000 0.000000 0.250000
|
||||
v -0.125000 -0.500000 -0.125000
|
||||
v -0.250000 0.000000 -0.250000
|
||||
v 0.125000 -0.500000 0.125000
|
||||
v 0.250000 0.000000 0.250000
|
||||
v 0.125000 -0.500000 -0.125000
|
||||
v 0.250000 0.000000 -0.250000
|
||||
v -0.125000 0.250000 0.125000
|
||||
v -0.125000 0.500000 0.125000
|
||||
v -0.125000 0.250000 -0.125000
|
||||
v -0.125000 0.500000 -0.125000
|
||||
v 0.125000 0.250000 0.125000
|
||||
v 0.125000 0.500000 0.125000
|
||||
v 0.125000 0.250000 -0.125000
|
||||
v 0.125000 0.500000 -0.125000
|
||||
v -0.187500 0.500000 0.187500
|
||||
v 0.187500 0.500000 0.187500
|
||||
v -0.187500 0.500000 -0.187500
|
||||
v 0.187500 0.500000 -0.187500
|
||||
v -0.250000 0.437500 0.062500
|
||||
v 0.250000 0.437500 0.062500
|
||||
v -0.250000 0.437500 -0.062500
|
||||
v 0.250000 0.437500 -0.062500
|
||||
v -0.250000 0.250000 0.062500
|
||||
v 0.250000 0.250000 0.062500
|
||||
v -0.250000 0.250000 -0.062500
|
||||
v 0.250000 0.250000 -0.062500
|
||||
v -0.250000 0.250000 0.250000
|
||||
v -0.250000 0.250000 -0.250000
|
||||
v 0.250000 0.250000 -0.250000
|
||||
v 0.250000 0.250000 0.250000
|
||||
v -0.125000 0.437500 0.062500
|
||||
v -0.125000 0.437500 -0.062500
|
||||
v 0.125000 0.437500 0.062500
|
||||
v 0.125000 0.437500 -0.062500
|
||||
vt 0.375000 -0.000000
|
||||
vt 0.500000 0.500000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.125000 -0.000000
|
||||
vt 0.375000 -0.000000
|
||||
vt 0.500000 0.500000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.125000 -0.000000
|
||||
vt 0.375000 -0.000000
|
||||
vt 0.500000 0.500000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.125000 -0.000000
|
||||
vt 0.375000 -0.000000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.000000 0.500000
|
||||
vt 0.125000 -0.000000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.625000 0.750000
|
||||
vt 0.625000 1.000000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.500000 0.750000
|
||||
vt -0.000000 0.750000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.125000 1.000000
|
||||
vt 0.125000 0.750000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.125000 1.000000
|
||||
vt 0.125000 0.750000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.125000 1.000000
|
||||
vt 0.125000 0.750000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.125000 1.000000
|
||||
vt 0.125000 0.750000
|
||||
vt 0.625000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.875000
|
||||
vt 0.625000 0.875000
|
||||
vt 0.625000 0.875000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.750000 1.000000
|
||||
vt 0.625000 1.000000
|
||||
vt 0.625000 0.750000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.500000 0.562500
|
||||
vt 0.625000 0.562500
|
||||
vt 0.125000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.812500
|
||||
vt 0.125000 0.812500
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 0.750000
|
||||
vt -0.000000 0.750000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.000000 0.750000
|
||||
vt 0.500000 0.750000
|
||||
vt -0.000000 0.750000
|
||||
vt 0.875000 0.875000
|
||||
vt 1.000000 0.875000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.875000 1.000000
|
||||
vn -0.9701 -0.2425 0.0000
|
||||
vn 0.0000 -0.2425 -0.9701
|
||||
vn 0.9701 -0.2425 0.0000
|
||||
vn 0.0000 -0.2425 0.9701
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
g vase_amphora_Cube.005_greek_vase_amphra
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||
f 7/9/3 8/10/3 6/11/3 5/12/3
|
||||
f 5/13/4 6/14/4 2/15/4 1/16/4
|
||||
f 3/17/5 7/18/5 5/19/5 1/20/5
|
||||
f 6/11/6 8/10/6 31/21/6 32/22/6
|
||||
f 9/23/7 10/24/7 12/25/7 11/26/7
|
||||
f 11/27/8 12/28/8 16/29/8 15/30/8
|
||||
f 15/31/6 16/32/6 14/33/6 13/34/6
|
||||
f 13/35/9 14/36/9 10/37/9 9/38/9
|
||||
f 17/39/10 18/40/10 20/41/10 19/42/10
|
||||
f 23/43/10 21/44/10 33/45/10 34/46/10
|
||||
f 24/47/6 22/48/6 26/49/6 28/50/6
|
||||
f 21/51/7 23/52/7 27/53/7 25/54/7
|
||||
f 31/55/10 30/56/10 29/57/10 32/58/10
|
||||
f 4/3/7 2/2/7 29/59/7 30/60/7
|
||||
f 2/15/9 6/14/9 32/61/9 29/62/9
|
||||
f 8/7/8 4/6/8 30/63/8 31/64/8
|
||||
f 22/65/10 24/66/10 36/67/10 35/68/10
|
123
models/greek_vase_stamnos.obj
Normal file
@ -0,0 +1,123 @@
|
||||
# Blender v2.92.0 OBJ File: 'greek.blend'
|
||||
# www.blender.org
|
||||
o vase_stamnos_Cube.006
|
||||
v -0.187500 -0.500000 0.187500
|
||||
v -0.312500 -0.250000 0.312500
|
||||
v -0.187500 -0.500000 -0.187500
|
||||
v -0.312500 -0.250000 -0.312500
|
||||
v 0.187500 -0.500000 0.187500
|
||||
v 0.312500 -0.250000 0.312500
|
||||
v 0.187500 -0.500000 -0.187500
|
||||
v 0.312500 -0.250000 -0.312500
|
||||
v 0.187500 0.000000 0.187500
|
||||
v 0.187500 0.000000 -0.187500
|
||||
v -0.187500 0.000000 -0.187500
|
||||
v -0.187500 0.000000 0.187500
|
||||
v -0.250000 0.062500 0.250000
|
||||
v 0.250000 0.062500 0.250000
|
||||
v -0.250000 0.062500 -0.250000
|
||||
v 0.250000 0.062500 -0.250000
|
||||
v -0.312500 -0.062500 0.312500
|
||||
v -0.312500 -0.062500 -0.312500
|
||||
v 0.312500 -0.062500 -0.312500
|
||||
v 0.312500 -0.062500 0.312500
|
||||
v 0.187500 0.062500 0.187500
|
||||
v 0.187500 0.062500 -0.187500
|
||||
v -0.187500 0.062500 -0.187500
|
||||
v -0.187500 0.062500 0.187500
|
||||
v 0.312500 -0.125000 0.062500
|
||||
v 0.375000 -0.125000 0.062500
|
||||
v 0.312500 -0.125000 -0.062500
|
||||
v 0.375000 -0.125000 -0.062500
|
||||
v -0.375000 -0.125000 0.062500
|
||||
v -0.312500 -0.125000 0.062500
|
||||
v -0.375000 -0.125000 -0.062500
|
||||
v -0.312500 -0.125000 -0.062500
|
||||
vt 0.875000 0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.375000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.875000 0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.375000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.875000 0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.375000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.875000 0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.375000 0.250000
|
||||
vt 0.500000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.375000 0.000000
|
||||
vt 0.375000 0.375000
|
||||
vt 0.000000 0.375000
|
||||
vt 1.000000 0.437500
|
||||
vt 0.375000 0.437500
|
||||
vt 0.875000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 0.562500
|
||||
vt 0.875000 0.562500
|
||||
vt -0.000000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.375000 0.437500
|
||||
vt 1.000000 0.437500
|
||||
vt 0.875000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.375000 0.437500
|
||||
vt 1.000000 0.437500
|
||||
vt 0.875000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 1.000000 0.437500
|
||||
vt 0.375000 0.437500
|
||||
vt 0.875000 0.500000
|
||||
vt 0.875000 0.562500
|
||||
vt 0.500000 0.562500
|
||||
vt 0.562500 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.500000 0.875000
|
||||
vt 0.562500 0.875000
|
||||
vt 0.687500 1.000000
|
||||
vt 0.625000 1.000000
|
||||
vt 0.625000 0.875000
|
||||
vt 0.687500 0.875000
|
||||
vn -0.8944 -0.4472 0.0000
|
||||
vn 0.0000 -0.4472 -0.8944
|
||||
vn 0.8944 -0.4472 0.0000
|
||||
vn 0.0000 -0.4472 0.8944
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.8944 -0.4472
|
||||
vn 0.0000 0.8944 0.4472
|
||||
vn 0.4472 0.8944 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -0.4472 0.8944 0.0000
|
||||
g vase_stamnos_Cube.006_greek_vase_stamnos
|
||||
s off
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||
f 7/9/3 8/10/3 6/11/3 5/12/3
|
||||
f 5/13/4 6/14/4 2/15/4 1/16/4
|
||||
f 3/17/5 7/18/5 5/19/5 1/20/5
|
||||
f 6/11/6 8/10/6 19/21/6 20/22/6
|
||||
f 10/23/7 11/24/7 23/25/7 22/26/7
|
||||
f 13/27/8 14/28/8 16/29/8 15/30/8
|
||||
f 19/31/9 18/32/9 11/33/9 10/34/9
|
||||
f 17/35/10 20/36/10 9/37/10 12/38/10
|
||||
f 20/22/11 19/21/11 10/23/11 9/39/11
|
||||
f 4/3/12 2/2/12 17/40/12 18/41/12
|
||||
f 2/15/13 6/14/13 20/36/13 17/35/13
|
||||
f 8/7/7 4/6/7 18/32/7 19/31/7
|
||||
f 18/41/14 17/40/14 12/42/14 11/24/14
|
||||
f 11/24/12 12/42/12 24/43/12 23/25/12
|
||||
f 9/39/6 10/23/6 22/26/6 21/44/6
|
||||
f 12/42/13 9/39/13 21/44/13 24/43/13
|
||||
f 25/45/8 26/46/8 28/47/8 27/48/8
|
||||
f 29/49/8 30/50/8 32/51/8 31/52/8
|
BIN
screenshot.png
Normal file
After Width: | Height: | Size: 1.7 MiB |
40
settingtypes.txt
Normal file
@ -0,0 +1,40 @@
|
||||
# Comma-separated list of items that can be used as marble.
|
||||
# Order this list by priority (descending) for greeknodes marble aliasing.
|
||||
greek.marble (Marble item list) string building_blocks:Marble,darkage:marble,technic:marble
|
||||
|
||||
# Comma-separated list of items that can be used as limestone for cement-making.
|
||||
greek.limestone (Limestone item list) string default:silver_sandstone,darkage:chalk
|
||||
|
||||
# Comma-separated list of items that can be used as gold blocks for gilded gold.
|
||||
greek.gold_block (Gold Block item list) string default:goldblock
|
||||
|
||||
# Comma-separated list of items that can be used as red clay.
|
||||
# Removing greek:red_clay will prevent it from being registered.
|
||||
greek.red_clay (Red Clay item list) string greek:red_clay
|
||||
|
||||
# Comma-separated list of items that can be used as clay lumps.
|
||||
# This setting is ignored if greek:red_clay is removed from the red clay item list.
|
||||
greek.clay_lump (Clay Lump item list) string default:clay_lump
|
||||
|
||||
# Comma-separated list of items that can be used in place of blue wood.
|
||||
# Removing greek:blue_wood will prevent it from being registered.
|
||||
greek.blue_wood (Blue Wood item list) string greek:blue_wood
|
||||
|
||||
# Comma-separated list of items that can be used as door locks.
|
||||
# Will be used to craft locked doors.
|
||||
greek.door_lock (Door lock item list) string default:steel_ingot,basic_materials:padlock
|
||||
|
||||
# Maximum amount of items vases can hold.
|
||||
greek.vase_max (Maximum Vase capacity) int 10
|
||||
|
||||
# Determines whether the fire bowl will drop a lit or unlit version.
|
||||
greek.fire_bowl_dig_snuff (Snuff Fire Bowl on dig) bool false
|
||||
|
||||
# Enables compatibility with legacy greeknodes mod.
|
||||
# Marble will be aliased to the first valid node found in the greek.marble setting.
|
||||
greek.greeknodes_aliases (Register greeknodes aliases) bool true
|
||||
|
||||
# Convert greeknodes:marble to greek:marble_polished instead of marble from another mod.
|
||||
greek.alias_polished_marble (Alias old marble to polished marble) bool false
|
||||
|
||||
# TODO: Configurable sounds
|
187
stairs.lua
Normal file
@ -0,0 +1,187 @@
|
||||
-- Mostly-custom stair implementation because I don't want to depend on other mods for content and
|
||||
-- the default stairs implementation doesn't allow callbacks or return registered itemnames.
|
||||
|
||||
-- Rotation functions taken from minetest_game/stairs 2021/04/21
|
||||
local function rotate_and_place(itemstack, placer, pointed_thing)
|
||||
local p0 = pointed_thing.under
|
||||
local p1 = pointed_thing.above
|
||||
local param2 = 0
|
||||
|
||||
if placer then
|
||||
local placer_pos = placer:get_pos()
|
||||
if placer_pos then
|
||||
param2 = minetest.dir_to_facedir(vector.subtract(p1, placer_pos))
|
||||
end
|
||||
|
||||
local finepos = minetest.pointed_thing_to_face_pos(placer, pointed_thing)
|
||||
local fpos = finepos.y % 1
|
||||
|
||||
if p0.y - 1 == p1.y or (fpos > 0 and fpos < 0.5)
|
||||
or (fpos < -0.5 and fpos > -0.999999999) then
|
||||
param2 = param2 + 20
|
||||
if param2 == 21 then
|
||||
param2 = 23
|
||||
elseif param2 == 23 then
|
||||
param2 = 21
|
||||
end
|
||||
end
|
||||
end
|
||||
return minetest.item_place(itemstack, placer, pointed_thing, param2)
|
||||
end
|
||||
|
||||
local function slab_place(itemstack, placer, pointed_thing)
|
||||
local under = minetest.get_node(pointed_thing.under)
|
||||
local wield_item = itemstack:get_name()
|
||||
local player_name = placer and placer:get_player_name() or ""
|
||||
|
||||
if under and under.name:find("^stairs:slab_") then
|
||||
-- place slab using under node orientation
|
||||
local dir = minetest.dir_to_facedir(vector.subtract(
|
||||
pointed_thing.above, pointed_thing.under), true)
|
||||
|
||||
local p2 = under.param2
|
||||
|
||||
-- Placing a slab on an upside down slab should make it right-side up.
|
||||
if p2 >= 20 and dir == 8 then
|
||||
p2 = p2 - 20
|
||||
-- same for the opposite case: slab below normal slab
|
||||
elseif p2 <= 3 and dir == 4 then
|
||||
p2 = p2 + 20
|
||||
end
|
||||
|
||||
-- else attempt to place node with proper param2
|
||||
minetest.item_place_node(ItemStack(wield_item), placer, pointed_thing, p2)
|
||||
if not minetest.is_creative_enabled(player_name) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
else
|
||||
return rotate_and_place(itemstack, placer, pointed_thing)
|
||||
end
|
||||
end
|
||||
|
||||
-- Use up-to-date stairs function if found
|
||||
if minetest.global_exists("stairs") then
|
||||
stairs.register_stair("_", nil, {}, {})
|
||||
stairs.register_slab("_", nil, {}, {})
|
||||
|
||||
rotate_and_place = minetest.registered_nodes["stairs:stair__"].on_place
|
||||
slab_place = minetest.registered_nodes["stairs:slab__"].on_place
|
||||
|
||||
minetest.unregister_item("stairs:stair__")
|
||||
minetest.unregister_item("stairs:slab__")
|
||||
end
|
||||
|
||||
local stairdefs = {
|
||||
["stair"] = {
|
||||
description = "%s Stair",
|
||||
node_box = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
|
||||
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
|
||||
},
|
||||
on_place = rotate_and_place,
|
||||
recipes = {{
|
||||
{0, 0, 1},
|
||||
{0, 1, 1},
|
||||
{1, 1, 1},
|
||||
}, {
|
||||
{1, 0, 0},
|
||||
{1, 1, 0},
|
||||
{1, 1, 1},
|
||||
}},
|
||||
craft_total = 8,
|
||||
},
|
||||
["slab"] = {
|
||||
description = "%s Slab",
|
||||
node_box = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
on_place = slab_place,
|
||||
recipes = {{{1, 1, 1}}},
|
||||
craft_total = 6,
|
||||
},
|
||||
["stair_inner"] = {
|
||||
description = "Inner %s Stair",
|
||||
node_box = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
|
||||
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
|
||||
{-0.5, 0.0, -0.5, 0.0, 0.5, 0.0},
|
||||
},
|
||||
on_place = rotate_and_place,
|
||||
recipes = {{
|
||||
{0, 1, 0},
|
||||
{1, 1, 1},
|
||||
{1, 1, 1},
|
||||
}},
|
||||
craft_total = 8,
|
||||
},
|
||||
["stair_outer"] = {
|
||||
description = "Outer %s Stair",
|
||||
node_box ={
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
|
||||
{-0.5, 0.0, 0.0, 0.0, 0.5, 0.5},
|
||||
},
|
||||
on_place = rotate_and_place,
|
||||
recipes = {{
|
||||
{0, 1, 0},
|
||||
{1, 1, 1},
|
||||
}},
|
||||
craft_total = 6,
|
||||
},
|
||||
}
|
||||
|
||||
return function(node, definition, craftitem)
|
||||
for shape, data in pairs(stairdefs) do
|
||||
local itemname = node:gsub(":", ":" .. shape .. "_")
|
||||
local def = table.copy(definition)
|
||||
|
||||
def.description = data.description:format(definition.description)
|
||||
def.drawtype = "nodebox"
|
||||
def.paramtype = "light"
|
||||
def.sunlight_propagates = definition.sunlight_propagates ~= false
|
||||
def.paramtype2 = definition.paramtype2:find("color") and "colorfacedir" or "facedir"
|
||||
def.node_box = {
|
||||
type = "fixed",
|
||||
fixed = data.node_box
|
||||
}
|
||||
def.on_place = data.on_place
|
||||
|
||||
minetest.register_node(itemname, def)
|
||||
minetest.register_alias((itemname:gsub("^.+:", "stairs:")), itemname)
|
||||
|
||||
if craftitem and data.recipes and data.craft_total then
|
||||
local items = {[0] = "", craftitem}
|
||||
local count = 0
|
||||
for _, recipe in pairs(data.recipes) do
|
||||
count = 0
|
||||
local filled = {}
|
||||
|
||||
-- Fill recipe template with items
|
||||
for row in pairs(recipe) do
|
||||
filled[row] = {}
|
||||
for col in pairs(recipe[row]) do
|
||||
count = count + recipe[row][col] -- will be 0 or 1
|
||||
filled[row][col] = items[recipe[row][col]]
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = itemname .. " " .. data.craft_total,
|
||||
recipe = filled,
|
||||
})
|
||||
end
|
||||
|
||||
-- Calculate reverse recipe (stair -> craftitem)
|
||||
local divbycount = data.craft_total % count == 0 -- GCF:1 ratio
|
||||
local divby2 = data.craft_total % 2 == 0 and count % 2 == 0 -- 2:1 ratio
|
||||
local rev = {} -- Reverse recipe
|
||||
for i = 1, ((divbycount and data.craft_total / count) or (divby2 and data.craft_total / 2) or data.craft_total) do
|
||||
rev[i] = itemname
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = craftitem .. " " .. ((divbycount and 1) or (divby2 and count / 2) or count),
|
||||
recipe = rev,
|
||||
type = "shapeless",
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
BIN
textures/greek_acroterion.png
Normal file
After Width: | Height: | Size: 920 B |
BIN
textures/greek_acroterion_corner.png
Normal file
After Width: | Height: | Size: 533 B |
BIN
textures/greek_blue_wood.png
Normal file
After Width: | Height: | Size: 520 B |
BIN
textures/greek_cement.png
Normal file
After Width: | Height: | Size: 533 B |
BIN
textures/greek_chain.png
Normal file
After Width: | Height: | Size: 135 B |
BIN
textures/greek_chain_inv.png
Normal file
After Width: | Height: | Size: 208 B |
BIN
textures/greek_door_1.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
textures/greek_door_1_inv.png
Normal file
After Width: | Height: | Size: 407 B |
BIN
textures/greek_door_2.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
textures/greek_door_2_inv.png
Normal file
After Width: | Height: | Size: 406 B |
BIN
textures/greek_door_3.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
textures/greek_door_3_inv.png
Normal file
After Width: | Height: | Size: 383 B |
BIN
textures/greek_door_4.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
textures/greek_door_4_inv.png
Normal file
After Width: | Height: | Size: 416 B |
BIN
textures/greek_door_handle.png
Normal file
After Width: | Height: | Size: 131 B |
BIN
textures/greek_door_inv_handle.png
Normal file
After Width: | Height: | Size: 467 B |
BIN
textures/greek_door_palette.png
Normal file
After Width: | Height: | Size: 68 B |
BIN
textures/greek_fire.png
Normal file
After Width: | Height: | Size: 442 B |
BIN
textures/greek_fire_bowl.png
Normal file
After Width: | Height: | Size: 958 B |
BIN
textures/greek_fire_bowl_inv.png
Normal file
After Width: | Height: | Size: 154 B |
BIN
textures/greek_fire_bowl_lit_inv.png
Normal file
After Width: | Height: | Size: 152 B |
BIN
textures/greek_gilded_gold.png
Normal file
After Width: | Height: | Size: 662 B |
BIN
textures/greek_lamp.png
Normal file
After Width: | Height: | Size: 665 B |
BIN
textures/greek_lamp_inv.png
Normal file
After Width: | Height: | Size: 636 B |
BIN
textures/greek_marble_cobble.png
Normal file
After Width: | Height: | Size: 764 B |
BIN
textures/greek_marble_painted_center_1.png
Normal file
After Width: | Height: | Size: 880 B |
BIN
textures/greek_marble_painted_center_10.png
Normal file
After Width: | Height: | Size: 888 B |
BIN
textures/greek_marble_painted_center_11.png
Normal file
After Width: | Height: | Size: 865 B |
BIN
textures/greek_marble_painted_center_12.png
Normal file
After Width: | Height: | Size: 871 B |
BIN
textures/greek_marble_painted_center_2.png
Normal file
After Width: | Height: | Size: 864 B |
BIN
textures/greek_marble_painted_center_3.png
Normal file
After Width: | Height: | Size: 920 B |
BIN
textures/greek_marble_painted_center_4.png
Normal file
After Width: | Height: | Size: 904 B |
BIN
textures/greek_marble_painted_center_5.png
Normal file
After Width: | Height: | Size: 886 B |
BIN
textures/greek_marble_painted_center_6.png
Normal file
After Width: | Height: | Size: 846 B |
BIN
textures/greek_marble_painted_center_7.png
Normal file
After Width: | Height: | Size: 886 B |
BIN
textures/greek_marble_painted_center_8.png
Normal file
After Width: | Height: | Size: 881 B |
BIN
textures/greek_marble_painted_center_9.png
Normal file
After Width: | Height: | Size: 822 B |
BIN
textures/greek_marble_painted_corner_1.png
Normal file
After Width: | Height: | Size: 844 B |
BIN
textures/greek_marble_painted_corner_10.png
Normal file
After Width: | Height: | Size: 916 B |
BIN
textures/greek_marble_painted_corner_11.png
Normal file
After Width: | Height: | Size: 909 B |
BIN
textures/greek_marble_painted_corner_12.png
Normal file
After Width: | Height: | Size: 892 B |
BIN
textures/greek_marble_painted_corner_2.png
Normal file
After Width: | Height: | Size: 893 B |
BIN
textures/greek_marble_painted_corner_3.png
Normal file
After Width: | Height: | Size: 863 B |
BIN
textures/greek_marble_painted_corner_4.png
Normal file
After Width: | Height: | Size: 871 B |
BIN
textures/greek_marble_painted_corner_5.png
Normal file
After Width: | Height: | Size: 869 B |
BIN
textures/greek_marble_painted_corner_6.png
Normal file
After Width: | Height: | Size: 873 B |
BIN
textures/greek_marble_painted_corner_7.png
Normal file
After Width: | Height: | Size: 888 B |
BIN
textures/greek_marble_painted_corner_8.png
Normal file
After Width: | Height: | Size: 907 B |
BIN
textures/greek_marble_painted_corner_9.png
Normal file
After Width: | Height: | Size: 905 B |
BIN
textures/greek_marble_painted_edge_1.png
Normal file
After Width: | Height: | Size: 857 B |
BIN
textures/greek_marble_painted_edge_10.png
Normal file
After Width: | Height: | Size: 892 B |
BIN
textures/greek_marble_painted_edge_11.png
Normal file
After Width: | Height: | Size: 891 B |
BIN
textures/greek_marble_painted_edge_12.png
Normal file
After Width: | Height: | Size: 890 B |
BIN
textures/greek_marble_painted_edge_2.png
Normal file
After Width: | Height: | Size: 891 B |
BIN
textures/greek_marble_painted_edge_3.png
Normal file
After Width: | Height: | Size: 856 B |
BIN
textures/greek_marble_painted_edge_4.png
Normal file
After Width: | Height: | Size: 872 B |
BIN
textures/greek_marble_painted_edge_5.png
Normal file
After Width: | Height: | Size: 878 B |
BIN
textures/greek_marble_painted_edge_6.png
Normal file
After Width: | Height: | Size: 863 B |
BIN
textures/greek_marble_painted_edge_7.png
Normal file
After Width: | Height: | Size: 878 B |
BIN
textures/greek_marble_painted_edge_8.png
Normal file
After Width: | Height: | Size: 892 B |
BIN
textures/greek_marble_painted_edge_9.png
Normal file
After Width: | Height: | Size: 899 B |
BIN
textures/greek_marble_painted_palette.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
textures/greek_marble_pillar_base_corinthian.png
Normal file
After Width: | Height: | Size: 771 B |
BIN
textures/greek_marble_pillar_base_doric.png
Normal file
After Width: | Height: | Size: 748 B |
BIN
textures/greek_marble_pillar_base_ionic.png
Normal file
After Width: | Height: | Size: 770 B |
BIN
textures/greek_marble_pillar_head_corinthian.png
Normal file
After Width: | Height: | Size: 796 B |
BIN
textures/greek_marble_pillar_head_doric.png
Normal file
After Width: | Height: | Size: 797 B |
BIN
textures/greek_marble_pillar_head_ionic.png
Normal file
After Width: | Height: | Size: 785 B |
BIN
textures/greek_marble_pillar_head_ionic_side.png
Normal file
After Width: | Height: | Size: 802 B |
BIN
textures/greek_marble_pillar_side.png
Normal file
After Width: | Height: | Size: 777 B |
BIN
textures/greek_marble_pillar_side.xcf
Normal file
BIN
textures/greek_marble_pillar_top.png
Normal file
After Width: | Height: | Size: 775 B |
BIN
textures/greek_marble_polished.png
Normal file
After Width: | Height: | Size: 679 B |
BIN
textures/greek_marble_polished_block.png
Normal file
After Width: | Height: | Size: 759 B |
BIN
textures/greek_marble_tile.xcf
Normal file
BIN
textures/greek_marble_tile_1.png
Normal file
After Width: | Height: | Size: 783 B |
BIN
textures/greek_marble_tile_2.png
Normal file
After Width: | Height: | Size: 774 B |