Converting castle into a modpack (#34)
Everything is now in separate submods. This modpack rmains and acts as aggregation container for them.
17
.gitattributes
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
|
||||
# Custom for Visual Studio
|
||||
*.cs diff=csharp
|
||||
|
||||
# Standard to msysgit
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
47
.gitignore
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
# =========================
|
||||
# Operating System Files
|
||||
# =========================
|
||||
|
||||
# OSX
|
||||
# =========================
|
||||
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
36
.gitmodules
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
[submodule "anvil"]
|
||||
path = anvil
|
||||
url = https://github.com/minetest-mods/anvil.git
|
||||
[submodule "castle_farming"]
|
||||
path = castle_farming
|
||||
url = https://github.com/minetest-mods/castle_farming.git
|
||||
[submodule "castle_gates"]
|
||||
path = castle_gates
|
||||
url = https://github.com/minetest-mods/castle_gates.git
|
||||
[submodule "castle_lighting"]
|
||||
path = castle_lighting
|
||||
url = https://github.com/minetest-mods/castle_lighting.git
|
||||
[submodule "castle_masonry"]
|
||||
path = castle_masonry
|
||||
url = https://github.com/minetest-mods/castle_masonry.git
|
||||
[submodule "castle_shields"]
|
||||
path = castle_shields
|
||||
url = https://github.com/minetest-mods/castle_shields.git
|
||||
[submodule "castle_storage"]
|
||||
path = castle_storage
|
||||
url = https://github.com/minetest-mods/castle_storage.git
|
||||
[submodule "castle_tapestries"]
|
||||
path = castle_tapestries
|
||||
url = https://github.com/minetest-mods/castle_tapestries.git
|
||||
[submodule "castle_weapons"]
|
||||
path = castle_weapons
|
||||
url = https://github.com/minetest-mods/castle_weapons.git
|
||||
[submodule "crafting_bench"]
|
||||
path = crafting_bench
|
||||
url = https://github.com/minetest-mods/crafting_bench.git
|
||||
[submodule "orbs_of_time"]
|
||||
path = orbs_of_time
|
||||
url = https://github.com/minetest-mods/orbs_of_time.git
|
||||
[submodule "ropes"]
|
||||
path = ropes
|
||||
url = https://github.com/minetest-mods/ropes.git
|
21
LICENSE
@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Minetest Mods Team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
59
README.txt
@ -1,58 +1,3 @@
|
||||
=-=-=-=-=-=-=-=-=-=
|
||||
This modpack began life as the Castles Mod by Philipbenr And DanDuncombe.
|
||||
|
||||
Castles Mod
|
||||
by: Philipbenr And DanDuncombe
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=
|
||||
|
||||
Licence: MIT, LGPLv2.1 (Crossbow)
|
||||
|
||||
see: LICENSE
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=
|
||||
|
||||
This is a mod all about creating castles and castle dungeons. Many of the nodes are used for the outer-walls or dungeons.
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=
|
||||
|
||||
Contains as of now:
|
||||
|
||||
--Walls, Corner-walls,
|
||||
--Castlestone Stairs, Slabs, and Pillars
|
||||
--Jailbars
|
||||
--Hides
|
||||
--Arrows and Arrowslits
|
||||
--Rubble
|
||||
--Doors
|
||||
--Weapons
|
||||
--Chandeliers
|
||||
--Tapestries
|
||||
--and more!
|
||||
|
||||
=-=-=-=-=-=-=-=-=-=
|
||||
|
||||
Big release coming soon. ;) Stay tuned.
|
||||
|
||||
Planned features (anything with question mark means that I am either unsure or don't know how to accomplish it ;)
|
||||
|
||||
--More/Better weapons
|
||||
--More decorations
|
||||
--More nodes
|
||||
--Redone columns
|
||||
--More doors
|
||||
--Gatehouse mod
|
||||
--Armor
|
||||
--More magical items (mana, orbs, potions...)
|
||||
--Crowns/capes/player decor
|
||||
--Flags
|
||||
--Brewery/Liquor (liquor effects is another thing altogether)
|
||||
--Tannery?
|
||||
--Dye Vats?
|
||||
--Books? (that is an interesting one... I'll write a post on it later)
|
||||
--Guards?
|
||||
--Player status (King, queen, etc.)?
|
||||
--Foods?
|
||||
--Horses/Livestock?
|
||||
--Ruins?
|
||||
|
||||
--Modpack Configurator
|
||||
It contains a variety of items useful for building castles and castle dungeons.
|
1
anvil
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 42c84f0f694f820aae141df32192b458aaeecf51
|
133
arrowslit.lua
@ -1,133 +0,0 @@
|
||||
minetest.register_alias("castle:arrowslit", "castle:arrowslit_stonewall")
|
||||
minetest.register_alias("castle:arrowslit_hole", "castle:arrowslit_stonewall_hole")
|
||||
minetest.register_alias("castle:arrowslit", "castle:arrowslit_stonewall_cross")
|
||||
|
||||
local arrowslit = {}
|
||||
|
||||
arrowslit.types = {
|
||||
{"stonewall", "Stonewall", "castle_stonewall", "castle:stonewall"},
|
||||
{"cobble", "Cobble", "default_cobble", "default:cobble"},
|
||||
{"stonebrick", "Stonebrick", "default_stone_brick", "default:stonebrick"},
|
||||
{"sandstonebrick", "Sandstone Brick", "default_sandstone_brick", "default:sandstonebrick"},
|
||||
{"desertstonebrick", "Desert Stone Brick", "default_desert_stone_brick", "default:desert_stonebrick"},
|
||||
{"stone", "Stone", "default_stone", "default:stone"},
|
||||
{"sandstone", "Sandstone", "default_sandstone", "default:sandstone"},
|
||||
{"desertstone", "Desert Stone", "default_desert_stone", "default:desert_stone"},
|
||||
}
|
||||
|
||||
for _, row in ipairs(arrowslit.types) do
|
||||
local name = row[1]
|
||||
local desc = row[2]
|
||||
local tile = row[3]
|
||||
local craft_material = row[4]
|
||||
-- Node Definition
|
||||
minetest.register_node("castle:arrowslit_"..name, {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Arrowslit",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.375000,-0.500000,-0.062500,0.375000,-0.312500},
|
||||
{0.062500,-0.375000,-0.500000,0.500000,0.375000,-0.312500},
|
||||
{-0.500000,0.375000,-0.500000,0.500000,0.500000,-0.312500},
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,-0.375000,-0.312500},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.312500},
|
||||
},
|
||||
},
|
||||
})
|
||||
minetest.register_node("castle:arrowslit_"..name.."_cross", {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Arrowslit with Cross",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.125000,-0.500000,-0.062500,0.375000,-0.312500},
|
||||
{0.062500,-0.125000,-0.500000,0.500000,0.375000,-0.312500},
|
||||
{-0.500000,0.375000,-0.500000,0.500000,0.500000,-0.312500},
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,-0.375000,-0.312500},
|
||||
{0.062500,-0.375000,-0.500000,0.500000,-0.250000,-0.312500},
|
||||
{-0.500000,-0.375000,-0.500000,-0.062500,-0.250000,-0.312500},
|
||||
{-0.500000,-0.250000,-0.500000,-0.187500,-0.125000,-0.312500},
|
||||
{0.187500,-0.250000,-0.500000,0.500000,-0.125000,-0.312500},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.312500},
|
||||
},
|
||||
},
|
||||
})
|
||||
minetest.register_node("castle:arrowslit_"..name.."_hole", {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Arrowslit with Hole",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.375000,-0.500000,-0.125000,0.375000,-0.312500},
|
||||
{0.125000,-0.375000,-0.500000,0.500000,0.375000,-0.312500},
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,-0.375000,-0.312500},
|
||||
{0.062500,-0.125000,-0.500000,0.125000,0.375000,-0.312500},
|
||||
{-0.125000,-0.125000,-0.500000,-0.062500,0.375000,-0.312500},
|
||||
{-0.500000,0.375000,-0.500000,0.500000,0.500000,-0.312500},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,0.500000,-0.312500},
|
||||
},
|
||||
},
|
||||
})
|
||||
if craft_material then
|
||||
--Choose craft material
|
||||
minetest.register_craft({
|
||||
output = "castle:arrowslit_"..name.." 6",
|
||||
recipe = {
|
||||
{craft_material,"", craft_material},
|
||||
{craft_material,"", craft_material},
|
||||
{craft_material,"", craft_material} },
|
||||
})
|
||||
end
|
||||
if craft_material then
|
||||
minetest.register_craft({
|
||||
output = "castle:arrowslit_"..name.."_cross",
|
||||
recipe = {
|
||||
{"castle:arrowslit_"..name} },
|
||||
})
|
||||
end
|
||||
if craft_material then
|
||||
minetest.register_craft({
|
||||
output = "castle:arrowslit_"..name.."_hole",
|
||||
recipe = {
|
||||
{"castle:arrowslit_"..name.."_cross"} },
|
||||
})
|
||||
end
|
||||
if craft_material then
|
||||
minetest.register_craft({
|
||||
output = "castle:arrowslit_"..name,
|
||||
recipe = {
|
||||
{"castle:arrowslit_"..name.."_hole"} },
|
||||
})
|
||||
end
|
||||
end
|
1
castle_farming
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 2a4c263e6045e7d1a5ae5f2a3d87be20491ff238
|
1
castle_gates
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 80334ba480901480b1fc144b3b591b8a36b4eea3
|
1
castle_lighting
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 7b6c8f2249f4c2ab9ab4d8046f6c11aa133232ee
|
1
castle_masonry
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 94b25b549b502ceeff8d5aa596ddc977745f43ed
|
1
castle_shields
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit ce853d7bed30a8eb8b646cac17114d12aefe0266
|
1
castle_storage
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 2b9e5f6bcbefa36894815eecf6a7d01829ad1b8d
|
1
castle_tapestries
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 955afb8885d2378cbd7038188726705c608c0c09
|
1
castle_weapons
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 5f5232a685cc371e9decceb155467e462b6220fc
|
1
crafting_bench
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 3aa4cfb8816b96d559154f918971f2709dd03d73
|
443
crossbow.lua
@ -1,443 +0,0 @@
|
||||
--[[
|
||||
Minetest Mod - Simple Shooter [shooter] 0.5.3
|
||||
=======================================
|
||||
|
||||
License Source Code: 2013 Stuart Jones - LGPL v2.1
|
||||
|
||||
License Textures: Stuart Jones - WTFPL
|
||||
|
||||
Licence Models: Stuart Jones - CC-BY-SA 3.0
|
||||
|
||||
License Sounds: freesound.org
|
||||
|
||||
--]]
|
||||
local crossbow={}
|
||||
|
||||
minetest.register_alias("crossbow", "castle:crossbow")
|
||||
minetest.register_alias("bolt", "castle:crossbow_bolt")
|
||||
|
||||
CROSSBOW_USES = 300
|
||||
CROSSBOW_BOLT_TOOL_CAPS = {damage_groups={fleshy=4}}
|
||||
CROSSBOW_BOLT_LIFETIME = 60-- 1 minute
|
||||
CROSSBOW_ENABLE_PARTICLE_FX = false
|
||||
CROSSBOW_ENABLE_PROTECTION = true
|
||||
CROSSBOW_EXPLOSION_TEXTURE = "castle_crossbow_hit.png"
|
||||
CROSSBOW_ALLOW_NODES = true
|
||||
CROSSBOW_ALLOW_ENTITIES = true
|
||||
CROSSBOW_ALLOW_PLAYERS = true
|
||||
CROSSBOW_PLAYER_OFFSET = {x=0, y=1, z=0}
|
||||
CROSSBOW_ENTITY_OFFSET = {x=0, y=0, z=0}
|
||||
CROSSBOW_ENTITIES = {
|
||||
"mobs:chicken",
|
||||
"mobs:cow",
|
||||
"mobs:dirt_monster",
|
||||
"mobs:dungeon_master",
|
||||
"mobs:goat",
|
||||
"mobs:mese_monster",
|
||||
"mobs:npc",
|
||||
"mobs:oerkki",
|
||||
"mobs:pig",
|
||||
"mobs:pumba",
|
||||
"mobs:rat",
|
||||
"mobs:rhino",
|
||||
"mobs:sand_monster",
|
||||
"mobs:sheep",
|
||||
"mobs:spider",
|
||||
"mobs:stone_monster",
|
||||
"mobs:tree_monster",
|
||||
}
|
||||
|
||||
if minetest.is_singleplayer() == true then
|
||||
CROSSBOW_ALLOW_ENTITIES = true
|
||||
CROSSBOW_ALLOW_PLAYERS = true
|
||||
end
|
||||
|
||||
local allowed_entities = {}
|
||||
for _,v in ipairs(CROSSBOW_ENTITIES) do
|
||||
allowed_entities[v] = 1
|
||||
end
|
||||
|
||||
local function get_dot_product(v1, v2)
|
||||
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z
|
||||
end
|
||||
|
||||
local function get_particle_pos(p, v, d)
|
||||
return vector.add(p, vector.multiply(v, {x=d, y=d, z=d}))
|
||||
end
|
||||
|
||||
function crossbow:spawn_particles(pos, texture)
|
||||
if CROSSBOW_ENABLE_PARTICLE_FX == true then
|
||||
if type(texture) ~= "string" then
|
||||
texture = CROSSBOW_EXPLOSION_TEXTURE
|
||||
end
|
||||
local spread = {x=0.1, y=0.1, z=0.1}
|
||||
minetest.add_particlespawner(15, 0.3,
|
||||
vector.subtract(pos, spread), vector.add(pos, spread),
|
||||
{x=-1, y=1, z=-1}, {x=1, y=2, z=1},
|
||||
{x=-2, y=-2, z=-2}, {x=2, y=-2, z=2},
|
||||
0.1, 0.75, 1, 2, false, texture
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
function crossbow:punch_node(pos, def)
|
||||
local node = minetest.get_node(pos)
|
||||
if not node then
|
||||
return
|
||||
end
|
||||
local item = minetest.registered_items[node.name]
|
||||
if not item then
|
||||
return
|
||||
end
|
||||
if CROSSBOW_ENABLE_PROTECTION then
|
||||
if minetest.is_protected(pos, def.name) then
|
||||
return
|
||||
end
|
||||
end
|
||||
if item.groups then
|
||||
for k, v in pairs(def.groups) do
|
||||
local level = item.groups[k] or 0
|
||||
if level >= v then
|
||||
minetest.remove_node(pos)
|
||||
if item.tiles then
|
||||
if item.tiles[1] then
|
||||
crossbow:spawn_particles(pos, item.tiles[1])
|
||||
end
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function crossbow:is_valid_object(object)
|
||||
if object then
|
||||
if object:is_player() == true then
|
||||
return CROSSBOW_ALLOW_PLAYERS
|
||||
end
|
||||
if CROSSBOW_ALLOW_ENTITIES == true then
|
||||
local luaentity = object:get_luaentity()
|
||||
if luaentity then
|
||||
if luaentity.name then
|
||||
if allowed_entities[luaentity.name] then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function crossbow:get_intersect_pos(ray, plane, collisionbox)
|
||||
local v = vector.subtract(ray.pos, plane.pos)
|
||||
local r1 = get_dot_product(v, plane.normal)
|
||||
local r2 = get_dot_product(ray.dir, plane.normal)
|
||||
if r2 ~= 0 then
|
||||
local t = -(r1 / r2)
|
||||
local td = vector.multiply(ray.dir, {x=t, y=t, z=t})
|
||||
local pt = vector.add(ray.pos, td)
|
||||
local pd = vector.subtract(pt, plane.pos)
|
||||
if math.abs(pd.x) < collisionbox[4] and
|
||||
math.abs(pd.y) < collisionbox[5] and
|
||||
math.abs(pd.z) < collisionbox[6] then
|
||||
return pt
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function crossbow:process_round(round)
|
||||
local target = {object=nil, distance=10000}
|
||||
local p1 = round.pos
|
||||
local v1 = round.ray
|
||||
for _,ref in ipairs(castle.objects) do
|
||||
local p2 = vector.add(ref.pos, ref.offset)
|
||||
if p1 and p2 and ref.name ~= round.name then
|
||||
local d = vector.distance(p1, p2)
|
||||
if d < round.def.step and d < target.distance then
|
||||
local ray = {pos=p1, dir=v1}
|
||||
local plane = {pos=p2, normal={x=-1, y=0, z=-1}}
|
||||
local pos = crossbow:get_intersect_pos(ray, plane, ref.collisionbox)
|
||||
if pos then
|
||||
target.object = ref.object
|
||||
target.pos = pos
|
||||
target.distance = d
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if target.object and target.pos then
|
||||
local success, pos = minetest.line_of_sight(p1, target.pos, 1)
|
||||
if success then
|
||||
local user = minetest.get_player_by_name(round.name)
|
||||
if user then
|
||||
target.object:punch(user, nil, round.def.tool_caps, v1)
|
||||
crossbow:spawn_particles(target.pos, CROSSBOW_EXPLOSION_TEXTURE)
|
||||
end
|
||||
return 1
|
||||
elseif pos and CROSSBOW_ALLOW_NODES == true then
|
||||
crossbow:punch_node(pos, round.def)
|
||||
return 1
|
||||
end
|
||||
elseif CROSSBOW_ALLOW_NODES == true then
|
||||
local d = round.def.step
|
||||
local p2 = vector.add(p1, vector.multiply(v1, {x=d, y=d, z=d}))
|
||||
local success, pos = minetest.line_of_sight(p1, p2, 1)
|
||||
if pos then
|
||||
crossbow:punch_node(pos, round.def)
|
||||
return 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function get_animation_frame(dir)
|
||||
local angle = math.atan(dir.y)
|
||||
local frame = 90 - math.floor(angle * 360 / math.pi)
|
||||
if frame < 1 then
|
||||
frame = 1
|
||||
elseif frame > 180 then
|
||||
frame = 180
|
||||
end
|
||||
return frame
|
||||
end
|
||||
|
||||
local function get_target_pos(p1, p2, dir, offset)
|
||||
local d = vector.distance(p1, p2) - offset
|
||||
local td = vector.multiply(dir, {x=d, y=d, z=d})
|
||||
return vector.add(p1, td)
|
||||
end
|
||||
|
||||
local function punch_object(puncher, object)
|
||||
if puncher and crossbow:is_valid_object(object) then
|
||||
if puncher ~= object then
|
||||
local dir = puncher:get_look_dir()
|
||||
local p1 = puncher:getpos()
|
||||
local p2 = object:getpos()
|
||||
local tpos = get_target_pos(p1, p2, dir, 0)
|
||||
crossbow:spawn_particles(tpos, CROSSBOW_EXPLOSION_TEXTURE)
|
||||
object:punch(puncher, nil, CROSSBOW_BOLT_TOOL_CAPS, dir)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function stop_crossbow_bolt(object, pos, stuck)
|
||||
local acceleration = {x=0, y=-10, z=0}
|
||||
if stuck == true then
|
||||
pos = pos or object:getpos()
|
||||
acceleration = {x=0, y=0, z=0}
|
||||
object:moveto(pos)
|
||||
end
|
||||
object:set_properties({
|
||||
physical = true,
|
||||
collisionbox = {-1/8,-1/8,-1/8, 1/8,1/8,1/8},
|
||||
})
|
||||
object:setvelocity({x=0, y=0, z=0})
|
||||
object:setacceleration(acceleration)
|
||||
end
|
||||
|
||||
minetest.register_craftitem("castle:crossbow_bolt", {
|
||||
description = "Bolt",
|
||||
stack_max = 20,
|
||||
inventory_image = "castle_crossbow_bolt_inv.png",
|
||||
})
|
||||
|
||||
minetest.register_entity("castle:crossbow_bolt_entity", {
|
||||
physical = false,
|
||||
visual = "mesh",
|
||||
mesh = "castle_crossbow_bolt.b3d",
|
||||
visual_size = {x=1.0, y=1.0},
|
||||
textures = {
|
||||
"castle_crossbow_bolt_uv.png"
|
||||
},
|
||||
timer = 0,
|
||||
lifetime = CROSSBOW_BOLT_LIFETIME,
|
||||
player = nil,
|
||||
state = "init",
|
||||
node_pos = nil,
|
||||
collisionbox = {0,0,0, 0,0,0},
|
||||
on_activate = function(self, staticdata)
|
||||
self.object:set_armor_groups({immortal=1})
|
||||
if staticdata == "expired" then
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
on_punch = function(self, puncher)
|
||||
if puncher then
|
||||
if puncher:is_player() then
|
||||
local stack = "castle:crossbow_bolt"
|
||||
local inv = puncher:get_inventory()
|
||||
if inv:room_for_item("main", stack) then
|
||||
inv:add_item("main", stack)
|
||||
self.object:remove()
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
on_step = function(self, dtime)
|
||||
if self.state == "init" then
|
||||
return
|
||||
end
|
||||
self.timer = self.timer + dtime
|
||||
self.lifetime = self.lifetime - dtime
|
||||
if self.lifetime < 0 then
|
||||
self.object:remove()
|
||||
return
|
||||
elseif self.state == "dropped" then
|
||||
return
|
||||
elseif self.state == "stuck" then
|
||||
if self.timer > 1 then
|
||||
if self.node_pos then
|
||||
local node = minetest.get_node(self.node_pos)
|
||||
if node.name then
|
||||
local item = minetest.registered_items[node.name]
|
||||
if item then
|
||||
if not item.walkable then
|
||||
self.state = "dropped"
|
||||
stop_crossbow_bolt(self.object)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
self.timer = 0
|
||||
end
|
||||
return
|
||||
end
|
||||
if self.timer > 0.2 then
|
||||
local pos = self.object:getpos()
|
||||
local dir = vector.normalize(self.object:getvelocity())
|
||||
local frame = get_animation_frame(dir)
|
||||
self.object:set_animation({x=frame, y=frame}, 0)
|
||||
local objects = minetest.get_objects_inside_radius(pos, 5)
|
||||
for _,obj in ipairs(objects) do
|
||||
if crossbow:is_valid_object(obj) then
|
||||
local collisionbox = {-0.25,-1.0,-0.25, 0.25,0.8,0.25}
|
||||
local offset = CROSSBOW_PLAYER_OFFSET
|
||||
if not obj:is_player() then
|
||||
offset = CROSSBOW_ENTITY_OFFSET
|
||||
local ent = obj:get_luaentity()
|
||||
if ent then
|
||||
local def = minetest.registered_entities[ent.name]
|
||||
collisionbox = def.collisionbox or collisionbox
|
||||
end
|
||||
end
|
||||
local opos = vector.add(obj:getpos(), offset)
|
||||
local ray = {pos=pos, dir=dir}
|
||||
local plane = {pos=opos, normal={x=-1, y=0, z=-1}}
|
||||
local ipos = crossbow:get_intersect_pos(ray, plane, collisionbox)
|
||||
if ipos then
|
||||
punch_object(self.player, obj)
|
||||
end
|
||||
end
|
||||
end
|
||||
local p = vector.add(pos, vector.multiply(dir, {x=5, y=5, z=5}))
|
||||
local _, npos = minetest.line_of_sight(pos, p, 1)
|
||||
if npos then
|
||||
local node = minetest.get_node(npos)
|
||||
local tpos = get_target_pos(pos, npos, dir, 0.66)
|
||||
self.node_pos = npos
|
||||
self.state = "stuck"
|
||||
stop_crossbow_bolt(self.object, tpos, true)
|
||||
minetest.sound_play("castle_crossbow_bolt", {gain = 0.08, max_hear_distance = 2})
|
||||
end
|
||||
self.timer = 0
|
||||
end
|
||||
end,
|
||||
get_staticdata = function(self)
|
||||
return "expired"
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_tool("castle:crossbow_loaded", {
|
||||
description = "Crossbow",
|
||||
inventory_image = "castle_crossbow_loaded.png",
|
||||
groups = {not_in_creative_inventory=1},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
minetest.sound_play("castle_crossbow_click", {object=user})
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:add_wear(65535/CROSSBOW_USES)
|
||||
end
|
||||
itemstack = "castle:crossbow 1 "..itemstack:get_wear()
|
||||
local pos = user:getpos()
|
||||
local dir = user:get_look_dir()
|
||||
local yaw = user:get_look_yaw()
|
||||
if pos and dir and yaw then
|
||||
pos.y = pos.y + 1.5
|
||||
local obj = minetest.add_entity(pos, "castle:crossbow_bolt_entity")
|
||||
local ent = nil
|
||||
if obj then
|
||||
ent = obj:get_luaentity()
|
||||
end
|
||||
if ent then
|
||||
obj:set_properties({
|
||||
textures = {"castle_crossbow_bolt_uv.png"}
|
||||
})
|
||||
minetest.sound_play("castle_crossbow_shoot", {object=obj})
|
||||
local frame = get_animation_frame(dir)
|
||||
obj:setyaw(yaw + math.pi)
|
||||
obj:set_animation({x=frame, y=frame}, 0)
|
||||
obj:setvelocity({x=dir.x * 14, y=dir.y * 14, z=dir.z * 14})
|
||||
if pointed_thing.type ~= "nothing" then
|
||||
local ppos = minetest.get_pointed_thing_position(pointed_thing, false)
|
||||
local _, npos = minetest.line_of_sight(pos, ppos, 1)
|
||||
if npos then
|
||||
ppos = npos
|
||||
pointed_thing.type = "node"
|
||||
end
|
||||
if pointed_thing.type == "object" then
|
||||
punch_object(user, pointed_thing.ref)
|
||||
elseif pointed_thing.type == "node" then
|
||||
local node = minetest.get_node(ppos)
|
||||
local tpos = get_target_pos(pos, ppos, dir, 0.66)
|
||||
minetest.after(0.2, function(object, pos, npos)
|
||||
ent.node_pos = npos
|
||||
ent.state = "stuck"
|
||||
stop_crossbow_bolt(object, pos, true)
|
||||
minetest.sound_play("castle_crossbow_bolt", {gain = 0.08, max_hear_distance = 2})
|
||||
end, obj, tpos, ppos)
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
obj:setacceleration({x=dir.x * -3, y=-5, z=dir.z * -3})
|
||||
ent.player = ent.player or user
|
||||
ent.state = "flight"
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_tool("castle:crossbow", {
|
||||
description = "Crossbow",
|
||||
inventory_image = "castle_crossbow_inv.png",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local inv = user:get_inventory()
|
||||
if inv:contains_item("main", "castle:crossbow_bolt") then
|
||||
minetest.sound_play("castle_crossbow_reload", {object=user})
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
inv:remove_item("main", "castle:crossbow_bolt 1")
|
||||
end
|
||||
return "castle:crossbow_loaded 1 "..itemstack:get_wear()
|
||||
end
|
||||
minetest.sound_play("castle_crossbow_click", {object=user})
|
||||
end,
|
||||
})
|
||||
|
||||
-----------
|
||||
--Crafting
|
||||
-----------
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'castle:crossbow',
|
||||
recipe = {
|
||||
{'default:steel_ingot', 'default:stick', 'default:steel_ingot'},
|
||||
{'farming:string', 'farming:string', 'farming:string'},
|
||||
{'', 'default:stick', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:crossbow_bolt 6",
|
||||
recipe = {
|
||||
{'default:stick', 'default:stick', 'default:steel_ingot'},
|
||||
}
|
||||
})
|
10
depends.txt
@ -1,10 +0,0 @@
|
||||
default
|
||||
stairs
|
||||
doors
|
||||
farming
|
||||
unifieddyes
|
||||
building_blocks?
|
||||
asphalt?
|
||||
streets?
|
||||
moreblocks?
|
||||
xpanes?
|
@ -1 +1 @@
|
||||
This is a mod all about creating castles and castle dungeons. Many of the nodes are used for the outer-walls or dungeons.
|
||||
This is a modpack all about creating castles and castle dungeons.
|
||||
|
395
init.lua
@ -1,395 +0,0 @@
|
||||
castle = {}
|
||||
|
||||
dofile(minetest.get_modpath("castle").."/pillars.lua")
|
||||
dofile(minetest.get_modpath("castle").."/arrowslit.lua")
|
||||
dofile(minetest.get_modpath("castle").."/tapestry.lua")
|
||||
dofile(minetest.get_modpath("castle").."/jailbars.lua")
|
||||
dofile(minetest.get_modpath("castle").."/town_item.lua")
|
||||
dofile(minetest.get_modpath("castle").."/shields_decor.lua")
|
||||
dofile(minetest.get_modpath("castle").."/murder_hole.lua")
|
||||
dofile(minetest.get_modpath("castle").."/orbs.lua")
|
||||
dofile(minetest.get_modpath("castle").."/rope.lua")
|
||||
dofile(minetest.get_modpath("castle").."/crossbow.lua")
|
||||
|
||||
-- nodes
|
||||
|
||||
minetest.register_node("castle:stonewall", {
|
||||
description = "Castle Wall",
|
||||
drawtype = "normal",
|
||||
tiles = {"castle_stonewall.png"},
|
||||
paramtype = "light",
|
||||
drop = "castle:stonewall",
|
||||
groups = {cracky=3},
|
||||
sunlight_propagates = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("castle:rubble", {
|
||||
description = "Castle Rubble",
|
||||
drawtype = "normal",
|
||||
tiles = {"castle_rubble.png"},
|
||||
paramtype = "light",
|
||||
groups = {crumbly=3,falling_node=1},
|
||||
sounds = default.node_sound_gravel_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:stonewall",
|
||||
recipe = {
|
||||
{"default:cobble"},
|
||||
{"default:desert_stone"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:rubble",
|
||||
recipe = {
|
||||
{"castle:stonewall"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:rubble 2",
|
||||
recipe = {
|
||||
{"default:gravel"},
|
||||
{"default:desert_stone"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("castle:stonewall_corner", {
|
||||
drawtype = "normal",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
description = "Castle Corner",
|
||||
tiles = {"castle_corner_stonewall_tb.png^[transformR90",
|
||||
"castle_corner_stonewall_tb.png^[transformR180",
|
||||
"castle_corner_stonewall1.png",
|
||||
"castle_stonewall.png",
|
||||
"castle_stonewall.png",
|
||||
"castle_corner_stonewall2.png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:stonewall_corner",
|
||||
recipe = {
|
||||
{"", "castle:stonewall"},
|
||||
{"castle:stonewall", "default:sandstone"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("castle:roofslate", {
|
||||
drawtype = "raillike",
|
||||
description = "Roof Slates",
|
||||
inventory_image = "castle_slate.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
tiles = {'castle_slate.png'},
|
||||
climbable = true,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
groups = {cracky=3,attached_node=1},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("castle:hides", {
|
||||
drawtype = "signlike",
|
||||
description = "Hides",
|
||||
inventory_image = "castle_hide.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
tiles = {'castle_hide.png'},
|
||||
climbable = true,
|
||||
paramtype2 = "wallmounted",
|
||||
legacy_wallmounted = true,
|
||||
groups = {dig_immediate=2},
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "castle:hides 6",
|
||||
recipe = { "wool:white" , "bucket:bucket_water" },
|
||||
replacements = {
|
||||
{ 'bucket:bucket_water', 'bucket:bucket_empty' }
|
||||
}
|
||||
})
|
||||
|
||||
local mod_building_blocks = minetest.get_modpath("building_blocks")
|
||||
local mod_streets = minetest.get_modpath("streets") or minetest.get_modpath("asphalt")
|
||||
|
||||
if mod_building_blocks then
|
||||
minetest.register_craft({
|
||||
output = "castle:roofslate 4",
|
||||
recipe = {
|
||||
{ "building_blocks:Tar" , "default:gravel" },
|
||||
{ "default:gravel", "building_blocks:Tar" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "castle:roofslate 4",
|
||||
recipe = {
|
||||
{ "default:gravel", "building_blocks:Tar" },
|
||||
{ "building_blocks:Tar" , "default:gravel" }
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
if mod_streets then
|
||||
minetest.register_craft( {
|
||||
output = "castle:roofslate 4",
|
||||
recipe = {
|
||||
{ "streets:asphalt" , "default:gravel" },
|
||||
{ "default:gravel", "streets:asphalt" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "castle:roofslate 4",
|
||||
recipe = {
|
||||
{ "default:gravel", "streets:asphalt" },
|
||||
{ "streets:asphalt" , "default:gravel" }
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
if not (mod_building_blocks or mod_streets) then
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "castle:roofslate",
|
||||
recipe = "default:gravel",
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
doors.register("castle:oak_door", {
|
||||
tiles = {{ name = "castle_door_oak.png", backface_culling = true }},
|
||||
description = "Oak Door",
|
||||
inventory_image = "castle_oak_door_inv.png",
|
||||
protected = true,
|
||||
groups = { choppy = 2, door = 1 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
recipe = {
|
||||
{"default:tree", "default:tree"},
|
||||
{"default:tree", "default:tree"},
|
||||
{"default:tree", "default:tree"},
|
||||
}
|
||||
})
|
||||
|
||||
doors.register("castle:jail_door", {
|
||||
tiles = {{ name = "castle_door_jail.png", backface_culling = true }},
|
||||
description = "Jail Door",
|
||||
inventory_image = "castle_jail_door_inv.png",
|
||||
protected = true,
|
||||
groups = { cracky = 2, door = 1},
|
||||
sound_open = "doors_steel_door_open",
|
||||
sound_close = "doors_steel_door_close",
|
||||
recipe = {
|
||||
{"castle:jailbars", "castle:jailbars"},
|
||||
{"castle:jailbars", "castle:jailbars"},
|
||||
{"castle:jailbars", "castle:jailbars"},
|
||||
}
|
||||
})
|
||||
|
||||
function default.get_ironbound_chest_formspec(pos)
|
||||
local spos = pos.x .. "," .. pos.y .. "," ..pos.z
|
||||
local formspec =
|
||||
"size[8,9]"..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"list[nodemeta:".. spos .. ";main;0,0;8,4;]"..
|
||||
"list[current_player;main;0,5;8,4;]"
|
||||
return formspec
|
||||
end
|
||||
|
||||
local function has_ironbound_chest_privilege(meta, player)
|
||||
local name = ""
|
||||
if player then
|
||||
if minetest.check_player_privs(player, "protection_bypass") then
|
||||
return true
|
||||
end
|
||||
name = player:get_player_name()
|
||||
end
|
||||
if name ~= meta:get_string("owner") then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
minetest.register_node("castle:ironbound_chest",{
|
||||
drawtype = "nodebox",
|
||||
description = "Ironbound Chest",
|
||||
tiles = {"castle_ironbound_chest_top.png",
|
||||
"castle_ironbound_chest_top.png",
|
||||
"castle_ironbound_chest_side.png",
|
||||
"castle_ironbound_chest_side.png",
|
||||
"castle_ironbound_chest_back.png",
|
||||
"castle_ironbound_chest_front.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=2},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,-0.312500,0.500000,-0.062500,0.312500},
|
||||
{-0.500000,-0.062500,-0.250000,0.500000,0.000000,0.250000},
|
||||
{-0.500000,0.000000,-0.187500,0.500000,0.062500,0.187500},
|
||||
{-0.500000,0.062500,-0.062500,0.500000,0.125000,0.062500},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5,-0.500000,-0.400000,0.5,0.200000,0.4},
|
||||
|
||||
},
|
||||
},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
after_place_node = function(pos, placer)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", placer:get_player_name() or "")
|
||||
meta:set_string("infotext", "Ironbound Chest (owned by "..
|
||||
meta:get_string("owner")..")")
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("infotext", "Ironbound Chest")
|
||||
meta:set_string("owner", "")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 8*4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main") and has_ironbound_chest_privilege(meta, player)
|
||||
end,
|
||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not has_ironbound_chest_privilege(meta, player) then
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" tried to access a locked chest belonging to "..
|
||||
meta:get_string("owner").." at "..
|
||||
minetest.pos_to_string(pos))
|
||||
return 0
|
||||
end
|
||||
return count
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not has_ironbound_chest_privilege(meta, player) then
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" tried to access a locked chest belonging to "..
|
||||
meta:get_string("owner").." at "..
|
||||
minetest.pos_to_string(pos))
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end,
|
||||
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not has_ironbound_chest_privilege(meta, player) then
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" tried to access a locked chest belonging to "..
|
||||
meta:get_string("owner").." at "..
|
||||
minetest.pos_to_string(pos))
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" moves stuff in locked chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" moves stuff to locked chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" takes stuff from locked chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_rightclick = function(pos, node, clicker)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if has_ironbound_chest_privilege(meta, clicker) then
|
||||
minetest.show_formspec(
|
||||
clicker:get_player_name(),
|
||||
"castle:ironbound_chest",
|
||||
default.get_ironbound_chest_formspec(pos)
|
||||
)
|
||||
end
|
||||
end,
|
||||
on_blast = function() end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:ironbound_chest",
|
||||
recipe = {
|
||||
{"default:wood", "default:steel_ingot","default:wood"},
|
||||
{"default:wood", "default:steel_ingot","default:wood"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_tool("castle:battleaxe", {
|
||||
description = "Battleaxe",
|
||||
inventory_image = "castle_battleaxe.png",
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 2.0,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
choppy={times={[1]=2.10, [2]=0.90, [3]=0.50}, uses=20, maxlevel=3},
|
||||
snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=20, maxlevel=3},
|
||||
},
|
||||
damage_groups = {fleshy=7},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:battleaxe",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:stick","default:steel_ingot"},
|
||||
{"", "default:stick",""}
|
||||
}
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all("castle", "stonewall", "castle:stonewall", {
|
||||
description = "Stone Wall",
|
||||
tiles = {"castle_stonewall.png"},
|
||||
groups = {cracky=3, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
stairsplus:register_all("castle", "rubble", "castle:rubble", {
|
||||
description = "Rubble",
|
||||
tiles = {"castle_rubble.png"},
|
||||
groups = {cracky=3, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_gravel_defaults(),
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
else
|
||||
stairs.register_stair_and_slab("stonewall", "castle:stonewall",
|
||||
{cracky=3},
|
||||
{"castle_stonewall.png"},
|
||||
"Castle Stonewall Stair",
|
||||
"Castle Stonewall Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
|
||||
stairs.register_stair_and_slab("rubble", "castle:rubble",
|
||||
{cracky=3},
|
||||
{"castle_rubble.png"},
|
||||
"Castle Rubble Stair",
|
||||
"Castle Rubble Slab",
|
||||
default.node_sound_stone_defaults()
|
||||
)
|
||||
end
|
22
jailbars.lua
@ -1,22 +0,0 @@
|
||||
if minetest.get_modpath("xpanes") then
|
||||
xpanes.register_pane("jailbars", {
|
||||
description = "Jail Bars",
|
||||
tiles = {"castle_jailbars.png"},
|
||||
drawtype = "airlike",
|
||||
paramtype = "light",
|
||||
textures = {"castle_jailbars.png", "castle_jailbars.png", "xpanes_space.png"},
|
||||
inventory_image = "castle_jailbars.png",
|
||||
wield_image = "castle_jailbars.png",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
groups = {cracky=1, pane=1},
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}},
|
||||
})
|
||||
end
|
||||
|
||||
for i = 1, 15 do
|
||||
minetest.register_alias("castle:jailbars_"..i, "xpanes:jailbars_"..i)
|
||||
end
|
||||
minetest.register_alias("castle:jailbars", "xpanes:jailbars")
|
@ -1,10 +0,0 @@
|
||||
License Textures: Stuart Jones - WTFPL
|
||||
|
||||
-castle_crossbow_bolt_inv.png
|
||||
-castle_crossbow_bolt_uv.png
|
||||
-castle_crossbow_hit.png
|
||||
|
||||
Licence Models: Stuart Jones - CC-BY-SA 3.0
|
||||
|
||||
-castle_crossbow_bolt.b3d
|
||||
-castle_crossbow_bolt.blend
|
Before Width: | Height: | Size: 157 B |
@ -1,212 +0,0 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'castle_tapestry.blend'
|
||||
# www.blender.org
|
||||
o Cube
|
||||
v -0.500000 0.500000 -0.125000
|
||||
v -0.437500 0.500000 -0.125000
|
||||
v -0.500000 0.500000 1.500000
|
||||
v -0.437500 0.500000 1.500000
|
||||
v -0.437500 -0.500000 1.500000
|
||||
v -0.500000 -0.500000 1.500000
|
||||
v -0.437500 0.125000 -0.250000
|
||||
v -0.500000 0.125000 -0.250000
|
||||
v -0.500000 0.125000 -0.375000
|
||||
v -0.437500 0.125000 -0.375000
|
||||
v -0.437500 0.187500 -0.375000
|
||||
v -0.500000 0.187500 -0.375000
|
||||
v -0.500000 0.312500 -0.500000
|
||||
v -0.437500 0.312500 -0.500000
|
||||
v -0.437500 0.312500 -0.375000
|
||||
v -0.500000 0.312500 -0.375000
|
||||
v -0.500000 0.375000 -0.375000
|
||||
v -0.437500 0.375000 -0.375000
|
||||
v -0.437500 0.375000 -0.250000
|
||||
v -0.500000 0.375000 -0.250000
|
||||
v -0.437500 -0.187500 -0.500000
|
||||
v -0.500000 -0.312500 -0.500000
|
||||
v -0.437500 -0.312500 -0.500000
|
||||
v -0.500000 0.187500 -0.500000
|
||||
v -0.437500 0.187500 -0.500000
|
||||
v -0.500000 0.437500 -0.250000
|
||||
v -0.437500 0.437500 -0.250000
|
||||
v -0.437500 0.437500 -0.125000
|
||||
v -0.500000 0.437500 -0.125000
|
||||
v -0.437500 0.062500 -0.250000
|
||||
v -0.500000 0.062500 -0.250000
|
||||
v -0.437500 0.062500 -0.125000
|
||||
v -0.500000 0.062500 -0.125000
|
||||
v -0.437500 -0.062500 -0.125000
|
||||
v -0.500000 -0.062500 -0.125000
|
||||
v -0.437500 -0.062500 -0.250000
|
||||
v -0.500000 -0.062500 -0.250000
|
||||
v -0.437500 -0.125000 -0.250000
|
||||
v -0.500000 -0.125000 -0.250000
|
||||
v -0.437500 -0.125000 -0.375000
|
||||
v -0.500000 -0.125000 -0.375000
|
||||
v -0.437500 -0.187500 -0.375000
|
||||
v -0.500000 -0.187500 -0.375000
|
||||
v -0.500000 -0.187500 -0.500000
|
||||
v -0.500000 -0.312500 -0.375000
|
||||
v -0.437500 -0.312500 -0.375000
|
||||
v -0.500000 -0.375000 -0.375000
|
||||
v -0.437500 -0.375000 -0.375000
|
||||
v -0.500000 -0.375000 -0.250000
|
||||
v -0.437500 -0.375000 -0.250000
|
||||
v -0.500000 -0.437500 -0.250000
|
||||
v -0.437500 -0.437500 -0.250000
|
||||
v -0.500000 -0.437500 -0.125000
|
||||
v -0.437500 -0.437500 -0.125000
|
||||
v -0.500000 -0.500000 -0.125000
|
||||
v -0.437500 -0.500000 -0.125000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.437500 0.500000 0.500000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.437500 -0.500000 0.500000
|
||||
v -0.500000 0.343750 -0.375000
|
||||
vt 0.062500 0.000000
|
||||
vt 0.062500 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000003 0.000000
|
||||
vt 0.937500 0.250000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.375000
|
||||
vt 0.937500 0.375000
|
||||
vt 0.625000 0.937500
|
||||
vt 0.625000 0.999999
|
||||
vt 0.562500 0.999999
|
||||
vt 0.562500 0.937500
|
||||
vt 0.937500 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.687500 0.937500
|
||||
vt 0.687500 0.999999
|
||||
vt 0.937500 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.062500 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.875000 0.937500
|
||||
vt 0.875000 1.000000
|
||||
vt 0.812500 1.000000
|
||||
vt 0.812500 0.937500
|
||||
vt 0.843750 0.937500
|
||||
vt 0.062500 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.937500 1.000000
|
||||
vt 0.062500 0.375000
|
||||
vt 0.000000 0.375000
|
||||
vt 1.000000 0.937500
|
||||
vt 1.000000 1.000000
|
||||
vt 0.437500 0.937500
|
||||
vt 0.437500 0.999999
|
||||
vt 0.375000 0.999999
|
||||
vt 0.375000 0.937500
|
||||
vt 0.312500 0.999999
|
||||
vt 0.312500 0.937500
|
||||
vt 0.187500 0.937500
|
||||
vt 0.187500 0.999999
|
||||
vt 0.125000 0.999999
|
||||
vt 0.125000 0.937500
|
||||
vt 0.062500 0.937500
|
||||
vt 0.000000 0.937500
|
||||
vt 0.625000 0.000000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.437500
|
||||
vt 0.625000 0.562500
|
||||
vt 0.375000 0.437500
|
||||
vt 0.375000 0.062500
|
||||
vt 0.375000 0.000000
|
||||
vt 0.375000 0.562500
|
||||
vt 0.250000 0.437500
|
||||
vt 0.250000 0.375000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.250000 0.062500
|
||||
vt 0.250000 0.937500
|
||||
vt 0.250000 0.875000
|
||||
vt 0.250000 0.625000
|
||||
vt 0.250000 0.562500
|
||||
vt 0.750000 0.562500
|
||||
vt 0.750000 0.625000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.750000 0.937500
|
||||
vt 0.750000 0.062500
|
||||
vt 0.750000 0.125000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.437500
|
||||
vt 0.875000 0.625000
|
||||
vt 0.875000 0.687500
|
||||
vt 0.875000 0.812500
|
||||
vt 0.875000 0.875000
|
||||
vt 0.875000 0.125000
|
||||
vt 0.875000 0.156250
|
||||
vt 0.875000 0.187500
|
||||
vt 0.875000 0.312500
|
||||
vt 0.875000 0.375000
|
||||
vt 1.000000 0.687500
|
||||
vt 1.000000 0.812500
|
||||
vt 1.000000 0.187500
|
||||
vt 1.000000 0.312500
|
||||
vt 0.125000 0.187500
|
||||
vt 0.125000 0.312500
|
||||
vt 0.000000 0.312500
|
||||
vt 0.000000 0.187500
|
||||
vt 0.125000 0.687500
|
||||
vt 0.125000 0.812500
|
||||
vt 0.000000 0.812500
|
||||
vt 0.000000 0.687500
|
||||
vt 0.125000 0.875000
|
||||
vt 0.125000 0.625000
|
||||
vt 0.125000 0.375000
|
||||
vt 0.125000 0.125000
|
||||
vn 0.000000 1.000000 -0.000000
|
||||
vn -0.000000 -1.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 1.000000 -0.000000 -0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
g Cube_Cube_Material
|
||||
s off
|
||||
f 57/1/1 3/2/1 4/3/1 58/4/1
|
||||
f 31/5/2 30/6/2 32/7/2 33/8/2
|
||||
f 8/9/3 7/10/3 30/11/3 31/12/3
|
||||
f 9/13/2 10/14/2 7/6/2 8/5/2
|
||||
f 12/15/3 11/16/3 10/10/3 9/9/3
|
||||
f 24/17/2 25/18/2 11/14/2 12/13/2
|
||||
f 16/19/1 15/20/1 14/4/1 13/1/1
|
||||
f 17/21/3 18/22/3 15/23/3 16/24/3 61/25/3
|
||||
f 20/26/1 19/27/1 18/20/1 17/19/1
|
||||
f 26/28/3 27/29/3 19/22/3 20/21/3
|
||||
f 29/30/1 28/31/1 27/27/1 26/26/1
|
||||
f 1/32/3 2/33/3 28/29/3 29/28/3
|
||||
f 37/34/3 36/35/3 38/36/3 39/37/3
|
||||
f 39/26/1 38/27/1 40/20/1 41/19/1
|
||||
f 41/37/3 40/36/3 42/38/3 43/39/3
|
||||
f 22/17/2 23/18/2 46/14/2 45/13/2
|
||||
f 45/40/3 46/41/3 48/42/3 47/43/3
|
||||
f 47/13/2 48/14/2 50/6/2 49/5/2
|
||||
f 49/43/3 50/42/3 52/2/3 51/44/3
|
||||
f 51/5/2 52/6/2 54/7/2 53/8/2
|
||||
f 53/44/3 54/2/3 56/3/3 55/45/3
|
||||
f 43/19/1 42/20/1 21/4/1 44/1/1
|
||||
f 14/23/3 25/16/3 24/15/3 13/24/3
|
||||
f 60/18/2 5/33/2 6/29/2 59/17/2
|
||||
f 21/38/3 23/41/3 22/40/3 44/39/3
|
||||
f 57/18/4 59/33/4 6/3/4 3/4/4
|
||||
f 60/3/5 58/4/5 4/18/5 5/33/5
|
||||
f 1/30/1 57/2/1 58/3/1 2/31/1
|
||||
f 56/7/2 60/33/2 59/29/2 55/8/2
|
||||
f 1/46/4 29/47/4 33/48/4 35/49/4 53/9/4 55/10/4 59/3/4 57/4/4
|
||||
f 32/50/5 28/51/5 2/52/5 58/18/5 60/33/5 56/36/5 54/37/5 34/53/5
|
||||
f 34/31/1 36/27/1 37/26/1 35/30/1
|
||||
f 30/54/5 7/55/5 19/56/5 27/57/5 28/51/5 32/50/5
|
||||
f 34/53/5 54/37/5 52/58/5 50/59/5 38/60/5 36/61/5
|
||||
f 53/9/4 35/49/4 37/62/4 39/63/4 49/64/4 51/65/4
|
||||
f 29/47/4 26/66/4 20/67/4 8/68/4 31/69/4 33/48/4
|
||||
f 33/12/3 32/11/3 34/35/3 35/34/3
|
||||
f 49/64/4 39/63/4 41/70/4 43/71/4 45/72/4 47/73/4
|
||||
f 8/68/4 20/67/4 17/74/4 61/75/4 16/76/4 12/77/4 9/78/4
|
||||
f 45/72/4 43/71/4 44/79/4 22/80/4
|
||||
f 12/77/4 16/76/4 13/81/4 24/82/4
|
||||
f 15/83/5 11/84/5 25/85/5 14/86/5
|
||||
f 42/87/5 46/88/5 23/89/5 21/90/5
|
||||
f 38/60/5 50/59/5 48/91/5 46/88/5 42/87/5 40/92/5
|
||||
f 7/55/5 10/93/5 11/84/5 15/83/5 18/94/5 19/56/5
|
||||
f 3/33/6 6/3/6 5/45/6 4/32/6
|
@ -1,220 +0,0 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'castle_tapestry_long.blend'
|
||||
# www.blender.org
|
||||
o Cube
|
||||
v -0.500000 0.500000 -0.125000
|
||||
v -0.437500 0.500000 -0.125000
|
||||
v -0.500000 0.500001 1.500000
|
||||
v -0.437499 0.500000 1.500000
|
||||
v -0.437500 -0.500000 1.500000
|
||||
v -0.500000 -0.500000 1.500000
|
||||
v -0.437500 0.125000 -0.250000
|
||||
v -0.500000 0.125000 -0.250000
|
||||
v -0.500000 0.125000 -0.375000
|
||||
v -0.437500 0.125000 -0.375000
|
||||
v -0.437500 0.187500 -0.375000
|
||||
v -0.500000 0.187500 -0.375000
|
||||
v -0.500000 0.312500 -0.500000
|
||||
v -0.437500 0.312500 -0.500000
|
||||
v -0.437500 0.312500 -0.375000
|
||||
v -0.500000 0.312500 -0.375000
|
||||
v -0.500000 0.375000 -0.375000
|
||||
v -0.437500 0.375000 -0.375000
|
||||
v -0.437500 0.375000 -0.250000
|
||||
v -0.500000 0.375000 -0.250000
|
||||
v -0.437500 -0.187500 -0.500000
|
||||
v -0.500000 -0.312500 -0.500000
|
||||
v -0.437500 -0.312500 -0.500000
|
||||
v -0.500000 0.187500 -0.500000
|
||||
v -0.437500 0.187500 -0.500000
|
||||
v -0.500000 0.437500 -0.250000
|
||||
v -0.437500 0.437500 -0.250000
|
||||
v -0.437500 0.437500 -0.125000
|
||||
v -0.500000 0.437500 -0.125000
|
||||
v -0.437500 0.062500 -0.250000
|
||||
v -0.500000 0.062500 -0.250000
|
||||
v -0.437500 0.062500 -0.125000
|
||||
v -0.500000 0.062500 -0.125000
|
||||
v -0.437500 -0.062500 -0.125000
|
||||
v -0.500000 -0.062500 -0.125000
|
||||
v -0.437500 -0.062500 -0.250000
|
||||
v -0.500000 -0.062500 -0.250000
|
||||
v -0.437500 -0.125000 -0.250000
|
||||
v -0.500000 -0.125000 -0.250000
|
||||
v -0.437500 -0.125000 -0.375000
|
||||
v -0.500000 -0.125000 -0.375000
|
||||
v -0.437500 -0.187500 -0.375000
|
||||
v -0.500000 -0.187500 -0.375000
|
||||
v -0.500000 -0.187500 -0.500000
|
||||
v -0.500000 -0.312500 -0.375000
|
||||
v -0.437500 -0.312500 -0.375000
|
||||
v -0.500000 -0.375000 -0.375000
|
||||
v -0.437500 -0.375000 -0.375000
|
||||
v -0.500000 -0.375000 -0.250000
|
||||
v -0.437500 -0.375000 -0.250000
|
||||
v -0.500000 -0.437500 -0.250000
|
||||
v -0.437500 -0.437500 -0.250000
|
||||
v -0.500000 -0.437500 -0.125000
|
||||
v -0.437500 -0.437500 -0.125000
|
||||
v -0.500000 -0.500000 -0.125000
|
||||
v -0.437500 -0.500000 -0.125000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.437500 0.500000 0.500000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.437500 -0.500000 0.500000
|
||||
v -0.500000 0.500001 2.500000
|
||||
v -0.437499 0.500000 2.500000
|
||||
v -0.437500 -0.500000 2.500000
|
||||
v -0.500000 -0.500000 2.500000
|
||||
v -0.500000 0.343750 -0.375000
|
||||
vt 0.062500 0.000000
|
||||
vt 0.062500 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000003 0.000000
|
||||
vt 0.937500 0.250000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.375000
|
||||
vt 0.937500 0.375000
|
||||
vt 0.625000 0.937500
|
||||
vt 0.625000 0.999999
|
||||
vt 0.562500 0.999999
|
||||
vt 0.562500 0.937500
|
||||
vt 0.937500 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.687500 0.937500
|
||||
vt 0.687500 0.999999
|
||||
vt 0.937500 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.062500 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.875000 0.937500
|
||||
vt 0.875000 1.000000
|
||||
vt 0.812500 1.000000
|
||||
vt 0.812500 0.937500
|
||||
vt 0.843750 0.937500
|
||||
vt 0.062500 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.937500 1.000000
|
||||
vt 0.062500 0.375000
|
||||
vt 0.000000 0.375000
|
||||
vt 1.000000 0.937500
|
||||
vt 1.000000 1.000000
|
||||
vt 0.437500 0.937500
|
||||
vt 0.437500 0.999999
|
||||
vt 0.375000 0.999999
|
||||
vt 0.375000 0.937500
|
||||
vt 0.312500 0.999999
|
||||
vt 0.312500 0.937500
|
||||
vt 0.187500 0.937500
|
||||
vt 0.187500 0.999999
|
||||
vt 0.125000 0.999999
|
||||
vt 0.125000 0.937500
|
||||
vt 0.062500 0.937500
|
||||
vt 0.000000 0.937500
|
||||
vt 0.625000 0.000000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.437500
|
||||
vt 0.625000 0.562500
|
||||
vt 0.375000 0.437500
|
||||
vt 0.375000 0.062500
|
||||
vt 0.375000 0.000000
|
||||
vt 0.375000 0.562500
|
||||
vt 0.250000 0.437500
|
||||
vt 0.250000 0.375000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.250000 0.062500
|
||||
vt 0.250000 0.937500
|
||||
vt 0.250000 0.875000
|
||||
vt 0.250000 0.625000
|
||||
vt 0.250000 0.562500
|
||||
vt 0.750000 0.562500
|
||||
vt 0.750000 0.625000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.750000 0.937500
|
||||
vt 0.750000 0.062500
|
||||
vt 0.750000 0.125000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.437500
|
||||
vt 0.875000 0.625000
|
||||
vt 0.875000 0.687500
|
||||
vt 0.875000 0.812500
|
||||
vt 0.875000 0.875000
|
||||
vt 0.875000 0.125000
|
||||
vt 0.875000 0.156250
|
||||
vt 0.875000 0.187500
|
||||
vt 0.875000 0.312500
|
||||
vt 0.875000 0.375000
|
||||
vt 1.000000 0.687500
|
||||
vt 1.000000 0.812500
|
||||
vt 1.000000 0.187500
|
||||
vt 1.000000 0.312500
|
||||
vt 0.125000 0.187500
|
||||
vt 0.125000 0.312500
|
||||
vt 0.000000 0.312500
|
||||
vt 0.000000 0.187500
|
||||
vt 0.125000 0.687500
|
||||
vt 0.125000 0.812500
|
||||
vt 0.000000 0.812500
|
||||
vt 0.000000 0.687500
|
||||
vt 0.125000 0.875000
|
||||
vt 0.125000 0.625000
|
||||
vt 0.125000 0.375000
|
||||
vt 0.125000 0.125000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.000000 -1.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 1.000000 -0.000000 -0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
g Cube_Cube_Material
|
||||
s off
|
||||
f 57/1/1 3/2/1 4/3/1 58/4/1
|
||||
f 31/5/2 30/6/2 32/7/2 33/8/2
|
||||
f 8/9/3 7/10/3 30/11/3 31/12/3
|
||||
f 9/13/2 10/14/2 7/6/2 8/5/2
|
||||
f 12/15/3 11/16/3 10/10/3 9/9/3
|
||||
f 24/17/2 25/18/2 11/14/2 12/13/2
|
||||
f 16/19/1 15/20/1 14/4/1 13/1/1
|
||||
f 17/21/3 18/22/3 15/23/3 16/24/3 65/25/3
|
||||
f 20/26/1 19/27/1 18/20/1 17/19/1
|
||||
f 26/28/3 27/29/3 19/22/3 20/21/3
|
||||
f 29/30/1 28/31/1 27/27/1 26/26/1
|
||||
f 1/32/3 2/33/3 28/29/3 29/28/3
|
||||
f 37/34/3 36/35/3 38/36/3 39/37/3
|
||||
f 39/26/1 38/27/1 40/20/1 41/19/1
|
||||
f 41/37/3 40/36/3 42/38/3 43/39/3
|
||||
f 22/17/2 23/18/2 46/14/2 45/13/2
|
||||
f 45/40/3 46/41/3 48/42/3 47/43/3
|
||||
f 47/13/2 48/14/2 50/6/2 49/5/2
|
||||
f 49/43/3 50/42/3 52/2/3 51/44/3
|
||||
f 51/5/2 52/6/2 54/7/2 53/8/2
|
||||
f 53/44/3 54/2/3 56/3/3 55/45/3
|
||||
f 43/19/1 42/20/1 21/4/1 44/1/1
|
||||
f 14/23/3 25/16/3 24/15/3 13/24/3
|
||||
f 60/18/2 5/33/2 6/29/2 59/17/2
|
||||
f 21/38/3 23/41/3 22/40/3 44/39/3
|
||||
f 57/18/4 59/33/4 6/3/4 3/4/4
|
||||
f 60/3/5 58/4/5 4/18/5 5/33/5
|
||||
f 1/30/1 57/2/1 58/3/1 2/31/1
|
||||
f 56/7/2 60/33/2 59/29/2 55/8/2
|
||||
f 1/46/4 29/47/4 33/48/4 35/49/4 53/9/4 55/10/4 59/3/4 57/4/4
|
||||
f 32/50/5 28/51/5 2/52/5 58/18/5 60/33/5 56/36/5 54/37/5 34/53/5
|
||||
f 34/31/1 36/27/1 37/26/1 35/30/1
|
||||
f 30/54/5 7/55/5 19/56/5 27/57/5 28/51/5 32/50/5
|
||||
f 34/53/5 54/37/5 52/58/5 50/59/5 38/60/5 36/61/5
|
||||
f 53/9/4 35/49/4 37/62/4 39/63/4 49/64/4 51/65/4
|
||||
f 29/47/4 26/66/4 20/67/4 8/68/4 31/69/4 33/48/4
|
||||
f 33/12/3 32/11/3 34/35/3 35/34/3
|
||||
f 3/1/1 61/2/1 62/3/1 4/4/1
|
||||
f 5/18/2 63/33/2 64/29/2 6/17/2
|
||||
f 3/18/4 6/33/4 64/3/4 61/4/4
|
||||
f 5/3/5 4/4/5 62/18/5 63/33/5
|
||||
f 49/64/4 39/63/4 41/70/4 43/71/4 45/72/4 47/73/4
|
||||
f 8/68/4 20/67/4 17/74/4 65/75/4 16/76/4 12/77/4 9/78/4
|
||||
f 45/72/4 43/71/4 44/79/4 22/80/4
|
||||
f 12/77/4 16/76/4 13/81/4 24/82/4
|
||||
f 15/83/5 11/84/5 25/85/5 14/86/5
|
||||
f 42/87/5 46/88/5 23/89/5 21/90/5
|
||||
f 38/60/5 50/59/5 48/91/5 46/88/5 42/87/5 40/92/5
|
||||
f 7/55/5 10/93/5 11/84/5 15/83/5 18/94/5 19/56/5
|
||||
f 61/33/6 64/3/6 63/45/6 62/32/6
|
@ -1,228 +0,0 @@
|
||||
# Blender v2.72 (sub 0) OBJ File: 'castle_tapestry_very_long.blend'
|
||||
# www.blender.org
|
||||
o Cube
|
||||
v -0.500000 0.500000 -0.125000
|
||||
v -0.437500 0.500000 -0.125000
|
||||
v -0.500000 0.500001 1.500000
|
||||
v -0.437499 0.500000 1.500000
|
||||
v -0.437500 -0.500000 1.500000
|
||||
v -0.500000 -0.500000 1.500000
|
||||
v -0.437500 0.125000 -0.250000
|
||||
v -0.500000 0.125000 -0.250000
|
||||
v -0.500000 0.125000 -0.375000
|
||||
v -0.437500 0.125000 -0.375000
|
||||
v -0.437500 0.187500 -0.375000
|
||||
v -0.500000 0.187500 -0.375000
|
||||
v -0.500000 0.312500 -0.500000
|
||||
v -0.437500 0.312500 -0.500000
|
||||
v -0.437500 0.312500 -0.375000
|
||||
v -0.500000 0.312500 -0.375000
|
||||
v -0.500000 0.375000 -0.375000
|
||||
v -0.437500 0.375000 -0.375000
|
||||
v -0.437500 0.375000 -0.250000
|
||||
v -0.500000 0.375000 -0.250000
|
||||
v -0.437500 -0.187500 -0.500000
|
||||
v -0.500000 -0.312500 -0.500000
|
||||
v -0.437500 -0.312500 -0.500000
|
||||
v -0.500000 0.187500 -0.500000
|
||||
v -0.437500 0.187500 -0.500000
|
||||
v -0.500000 0.437500 -0.250000
|
||||
v -0.437500 0.437500 -0.250000
|
||||
v -0.437500 0.437500 -0.125000
|
||||
v -0.500000 0.437500 -0.125000
|
||||
v -0.437500 0.062500 -0.250000
|
||||
v -0.500000 0.062500 -0.250000
|
||||
v -0.437500 0.062500 -0.125000
|
||||
v -0.500000 0.062500 -0.125000
|
||||
v -0.437500 -0.062500 -0.125000
|
||||
v -0.500000 -0.062500 -0.125000
|
||||
v -0.437500 -0.062500 -0.250000
|
||||
v -0.500000 -0.062500 -0.250000
|
||||
v -0.437500 -0.125000 -0.250000
|
||||
v -0.500000 -0.125000 -0.250000
|
||||
v -0.437500 -0.125000 -0.375000
|
||||
v -0.500000 -0.125000 -0.375000
|
||||
v -0.437500 -0.187500 -0.375000
|
||||
v -0.500000 -0.187500 -0.375000
|
||||
v -0.500000 -0.187500 -0.500000
|
||||
v -0.500000 -0.312500 -0.375000
|
||||
v -0.437500 -0.312500 -0.375000
|
||||
v -0.500000 -0.375000 -0.375000
|
||||
v -0.437500 -0.375000 -0.375000
|
||||
v -0.500000 -0.375000 -0.250000
|
||||
v -0.437500 -0.375000 -0.250000
|
||||
v -0.500000 -0.437500 -0.250000
|
||||
v -0.437500 -0.437500 -0.250000
|
||||
v -0.500000 -0.437500 -0.125000
|
||||
v -0.437500 -0.437500 -0.125000
|
||||
v -0.500000 -0.500000 -0.125000
|
||||
v -0.437500 -0.500000 -0.125000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.437500 0.500000 0.500000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.437500 -0.500000 0.500000
|
||||
v -0.500000 0.500001 2.500000
|
||||
v -0.437499 0.500000 2.500000
|
||||
v -0.437500 -0.500000 2.500000
|
||||
v -0.500000 -0.500000 2.500000
|
||||
v -0.500000 0.500001 3.500000
|
||||
v -0.437499 0.500000 3.500000
|
||||
v -0.437500 -0.500000 3.500000
|
||||
v -0.500000 -0.500000 3.500000
|
||||
v -0.500000 0.343750 -0.375000
|
||||
vt 0.062500 0.000000
|
||||
vt 0.062500 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000003 0.000000
|
||||
vt 0.937500 0.250000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.375000
|
||||
vt 0.937500 0.375000
|
||||
vt 0.625000 0.937500
|
||||
vt 0.625000 0.999999
|
||||
vt 0.562500 0.999999
|
||||
vt 0.562500 0.937500
|
||||
vt 0.937500 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.687500 0.937500
|
||||
vt 0.687500 0.999999
|
||||
vt 0.937500 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.062500 0.125000
|
||||
vt 0.000000 0.125000
|
||||
vt 0.875000 0.937500
|
||||
vt 0.875000 1.000000
|
||||
vt 0.812500 1.000000
|
||||
vt 0.812500 0.937500
|
||||
vt 0.843750 0.937500
|
||||
vt 0.062500 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.937500 1.000000
|
||||
vt 0.062500 0.375000
|
||||
vt 0.000000 0.375000
|
||||
vt 1.000000 0.937500
|
||||
vt 1.000000 1.000000
|
||||
vt 0.437500 0.937500
|
||||
vt 0.437500 0.999999
|
||||
vt 0.375000 0.999999
|
||||
vt 0.375000 0.937500
|
||||
vt 0.312500 0.999999
|
||||
vt 0.312500 0.937500
|
||||
vt 0.187500 0.937500
|
||||
vt 0.187500 0.999999
|
||||
vt 0.125000 0.999999
|
||||
vt 0.125000 0.937500
|
||||
vt 0.062500 0.937500
|
||||
vt 0.000000 0.937500
|
||||
vt 0.625000 0.000000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.437500
|
||||
vt 0.625000 0.562500
|
||||
vt 0.375000 0.437500
|
||||
vt 0.375000 0.062500
|
||||
vt 0.375000 0.000000
|
||||
vt 0.375000 0.562500
|
||||
vt 0.250000 0.437500
|
||||
vt 0.250000 0.375000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.250000 0.062500
|
||||
vt 0.250000 0.937500
|
||||
vt 0.250000 0.875000
|
||||
vt 0.250000 0.625000
|
||||
vt 0.250000 0.562500
|
||||
vt 0.750000 0.562500
|
||||
vt 0.750000 0.625000
|
||||
vt 0.750000 0.875000
|
||||
vt 0.750000 0.937500
|
||||
vt 0.750000 0.062500
|
||||
vt 0.750000 0.125000
|
||||
vt 0.750000 0.375000
|
||||
vt 0.750000 0.437500
|
||||
vt 0.875000 0.625000
|
||||
vt 0.875000 0.687500
|
||||
vt 0.875000 0.812500
|
||||
vt 0.875000 0.875000
|
||||
vt 0.875000 0.125000
|
||||
vt 0.875000 0.156250
|
||||
vt 0.875000 0.187500
|
||||
vt 0.875000 0.312500
|
||||
vt 0.875000 0.375000
|
||||
vt 1.000000 0.687500
|
||||
vt 1.000000 0.812500
|
||||
vt 1.000000 0.187500
|
||||
vt 1.000000 0.312500
|
||||
vt 0.125000 0.187500
|
||||
vt 0.125000 0.312500
|
||||
vt 0.000000 0.312500
|
||||
vt 0.000000 0.187500
|
||||
vt 0.125000 0.687500
|
||||
vt 0.125000 0.812500
|
||||
vt 0.000000 0.812500
|
||||
vt 0.000000 0.687500
|
||||
vt 0.125000 0.875000
|
||||
vt 0.125000 0.625000
|
||||
vt 0.125000 0.375000
|
||||
vt 0.125000 0.125000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.000000 -1.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 1.000000 -0.000000 -0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
g Cube_Cube_Material
|
||||
s off
|
||||
f 57/1/1 3/2/1 4/3/1 58/4/1
|
||||
f 31/5/2 30/6/2 32/7/2 33/8/2
|
||||
f 8/9/3 7/10/3 30/11/3 31/12/3
|
||||
f 9/13/2 10/14/2 7/6/2 8/5/2
|
||||
f 12/15/3 11/16/3 10/10/3 9/9/3
|
||||
f 24/17/2 25/18/2 11/14/2 12/13/2
|
||||
f 16/19/1 15/20/1 14/4/1 13/1/1
|
||||
f 17/21/3 18/22/3 15/23/3 16/24/3 69/25/3
|
||||
f 20/26/1 19/27/1 18/20/1 17/19/1
|
||||
f 26/28/3 27/29/3 19/22/3 20/21/3
|
||||
f 29/30/1 28/31/1 27/27/1 26/26/1
|
||||
f 1/32/3 2/33/3 28/29/3 29/28/3
|
||||
f 37/34/3 36/35/3 38/36/3 39/37/3
|
||||
f 39/26/1 38/27/1 40/20/1 41/19/1
|
||||
f 41/37/3 40/36/3 42/38/3 43/39/3
|
||||
f 22/17/2 23/18/2 46/14/2 45/13/2
|
||||
f 45/40/3 46/41/3 48/42/3 47/43/3
|
||||
f 47/13/2 48/14/2 50/6/2 49/5/2
|
||||
f 49/43/3 50/42/3 52/2/3 51/44/3
|
||||
f 51/5/2 52/6/2 54/7/2 53/8/2
|
||||
f 53/44/3 54/2/3 56/3/3 55/45/3
|
||||
f 43/19/1 42/20/1 21/4/1 44/1/1
|
||||
f 14/23/3 25/16/3 24/15/3 13/24/3
|
||||
f 60/18/2 5/33/2 6/29/2 59/17/2
|
||||
f 21/38/3 23/41/3 22/40/3 44/39/3
|
||||
f 57/18/4 59/33/4 6/3/4 3/4/4
|
||||
f 60/3/5 58/4/5 4/18/5 5/33/5
|
||||
f 1/30/1 57/2/1 58/3/1 2/31/1
|
||||
f 56/7/2 60/33/2 59/29/2 55/8/2
|
||||
f 1/46/4 29/47/4 33/48/4 35/49/4 53/9/4 55/10/4 59/3/4 57/4/4
|
||||
f 32/50/5 28/51/5 2/52/5 58/18/5 60/33/5 56/36/5 54/37/5 34/53/5
|
||||
f 34/31/1 36/27/1 37/26/1 35/30/1
|
||||
f 30/54/5 7/55/5 19/56/5 27/57/5 28/51/5 32/50/5
|
||||
f 34/53/5 54/37/5 52/58/5 50/59/5 38/60/5 36/61/5
|
||||
f 53/9/4 35/49/4 37/62/4 39/63/4 49/64/4 51/65/4
|
||||
f 29/47/4 26/66/4 20/67/4 8/68/4 31/69/4 33/48/4
|
||||
f 33/12/3 32/11/3 34/35/3 35/34/3
|
||||
f 3/1/1 61/2/1 62/3/1 4/4/1
|
||||
f 65/33/6 68/3/6 67/45/6 66/32/6
|
||||
f 5/18/2 63/33/2 64/29/2 6/17/2
|
||||
f 3/18/4 6/33/4 64/3/4 61/4/4
|
||||
f 5/3/5 4/4/5 62/18/5 63/33/5
|
||||
f 61/1/1 65/2/1 66/3/1 62/4/1
|
||||
f 63/18/2 67/33/2 68/29/2 64/17/2
|
||||
f 61/18/4 64/33/4 68/3/4 65/4/4
|
||||
f 63/3/5 62/4/5 66/18/5 67/33/5
|
||||
f 49/64/4 39/63/4 41/70/4 43/71/4 45/72/4 47/73/4
|
||||
f 8/68/4 20/67/4 17/74/4 69/75/4 16/76/4 12/77/4 9/78/4
|
||||
f 45/72/4 43/71/4 44/79/4 22/80/4
|
||||
f 12/77/4 16/76/4 13/81/4 24/82/4
|
||||
f 15/83/5 11/84/5 25/85/5 14/86/5
|
||||
f 42/87/5 46/88/5 23/89/5 21/90/5
|
||||
f 38/60/5 50/59/5 48/91/5 46/88/5 42/87/5 40/92/5
|
||||
f 7/55/5 10/93/5 11/84/5 15/83/5 18/94/5 19/56/5
|
0
modpack.txt
Normal file
@ -1,50 +0,0 @@
|
||||
local hole = {}
|
||||
|
||||
hole.types = {
|
||||
{"stonewall", "Stonewall", "castle_stonewall", "castle:stonewall"},
|
||||
{"cobble", "Cobble", "default_cobble", "default:cobble"},
|
||||
{"stonebrick", "Stonebrick", "default_stone_brick", "default:stonebrick"},
|
||||
{"sandstonebrick", "Sandstone Brick", "default_sandstone_brick", "default:sandstonebrick"},
|
||||
{"desertstonebrick", "Desert Stone Brick", "default_desert_stone_brick", "default:desert_stonebrick"},
|
||||
{"stone", "Stone", "default_stone", "default:stone"},
|
||||
{"sandstone", "Sandstone", "default_sandstone", "default:sandstone"},
|
||||
{"desertstone", "Desert Stone", "default_desert_stone", "default:desert_stone"},
|
||||
}
|
||||
|
||||
for _, row in ipairs(hole.types) do
|
||||
local name = row[1]
|
||||
local desc = row[2]
|
||||
local tile = row[3]
|
||||
local craft_material = row[4]
|
||||
-- Node Definition
|
||||
minetest.register_node("castle:hole_"..name, {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Murder Hole",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-8/16,-8/16,-8/16,-4/16,8/16,8/16},
|
||||
{4/16,-8/16,-8/16,8/16,8/16,8/16},
|
||||
{-4/16,-8/16,-8/16,4/16,8/16,-4/16},
|
||||
{-4/16,-8/16,8/16,4/16,8/16,4/16},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if craft_material then
|
||||
--Choose craft material
|
||||
minetest.register_craft({
|
||||
output = "castle:hole_"..name.." 4",
|
||||
recipe = {
|
||||
{"",craft_material, "" },
|
||||
{craft_material,"", craft_material},
|
||||
{"",craft_material, ""} },
|
||||
})
|
||||
end
|
||||
end
|
||||
|
58
orbs.lua
@ -1,58 +0,0 @@
|
||||
|
||||
----------
|
||||
--Tools
|
||||
----------
|
||||
|
||||
minetest.register_tool("castle:orb_day", {
|
||||
description = "Orb of Midday",
|
||||
tiles = {"castle_orb_day.png"},
|
||||
inventory_image = "castle_orb_day.png",
|
||||
wield_image = "castle_orb_day_weild.png",
|
||||
stack_max=1,
|
||||
on_use = function(itemstack, user)
|
||||
minetest.sound_play("castle_orbs", {pos=pos, loop=false})
|
||||
minetest.set_timeofday(0.5)
|
||||
minetest.sound_play("castle_birds", {pos=pos, loop=false})
|
||||
--1 use per diamond used in crafting :)
|
||||
itemstack:add_wear(65535/8)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_tool("castle:orb_night",{
|
||||
description = "Orb of Midnight",
|
||||
tiles = {"castle_orb_night.png"},
|
||||
inventory_image = "castle_orb_night.png",
|
||||
wield_image = "castle_orb_night_weild.png",
|
||||
stack_max=1,
|
||||
on_use = function(itemstack, user)
|
||||
minetest.sound_play("castle_orbs", {pos=pos, loop=false})
|
||||
minetest.set_timeofday(0)
|
||||
minetest.sound_play("castle_owl", {pos=pos, loop=false})
|
||||
--1 use per diamond used in crafting :)
|
||||
itemstack:add_wear(65535/8)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
-----------
|
||||
--Crafting
|
||||
-----------
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "castle:orb_day",
|
||||
recipe = {
|
||||
{"default:diamond", "default:diamond","default:diamond"},
|
||||
{"default:diamond", "default:mese_crystal","default:diamond"},
|
||||
{"default:diamond", "default:diamond","default:diamond"}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:orb_night",
|
||||
recipe = {
|
||||
{"default:diamond", "default:diamond","default:diamond"},
|
||||
{"default:diamond", "default:obsidian_shard","default:diamond"},
|
||||
{"default:diamond", "default:diamond","default:diamond"}
|
||||
},
|
||||
})
|
1
orbs_of_time
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit d46b3078a03527221bd63d0a9289e583f09767f0
|
108
pillars.lua
@ -1,108 +0,0 @@
|
||||
minetest.register_alias("castle:pillars_bottom", "castle:pillars_stonewall_bottom")
|
||||
minetest.register_alias("castle:pillars_top", "castle:pillars_stonewall_top")
|
||||
minetest.register_alias("castle:pillars_middle", "castle:pillars_stonewall_middle")
|
||||
|
||||
local pillar = {}
|
||||
|
||||
pillar.types = {
|
||||
{"stonewall", "Stonewall", "castle_stonewall", "castle:stonewall"},
|
||||
{"cobble", "Cobble", "default_cobble", "default:cobble"},
|
||||
{"stonebrick", "Stonebrick", "default_stone_brick", "default:stonebrick"},
|
||||
{"sandstonebrick", "Sandstone Brick", "default_sandstone_brick", "default:sandstonebrick"},
|
||||
{"desertstonebrick", "Desert Stone Brick", "default_desert_stone_brick", "default:desert_stonebrick"},
|
||||
{"stone", "Stone", "default_stone", "default:stone"},
|
||||
{"sandstone", "Sandstone", "default_sandstone", "default:sandstone"},
|
||||
{"desertstone", "Desert Stone", "default_desert_stone", "default:desert_stone"},
|
||||
}
|
||||
|
||||
for _, row in ipairs(pillar.types) do
|
||||
local name = row[1]
|
||||
local desc = row[2]
|
||||
local tile = row[3]
|
||||
local craft_material = row[4]
|
||||
-- Node Definition
|
||||
minetest.register_node("castle:pillars_"..name.."_bottom", {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Pillar Base",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3,attached_node=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,-0.500000,0.500000,-0.375000,0.500000},
|
||||
{-0.375000,-0.375000,-0.375000,0.375000,-0.125000,0.375000},
|
||||
{-0.250000,-0.125000,-0.250000,0.250000,0.500000,0.250000},
|
||||
},
|
||||
},
|
||||
})
|
||||
minetest.register_node("castle:pillars_"..name.."_top", {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Pillar Top",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3,attached_node=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,0.312500,-0.500000,0.500000,0.500000,0.500000},
|
||||
{-0.375000,0.062500,-0.375000,0.375000,0.312500,0.375000},
|
||||
{-0.250000,-0.500000,-0.250000,0.250000,0.062500,0.250000},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("castle:pillars_"..name.."_middle", {
|
||||
drawtype = "nodebox",
|
||||
description = desc.." Pillar Middle",
|
||||
tiles = {tile..".png"},
|
||||
groups = {cracky=3,attached_node=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.250000,-0.500000,-0.250000,0.250000,0.500000,0.250000},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if craft_material then
|
||||
--Choose craft material
|
||||
minetest.register_craft({
|
||||
output = "castle:pillars_"..name.."_bottom 4",
|
||||
recipe = {
|
||||
{"",craft_material,""},
|
||||
{"",craft_material,""},
|
||||
{craft_material,craft_material,craft_material} },
|
||||
})
|
||||
end
|
||||
|
||||
if craft_material then
|
||||
--Choose craft material
|
||||
minetest.register_craft({
|
||||
output = "castle:pillars_"..name.."_top 4",
|
||||
recipe = {
|
||||
{craft_material,craft_material,craft_material},
|
||||
{"",craft_material,""},
|
||||
{"",craft_material,""} },
|
||||
})
|
||||
end
|
||||
|
||||
if craft_material then
|
||||
--Choose craft material
|
||||
minetest.register_craft({
|
||||
output = "castle:pillars_"..name.."_middle 4",
|
||||
recipe = {
|
||||
{craft_material,craft_material},
|
||||
{craft_material,craft_material},
|
||||
{craft_material,craft_material} },
|
||||
})
|
||||
end
|
||||
end
|
||||
|
124
rope.lua
@ -1,124 +0,0 @@
|
||||
minetest.register_node("castle:ropes",{
|
||||
description = "Rope",
|
||||
drawtype = "nodebox",
|
||||
sunlight_propagates = true,
|
||||
tiles = {"castle_ropes.png"},
|
||||
groups = {choppy=3,snappy=3,oddly_breakable_by_hand=3,flammable=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
paramtype = "light",
|
||||
climbable = true,
|
||||
walkable = false,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:ropes",
|
||||
recipe = {
|
||||
{"farming:string"},
|
||||
{"farming:string"},
|
||||
{"farming:string"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("castle:box_rope", {
|
||||
description = "Rope from Ropebox",
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
tiles = {"castle_ropes.png"},
|
||||
groups = {not_in_creative_inventory=1},
|
||||
climbable = true,
|
||||
walkable = false,
|
||||
diggable = false,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-1/16, -8/16, -1/16, 1/16, 8/16, 1/16},
|
||||
},
|
||||
},
|
||||
after_destruct = function(pos,oldnode)
|
||||
local node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
if node.name == "castle:box_rope" then
|
||||
minetest.remove_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("castle:ropebox", {
|
||||
description = "Ropebox",
|
||||
drawtype = "nodebox",
|
||||
sunlight_propagates = true,
|
||||
tiles = {"castle_ropebox_top.png",
|
||||
"castle_ropebox_top.png",
|
||||
"castle_ropebox_side_1.png",
|
||||
"castle_ropebox_side_1.png",
|
||||
"castle_ropebox_side_2.png",
|
||||
"castle_ropebox_side_2.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-2/16, -2/16, -4/16, 2/16, 2/16, 4/16},
|
||||
{-2/16, -4/16, -2/16, 2/16, 4/16, 2/16},
|
||||
{-2/16, -3/16, -3/16, 2/16, 3/16, 3/16},
|
||||
{-3/16, -2/16, -2/16, -2/16, 8/16, 2/16},
|
||||
{2/16, -2/16, -2/16, 3/16, 8/16, 2/16},
|
||||
{-1/16, -8/16, -1/16, 1/16, -4/16, 1/16},
|
||||
},
|
||||
},
|
||||
after_destruct = function(pos,oldnode)
|
||||
local node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
if node.name == "castle:box_rope" then
|
||||
minetest.remove_node({x=pos.x,y=pos.y-1,z=pos.z})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"castle:ropebox"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node)
|
||||
if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= 'air' then return end
|
||||
minetest.add_node({x=pos.x,y=pos.y-1,z=pos.z}, {name="castle:box_rope"})
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"castle:box_rope"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node)
|
||||
if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= 'air' then return end
|
||||
minetest.add_node({x=pos.x,y=pos.y-1,z=pos.z}, {name="castle:box_rope"})
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:ropebox",
|
||||
recipe = {
|
||||
{"default:wood"},
|
||||
{"castle:ropes"},
|
||||
}
|
||||
})
|
||||
|
1
ropes
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit eec546558b8496d4d5a2adb833e77630b482e05d
|
@ -1,103 +0,0 @@
|
||||
minetest.register_node("castle:shield",{
|
||||
description = "Mounted Shield",
|
||||
tiles = {"castle_shield_side.png", "castle_shield_side.png", "castle_shield_side.png", "castle_shield_side.png", "castle_shield_back.png", "castle_shield_front.png"},
|
||||
drawtype="nodebox",
|
||||
paramtype2 = "facedir",
|
||||
paramtype = "light",
|
||||
groups={cracky=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.125000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
|
||||
{-0.437500,-0.312500,0.375000,0.425000,0.500000,0.500000}, --NodeBox 2
|
||||
{-0.312500,-0.437500,0.375000,0.312500,0.500000,0.500000}, --NodeBox 3
|
||||
{-0.187500,-0.500000,0.375000,0.187500,0.500000,0.500000}, --NodeBox 4
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:shield",
|
||||
recipe = {
|
||||
{"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
|
||||
{"dye:red", "default:steel_ingot","dye:blue"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("castle:shield_2",{
|
||||
description = "Mounted Shield",
|
||||
tiles = {"castle_shield_side_2.png", "castle_shield_side_2.png", "castle_shield_side_2.png", "castle_shield_side_2.png", "castle_shield_back.png", "castle_shield_front_2.png"},
|
||||
drawtype="nodebox",
|
||||
paramtype2 = "facedir",
|
||||
paramtype = "light",
|
||||
groups={cracky=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.125000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
|
||||
{-0.437500,-0.312500,0.375000,0.425000,0.500000,0.500000}, --NodeBox 2
|
||||
{-0.312500,-0.437500,0.375000,0.312500,0.500000,0.500000}, --NodeBox 3
|
||||
{-0.187500,-0.500000,0.375000,0.187500,0.500000,0.500000}, --NodeBox 4
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:shield_2",
|
||||
recipe = {
|
||||
{"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
|
||||
{"dye:cyan", "default:steel_ingot","dye:yellow"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("castle:shield_3",{
|
||||
description = "Mounted Shield",
|
||||
tiles = {"castle_shield_side_3.png", "castle_shield_side_3.png", "castle_shield_side_3.png", "castle_shield_side_3.png", "castle_shield_back.png", "castle_shield_front_3.png"},
|
||||
drawtype="nodebox",
|
||||
paramtype2 = "facedir",
|
||||
paramtype = "light",
|
||||
groups={cracky=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.125000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
|
||||
{-0.437500,-0.312500,0.375000,0.425000,0.500000,0.500000}, --NodeBox 2
|
||||
{-0.312500,-0.437500,0.375000,0.312500,0.500000,0.500000}, --NodeBox 3
|
||||
{-0.187500,-0.500000,0.375000,0.187500,0.500000,0.500000}, --NodeBox 4
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.500000,-0.500000,0.375000,0.500000,0.500000,0.500000}, --NodeBox 1
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "castle:shield_3",
|
||||
recipe = {
|
||||
{"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot","default:steel_ingot"},
|
||||
{"dye:grey", "default:steel_ingot","dye:green"},
|
||||
}
|
||||
})
|
||||
|
@ -1,52 +0,0 @@
|
||||
License Sounds
|
||||
------------------
|
||||
|
||||
(From Simple Shooter mod by Stuart Jones)
|
||||
-castle_crossbow_click.ogg
|
||||
-castle_crossbow_shoot.ogg
|
||||
-castle_crossbow_reload.ogg
|
||||
|
||||
Author : freesound.org
|
||||
License : Attribution 3.0 Unported (CC BY 3.0)
|
||||
CC0 1.0 Universal (CC0 1.0)
|
||||
|
||||
------------------
|
||||
|
||||
(From Minetest Game:default mod)
|
||||
-default_wood_footstep.1.ogg
|
||||
(renamed to : castle_crossbow_bolt.ogg)
|
||||
Author : Mito551
|
||||
License : (CC BY-SA)
|
||||
|
||||
------------------
|
||||
|
||||
Author: Brandon Morris
|
||||
file: castle_orbs.ogg
|
||||
original file : completetask_0.mp3
|
||||
http://opengameart.org/content/completion-sound
|
||||
License: CC-BY 3.0
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
------------------
|
||||
|
||||
(From Ambience mod)
|
||||
|
||||
Author: Mike Koenig
|
||||
file: castle_owl.ogg
|
||||
original file : horned_owl.ogg
|
||||
http://soundbible.com/1851-Horned-Owl.html
|
||||
License: Attribution 3.0
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
------------------
|
||||
|
||||
(From Ambience mod)
|
||||
|
||||
Author: PsychoBird
|
||||
file: castle_birds.ogg
|
||||
original file : Best Cardinal Bird.ogg
|
||||
http://soundbible.com/1515-Best-Cardinal-Bird.html
|
||||
License: Attribution 3.0
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
------------------
|
196
tapestry.lua
@ -1,196 +0,0 @@
|
||||
local tapestry = {}
|
||||
|
||||
minetest.register_node("castle:tapestry_top", {
|
||||
drawtype = "nodebox",
|
||||
description = "Tapestry Top",
|
||||
tiles = {"default_wood.png"},
|
||||
sunlight_propagates = true,
|
||||
groups = {flammable=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.6,-0.5,0.375,0.6,-0.375,0.5},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.6,-0.5,0.375,0.6,-0.375,0.5},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'castle:tapestry_top',
|
||||
recipe = {'default:stick'},
|
||||
})
|
||||
|
||||
tapestry.colours = {
|
||||
"white",
|
||||
"grey",
|
||||
"black",
|
||||
"red",
|
||||
"yellow",
|
||||
"green",
|
||||
"cyan",
|
||||
"blue",
|
||||
"magenta",
|
||||
"orange",
|
||||
"violet",
|
||||
"dark_grey",
|
||||
"dark_green",
|
||||
"pink",
|
||||
"brown",
|
||||
}
|
||||
|
||||
-- Regular-length tapestry
|
||||
|
||||
minetest.register_node("castle:tapestry", {
|
||||
drawtype = "mesh",
|
||||
mesh = "castle_tapestry.obj",
|
||||
description = "Tapestry",
|
||||
tiles = {"castle_tapestry.png"},
|
||||
inventory_image = "castle_tapestry_inv.png",
|
||||
groups = {oddly_breakable_by_hand=3,flammable=3, ud_param2_colorable = 1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "colorwallmounted",
|
||||
palette = "unifieddyes_palette_colorwallmounted.png",
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
wall_side = {-0.5,-0.5,0.4375,0.5,1.5,0.5},
|
||||
},
|
||||
after_place_node = unifieddyes.fix_rotation_nsew,
|
||||
after_dig_node = unifieddyes.after_dig_node,
|
||||
on_rotate = unifieddyes.fix_after_screwdriver_nsew
|
||||
})
|
||||
|
||||
-- Crafting from wool and a stick
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'castle:tapestry',
|
||||
recipe = {'wool:white', 'default:stick'},
|
||||
})
|
||||
|
||||
-- Long tapestry
|
||||
|
||||
minetest.register_node("castle:tapestry_long", {
|
||||
drawtype = "mesh",
|
||||
mesh = "castle_tapestry_long.obj",
|
||||
description = "Tapestry (Long)",
|
||||
tiles = {"castle_tapestry.png"},
|
||||
inventory_image = "castle_tapestry_long_inv.png",
|
||||
groups = {oddly_breakable_by_hand=3,flammable=3, ud_param2_colorable = 1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "colorwallmounted",
|
||||
palette = "unifieddyes_palette_colorwallmounted.png",
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
wall_side = {-0.5,-0.5,0.4375,0.5,2.5,0.5},
|
||||
},
|
||||
after_place_node = unifieddyes.fix_rotation_nsew,
|
||||
after_dig_node = unifieddyes.after_dig_node,
|
||||
on_rotate = unifieddyes.fix_after_screwdriver_nsew
|
||||
})
|
||||
|
||||
-- Crafting from normal tapestry and wool
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'castle:tapestry_long',
|
||||
recipe = {'wool:white', 'castle:tapestry'},
|
||||
})
|
||||
|
||||
-- Very long tapestry
|
||||
|
||||
minetest.register_node("castle:tapestry_very_long", {
|
||||
drawtype = "mesh",
|
||||
mesh = "castle_tapestry_very_long.obj",
|
||||
description = "Tapestry (Very Long)",
|
||||
tiles = {"castle_tapestry.png"},
|
||||
inventory_image = "castle_tapestry_very_long_inv.png",
|
||||
groups = {oddly_breakable_by_hand=3,flammable=3, ud_param2_colorable = 1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "colorwallmounted",
|
||||
palette = "unifieddyes_palette_colorwallmounted.png",
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
wall_side = {-0.5,-0.5,0.4375,0.5,3.5,0.5},
|
||||
},
|
||||
after_place_node = unifieddyes.fix_rotation_nsew,
|
||||
after_dig_node = unifieddyes.after_dig_node,
|
||||
on_rotate = unifieddyes.fix_after_screwdriver_nsew
|
||||
})
|
||||
|
||||
-- Crafting from long tapestry and wool
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'castle:tapestry_very_long',
|
||||
recipe = {'wool:white', 'castle:tapestry_long'},
|
||||
})
|
||||
|
||||
-- Convert static tapestries to param2 color
|
||||
|
||||
castle.old_static_tapestries = {}
|
||||
|
||||
for _, color in ipairs(tapestry.colours) do
|
||||
table.insert(castle.old_static_tapestries, "castle:tapestry_"..color)
|
||||
table.insert(castle.old_static_tapestries, "castle:long_tapestry_"..color)
|
||||
table.insert(castle.old_static_tapestries, "castle:very_long_tapestry_"..color)
|
||||
end
|
||||
|
||||
minetest.register_lbm({
|
||||
name = "castle:convert_tapestries",
|
||||
label = "Convert tapestries to use param2 color",
|
||||
run_at_every_load = false,
|
||||
nodenames = castle.old_static_tapestries,
|
||||
action = function(pos, node)
|
||||
local oldname = node.name
|
||||
local color = string.sub(oldname, string.find(oldname, "_", -12) + 1)
|
||||
|
||||
if color == "red" then
|
||||
color = "medium_red"
|
||||
elseif color == "cyan" then
|
||||
color = "medium_cyan"
|
||||
elseif color == "blue" then
|
||||
color = "medium_blue"
|
||||
elseif color == "magenta" then
|
||||
color = "medium_magenta"
|
||||
end
|
||||
|
||||
local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
|
||||
|
||||
local old_fdir = math.floor(node.param2 % 32)
|
||||
local new_fdir = 3
|
||||
|
||||
if old_fdir == 0 then
|
||||
new_fdir = 3
|
||||
elseif old_fdir == 1 then
|
||||
new_fdir = 4
|
||||
elseif old_fdir == 2 then
|
||||
new_fdir = 2
|
||||
elseif old_fdir == 3 then
|
||||
new_fdir = 5
|
||||
end
|
||||
|
||||
local param2 = paletteidx + new_fdir
|
||||
local newname = "castle:tapestry"
|
||||
if string.find(oldname, ":long") then
|
||||
newname = "castle:tapestry_long"
|
||||
elseif string.find(oldname, ":very_long") then
|
||||
newname = "castle:tapestry_very_long"
|
||||
end
|
||||
|
||||
minetest.set_node(pos, { name = newname, param2 = param2 })
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("dye", "unifieddyes:"..color)
|
||||
end
|
||||
})
|
@ -1,84 +0,0 @@
|
||||
--------------------------------------------
|
||||
|
||||
License Textures: Stuart Jones - WTFPL
|
||||
-castle_crossbow_bolt_inv.png
|
||||
-castle_crossbow_bolt_uv.png
|
||||
-castle_crossbow_hit.png
|
||||
|
||||
Licence Models: Stuart Jones - CC-BY-SA 3.0
|
||||
-castle_crossbow_bolt.b3d
|
||||
-castle_crossbow_bolt.blend
|
||||
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
License Textures: Kilbith - WTFPL
|
||||
|
||||
-castle_tapestry_overlay.png
|
||||
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
License Textures: Philipner - CC-BY-SA 3.0
|
||||
|
||||
-castle_chandelier.png
|
||||
-castle_chandelier_chain.png
|
||||
-castle_chandelier_wield.png
|
||||
-castle_corner_stonewall_tb.png
|
||||
-castle_corner_stonewall1.png
|
||||
-castle_corner_stonewall2.png
|
||||
-castle_orb_day.png
|
||||
-castle_orb_night.png
|
||||
-castle_workbench_back.png
|
||||
-castle_workbench_front.png
|
||||
-castle_workbench_side.png
|
||||
-castle_workbench_top.png
|
||||
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
16 px textures based on Castle mod
|
||||
original textures by Philipner
|
||||
|
||||
License Textures: Napiophelios - CC-BY-SA 3.0
|
||||
|
||||
-castle_battleaxe.png
|
||||
-castle_crossbow_bolt_inv.png
|
||||
-castle_crossbow_hit.png
|
||||
-castle_crossbow_loaded.png
|
||||
-castle_door_jail.png
|
||||
-castle_door_oak.png
|
||||
-castle_dungeon_stone.png
|
||||
-castle_grey.png
|
||||
-castle_hide.png
|
||||
-castle_ironbound_chest_back.png
|
||||
-castle_ironbound_chest_front.png
|
||||
-castle_ironbound_chest_side.png
|
||||
-castle_ironbound_chest_top.png
|
||||
-castle_jail_door_inv.png
|
||||
-castle_jailbars.png
|
||||
-castle_oak_door_inv.png
|
||||
-castle_orb_day_weild.png
|
||||
-castle_orb_night_weild.png
|
||||
-castle_pavement_brick.png
|
||||
-castle_ropebox_side_1.png
|
||||
-castle_ropebox_side_2.png
|
||||
-castle_ropebox_top.png
|
||||
-castle_ropes.png
|
||||
-castle_rubble.png
|
||||
-castle_shield_back.png
|
||||
-castle_shield_front.png
|
||||
-castle_shield_front_2.png
|
||||
-castle_shield_front_3.png
|
||||
-castle_shield_side.png
|
||||
-castle_shield_side_2.png
|
||||
-castle_shield_side_3.png
|
||||
-castle_slate.png
|
||||
-castle_space.png
|
||||
-castle_steel.png
|
||||
-castle_stonewall.png
|
||||
-castle_straw_bale.png
|
||||
-castle_street_light.png
|
||||
-castle_workbench_bottom.png
|
||||
|
||||
--------------------------------------------
|
Before Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 360 B |
Before Width: | Height: | Size: 169 B |
Before Width: | Height: | Size: 316 B |
Before Width: | Height: | Size: 696 B |
Before Width: | Height: | Size: 682 B |
Before Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 146 B |
Before Width: | Height: | Size: 516 B |
Before Width: | Height: | Size: 280 B |
Before Width: | Height: | Size: 295 B |
Before Width: | Height: | Size: 878 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 543 B |
Before Width: | Height: | Size: 70 B |
Before Width: | Height: | Size: 618 B |
Before Width: | Height: | Size: 522 B |
Before Width: | Height: | Size: 537 B |
Before Width: | Height: | Size: 374 B |
Before Width: | Height: | Size: 522 B |
Before Width: | Height: | Size: 186 B |
Before Width: | Height: | Size: 253 B |
Before Width: | Height: | Size: 411 B |
Before Width: | Height: | Size: 112 B |
Before Width: | Height: | Size: 185 B |
Before Width: | Height: | Size: 109 B |
Before Width: | Height: | Size: 184 B |
Before Width: | Height: | Size: 700 B |
Before Width: | Height: | Size: 342 B |
Before Width: | Height: | Size: 286 B |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 278 B |
Before Width: | Height: | Size: 563 B |
Before Width: | Height: | Size: 620 B |
Before Width: | Height: | Size: 520 B |
Before Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 536 B |
Before Width: | Height: | Size: 94 B |
Before Width: | Height: | Size: 91 B |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 261 B |
Before Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 756 B |
Before Width: | Height: | Size: 465 B |
Before Width: | Height: | Size: 323 B |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 383 B |
Before Width: | Height: | Size: 369 B |