Converting castle into a modpack (#34)

Everything is now in separate submods. This modpack rmains and acts as aggregation container for them.
This commit is contained in:
FaceDeer 2017-03-14 22:40:28 -06:00 committed by Auke Kok
parent c759cbf6c0
commit 2f098f1fd8
104 changed files with 115 additions and 2913 deletions

17
.gitattributes vendored Normal file
View 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
View 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
View 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
View File

@ -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.

View File

@ -1,58 +1,3 @@
=-=-=-=-=-=-=-=-=-= This modpack began life as the Castles Mod by Philipbenr And DanDuncombe.
Castles Mod It contains a variety of items useful for building castles and castle dungeons.
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

1
anvil Submodule

@ -0,0 +1 @@
Subproject commit 42c84f0f694f820aae141df32192b458aaeecf51

View File

@ -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

View File

@ -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'},
}
})

View File

@ -1,10 +0,0 @@
default
stairs
doors
farming
unifieddyes
building_blocks?
asphalt?
streets?
moreblocks?
xpanes?

View File

@ -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
View File

@ -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

View File

@ -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")

View File

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

View File

@ -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

View File

@ -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

View File

@ -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
View File

View 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

View File

@ -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

View File

@ -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
View File

@ -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

View File

@ -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"},
}
})

View File

@ -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/
------------------

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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
})

View File

@ -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
--------------------------------------------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 465 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 B

Some files were not shown because too many files have changed in this diff Show More