12 Commits

Author SHA1 Message Date
3ae48c16cc tweak formspec layout 2025-06-26 12:06:24 +02:00
340983c67f fix preview
by resizing the background the scaling works again.
Though lua_api.md promises that lower resolution textures
are upscaled to larger ones [see TEXMOD_UPSCALE]
2025-06-26 12:00:43 +02:00
c8099845db fix pole
- moved up
- changed from .x to .obj format
2025-06-26 11:09:00 +02:00
02462b0866 fix banner support for 5.12+
- changed from .x to .obj format
- exported at 0.2 scale -> the base is still a bit larger
  than a node but exporting smaller causes the base to levatate.
2025-06-26 10:50:43 +02:00
ea0a0fe6c4 On move support aka jumpdrive compat (#9)
* whitespace and minetest. -> core.

- use same whitespace style throughout and fix some indents.
- change from minetest. to core. namespace.

* Update Readme: Minetest -> Luanti

* add luacheck

* update optional depends

* luacheck cleanups

- unused arguments
- shaddowed vars
- var redeclarations
- some whitespace involved in above lines

* clean close of file after reading

* avoid duplicate code

save some lines and some extra method calls.

* avoid error: "unknown global"

* stray whitespace fixups

* whitespace: switch all files to same indent character

tabs -> spaces

* refactor weird declaration

* whitespace: two stray spaces

...that slipped through the cracks on previous whitespace edit

* fix shaddowing global table

* reduce amount of times transformation string is calculated

* use ipairs feature

or use the faster repeat-until-loop

* cap max amount of layers

fixes #5

* fix #5 make transform history non-global

fixes #5
transformation history was shared by all users and kept growing as it
was never truely reset. Every time a user
used a banner a white background was dumped on top of the
stack making it possible to crash the server through an
overflow to core.serialize() function.

* minimize metadata size

also changed banners.max_transformations to
banners.max_undo_levels and lowered the value substantially.

* add versioning

* add recoverable per player history with saved colour

* rename update_all -> update_preview_inv

since it isn't updating everything, only
the preview and the inventory item

* dynamically update masks

to reflect the currently selected colour.

* banner always exists

even if only "" it exists and there isn't an error.
not adding "" or texture string, causes a non critical error.

* use same function declaration style throughout

* remove set_banner_texture()

only used once and is easy enough to have inline

* preserve player undo-history over joins

player could have timed-out and thus lost their history.
It isn't crucial to remove their history, so let's give
them this feature.

* refactor: reusable transformation string creation

unfortunately the git diff is a bit messy on this one.
Nothing changed with:
- banners.Banner
- banners.Banner:new
- banners.Banner:push_transform
- banners.Banner:pop_transform

content of banners.Banner:get_transform_string was moved
to banners.transform_table_to_string with very few changes

* add transform_string_to_table

allows us to add more features such as:
- clean existing banners to slim down data
- read transforms from items in inventory -> allow players
  to change existing patterns without having to start from
  scratch.

* cleanup old banners when their entities are generated

* read item meta allowing players to edit existing banners

* version bump

* oopsie fixes

* remove stray debug point

* add chatcommand banners_fix

fixes #7
provides a work-around for the engine problem with entities.

* sensitive github luacheck syntax

* version bump

* cleanup: compact node definitions

* adds [jumpdrive] compat

github.com/mt-mods/jumpdrive

closes https://github.com/mt-mods/jumpdrive/issues/90

* also make factions banners jump-able

just for completeness sake
2024-12-09 12:19:40 +01:00
8cc1c82717 Limit texture size (#6)
* whitespace and minetest. -> core.

- use same whitespace style throughout and fix some indents.
- change from minetest. to core. namespace.

* Update Readme: Minetest -> Luanti

* add luacheck

* update optional depends

* luacheck cleanups

- unused arguments
- shaddowed vars
- var redeclarations
- some whitespace involved in above lines

* clean close of file after reading

* avoid duplicate code

save some lines and some extra method calls.

* avoid error: "unknown global"

* stray whitespace fixups

* whitespace: switch all files to same indent character

tabs -> spaces

* refactor weird declaration

* whitespace: two stray spaces

...that slipped through the cracks on previous whitespace edit

* fix shaddowing global table

* reduce amount of times transformation string is calculated

* use ipairs feature

or use the faster repeat-until-loop

* cap max amount of layers

fixes #5

* fix #5 make transform history non-global

fixes #5
transformation history was shared by all users and kept growing as it
was never truely reset. Every time a user
used a banner a white background was dumped on top of the
stack making it possible to crash the server through an
overflow to core.serialize() function.

* minimize metadata size

also changed banners.max_transformations to
banners.max_undo_levels and lowered the value substantially.

* add versioning

* add recoverable per player history with saved colour

* rename update_all -> update_preview_inv

since it isn't updating everything, only
the preview and the inventory item

* dynamically update masks

to reflect the currently selected colour.
2024-11-29 10:45:55 +01:00
283b5bec25 Fix all deprecation warnings (#4) 2024-07-08 19:10:42 +02:00
cc36ed67b5 Is ground content (#3)
* banners aren't ground content

* Update factions.lua
2024-02-28 12:06:41 +01:00
7605ffabfe Use mod.conf instead of depends.txt and description.txt 2022-04-22 07:25:44 +02:00
9c624a94da Fix 2 deprecated warnings 2022-02-08 19:49:29 +01:00
ef8cf57941 fix banners not being protected 2020-12-31 21:12:04 +11:00
a6b1a280b4 alternate recipe 2019-08-19 10:31:57 +02:00
19 changed files with 1901 additions and 2609 deletions

10
.github/workflows/luacheck.yml vendored Normal file
View File

@ -0,0 +1,10 @@
name: luacheck
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Luacheck
uses: lunarmodules/luacheck@master

14
.luacheckrc Normal file
View File

@ -0,0 +1,14 @@
globals = {
"banners",
"smartfs",
}
read_globals = {
"core",
"dump",
"factions",
"inventory_plus",
["table"] = { fields = { "insert_all" } },
"unified_inventory",
"vector",
}

View File

@ -1,4 +1,4 @@
###Banners mod for Minetest
This is the banner mod for minetest.
###Banners mod for Luanti (formerly Minetest)
This is a banner mod for Luanti.
The source code is licensed under GPLv3, and the game assets are licensed under Creative Commons 0 (CC0, [https://wiki.creativecommons.org/wiki/CC0](see here)).

53
chatcommands.lua Normal file
View File

@ -0,0 +1,53 @@
-- Due to some engine troubles there are sometimes stray
-- banner entities and more rarely there are banner nodes without entities.
-- Calling this command fixes both situations.
core.register_chatcommand("banners_fix", {
description = "recreates the banner-visuals in your area",
func = function(name)
local player = core.get_player_by_name(name)
if not player then
return
end
local pos = player:get_pos()
local t1 = core.get_us_time()
local radius = 10
local entity_count = 0
local objects = core.get_objects_inside_radius(pos, radius)
for _, v in ipairs(objects) do
local e = v:get_luaentity()
if e and e.name == "banners:banner_ent" then
entity_count = entity_count + 1
v:remove()
end
end
local pos1 = vector.subtract(pos, radius)
local pos2 = vector.add(pos, radius)
local nodes = {
"banners:wooden_banner",
"banners:steel_banner",
}
if core.get_modpath("factions") then
table.insert_all(nodes, {
"banners:power_banner",
"banners:death_banner",
})
end
local pos_list = core.find_nodes_in_area(pos1, pos2, nodes)
for _, node_pos in ipairs(pos_list) do
core.add_entity(node_pos, "banners:banner_ent")
end
local t2 = core.get_us_time()
local diff = t2 - t1
local millis = diff / 1000
return true, "Removed " .. entity_count .. " banner entities and restored "
.. #pos_list .. " banners in " .. millis .. " ms"
end
})

View File

@ -1,78 +1,73 @@
-- craft recipes
minetest.register_craft( -- wooden flag pole
{
output = "banners:wooden_pole 1",
recipe = {
{"", "", "default:stick"},
{"", "default:stick", ""},
{"default:stick", "", ""}
}
}
)
minetest.register_craft( -- steel flag pole
{
output = "banners:steel_pole 1",
recipe = {
{"", "", "default:steel_ingot"},
{"", "default:steel_ingot", ""},
{"default:steel_ingot", "", ""}
}
-- wooden flag pole
core.register_craft({
output = "banners:wooden_pole 1",
recipe = {
{ "", "", "default:stick" },
{ "", "default:stick", "" },
{ "default:stick", "", "" }
}
)
})
minetest.register_craft( -- wooden flag support base
{
output = "banners:wooden_base 1",
recipe = {
{"", "default:stick", ""},
{"default:stick", "", "default:stick"},
{"group:wood", "group:wood", "group:wood"}
}
-- steel flag pole
core.register_craft({
output = "banners:steel_pole 1",
recipe = {
{ "", "", "default:steel_ingot" },
{ "default:stick", "default:steel_ingot", "default:stick" },
{ "default:steel_ingot", "", "" }
}
)
})
minetest.register_craft( -- steel support
{
output = "banners:steel_base",
recipe = {
{"", "default:steel_ingot", ""},
{"default:steel_ingot", "", "default:steel_ingot"},
{"", "default:steelblock", ""}
}
-- wooden flag support base
core.register_craft({
output = "banners:wooden_base 1",
recipe = {
{ "", "default:stick", "" },
{ "default:stick", "", "default:stick" },
{ "group:wood", "group:wood", "group:wood" }
}
)
})
minetest.register_craft( -- banner sheet
{
output = "banners:banner_sheet 1",
recipe = {
{"", "", ""},
{"farming:cotton", "farming:cotton", "farming:cotton"},
{"farming:cotton", "farming:cotton", "farming:cotton"}
}
-- steel support
core.register_craft({
output = "banners:steel_base",
recipe = {
{ "", "default:steel_ingot", "" },
{ "default:steel_ingot", "", "default:steel_ingot" },
{ "", "default:steelblock", "" }
}
)
})
minetest.register_craft( -- wooden support
{
output = "banners:wooden_banner 1",
recipe = {
{"", "banners:banner_sheet", ""},
{"", "banners:wooden_pole", ""},
{"", "banners:wooden_base", ""}
}
-- banner sheet
core.register_craft({
output = "banners:banner_sheet 1",
recipe = {
{ "", "", "" },
{ "farming:cotton", "farming:cotton", "farming:cotton" },
{ "farming:cotton", "farming:cotton", "farming:cotton" }
}
)
})
minetest.register_craft( -- steel support
{
output = "banners:steel_banner 1",
recipe = {
{"", "banners:banner_sheet", ""},
{"", "banners:steel_pole", ""},
{"", "banners:steel_base", ""}
}
-- wooden support
core.register_craft({
output = "banners:wooden_banner 1",
recipe = {
{ "", "banners:banner_sheet", "" },
{ "", "banners:wooden_pole", "" },
{ "", "banners:wooden_base", "" }
}
)
})
-- steel support
core.register_craft({
output = "banners:steel_banner 1",
recipe = {
{ "", "banners:banner_sheet", "" },
{ "", "banners:steel_pole", "" },
{ "", "banners:steel_base", "" }
}
})

View File

@ -1,2 +0,0 @@
default
farming

View File

@ -1 +0,0 @@
Adds customisable banners.

Binary file not shown.

View File

@ -1,43 +1,43 @@
banners.power_per_banner = 10.
-- items
minetest.register_craftitem("banners:golden_finial", {
core.register_craftitem("banners:golden_finial", {
groups = {},
description = "Golden finial",
inventory_image = "gold_finial.png",
})
minetest.register_craftitem("banners:silver_pole", {
core.register_craftitem("banners:silver_pole", {
groups = {},
description = "Silver pole",
inventory_image = "silver_pole.png"
})
minetest.register_craftitem("banners:power_pole", {
core.register_craftitem("banners:power_pole", {
groups = {},
description = "Power pole",
inventory_image = "power_pole.png"
})
minetest.register_craftitem("banners:golden_sheet", {
core.register_craftitem("banners:golden_sheet", {
groups = {},
description = "Golden sheet",
inventory_image = "golden_sheet.png"
})
minetest.register_craftitem("banners:death_pole", {
core.register_craftitem("banners:death_pole", {
groups = {},
description = "Death pole",
inventory_image = "death_pole.png"
})
minetest.register_craftitem("banners:death_sheet", {
core.register_craftitem("banners:death_sheet", {
groups = {},
description = "Death sheet",
inventory_image = "death_sheet.png"
})
minetest.register_craftitem("banners:death_base", {
core.register_craftitem("banners:death_base", {
groups = {},
description = "Death base",
inventory_image = "death_base.png"
@ -46,122 +46,110 @@ minetest.register_craftitem("banners:death_base", {
-- crafts
minetest.register_craft( -- silver flag pole
{
output = "banners:silver_pole 1",
recipe = {
{"", "", "moreores:silver_ingot"},
{"", "moreores:silver_ingot", ""},
{"moreores:silver_ingot", "", ""}
}
-- silver flag pole
core.register_craft({
output = "banners:silver_pole 1",
recipe = {
{ "", "", "moreores:silver_ingot" },
{ "", "moreores:silver_ingot", "" },
{ "moreores:silver_ingot", "", "" }
}
)
})
minetest.register_craft( -- death flag pole
{
output = "banners:death_pole 1",
recipe = {
{"", "", "default:diamond"},
{"", "default:obsidian", ""},
{"default:obsidian", "", ""}
}
-- death flag pole
core.register_craft({
output = "banners:death_pole 1",
recipe = {
{ "", "", "default:diamond" },
{ "", "default:obsidian", "" },
{ "default:obsidian", "", "" }
}
)
})
minetest.register_craft( -- golden finial
{
output = "banners:golden_finial",
recipe = {
{"", "default:gold_ingot", "default:gold_ingot"},
{"", "default:gold_ingot", "default:gold_ingot"},
{"default:gold_ingot", "", ""}
}
-- golden finial
core.register_craft({
output = "banners:golden_finial",
recipe = {
{ "", "default:gold_ingot", "default:gold_ingot" },
{ "", "default:gold_ingot", "default:gold_ingot" },
{ "default:gold_ingot", "", "" }
}
)
})
minetest.register_craft( -- power flag pole
{
output = "banners:power_pole 1",
recipe = {
{"", "", ""},
{"", "banners:golden_finial", ""},
{"banners:silver_pole", "", ""}
}
-- power flag pole
core.register_craft({
output = "banners:power_pole 1",
recipe = {
{ "", "", "" },
{ "", "banners:golden_finial", "" },
{ "banners:silver_pole", "", "" }
}
)
})
minetest.register_craft( -- golden sheet
{
output = "banners:golden_sheet 1",
type = "shapeless",
recipe = { "default:gold_ingot", "banners:banner_sheet"}
}
)
-- golden sheet
core.register_craft({
output = "banners:golden_sheet 1",
type = "shapeless",
recipe = { "default:gold_ingot", "banners:banner_sheet" }
})
minetest.register_craft( -- death sheet
{
output = "banners:death_sheet 1",
type = "shapeless",
recipe = { "default:obsidian", "banners:banner_sheet"}
}
)
-- death sheet
core.register_craft({
output = "banners:death_sheet 1",
type = "shapeless",
recipe = { "default:obsidian", "banners:banner_sheet" }
})
minetest.register_craft( -- death sheet
{
output = "banners:death_base 1",
recipe = {
{"", "", ""},
{"", "banners:steel_base", ""},
{"default:obsidian", "default:obsidian", "default:obsidian"}
}
-- death sheet
core.register_craft({
output = "banners:death_base 1",
recipe = {
{ "", "", "" },
{ "", "banners:steel_base", "" },
{ "default:obsidian", "default:obsidian", "default:obsidian" }
}
)
})
minetest.register_craft( -- power banner
{
output = "banners:power_banner",
recipe = {
{"", "banners:golden_sheet", ""},
{"", "banners:power_pole", ""},
{"", "banners:steel_base", ""}
}
-- power banner
core.register_craft({
output = "banners:power_banner",
recipe = {
{ "", "banners:golden_sheet", "" },
{ "", "banners:power_pole", "" },
{ "", "banners:steel_base", "" }
}
)
})
minetest.register_craft( -- death banner
{
output = "banners:death_banner",
recipe = {
{"", "banners:death_sheet", ""},
{"", "banners:death_pole", ""},
{"", "banners:death_base", ""}
}
-- death banner
core.register_craft({
output = "banners:death_banner",
recipe = {
{ "", "banners:death_sheet", "" },
{ "", "banners:death_pole", "" },
{ "", "banners:death_base", "" }
}
)
})
-- nodes
minetest.register_node("banners:power_banner", {
core.register_node("banners:power_banner", {
drawtype = "mesh",
mesh = "banner_support.x",
tiles = {"gold_support.png"},
mesh = "banner_support.obj",
tiles = { "gold_support.png" },
description = "Power Banner",
groups = {cracky=3},
groups = { cracky = 3 },
is_ground_content = false,
diggable = true,
stack_max = 1,
paramtype = "light",
paramtype2 = "facedir",
after_place_node = function (pos, player, itemstack, pointed_thing)
banners.after_powerbanner_placed(pos, player, itemstack, pointed_thing)
end,
on_destruct = function(pos)
banners.banner_on_destruct(pos)
end,
after_place_node = banners.after_powerbanner_placed,
on_destruct = banners.banner_on_destruct,
on_dig = function(pos, n, p)
if minetest.is_protected(pos, p:get_player_name()) then
if core.is_protected(pos, p:get_player_name()) then
return
end
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local facname = meta:get_string("faction")
if facname then
local faction = factions.factions[facname]
@ -171,29 +159,28 @@ minetest.register_node("banners:power_banner", {
end
banners.banner_on_dig(pos, n, p)
end,
on_movenode = banners.banner_on_movenode,
})
minetest.register_node("banners:death_banner", {
core.register_node("banners:death_banner", {
drawtype = "mesh",
mesh = "banner_support.x",
tiles = {"death_uv.png"},
mesh = "banner_support.obj",
tiles = { "death_uv.png" },
description = "Death Banner",
groups = {cracky=3},
groups = { cracky = 3 },
is_ground_content = false,
diggable = true,
stack_max = 1,
paramtype = "light",
paramtype2 = "facedir",
after_place_node = function (pos, player, itemstack, pointed_thing)
banners.after_deathbanner_placed(pos, player, itemstack, pointed_thing)
end,
on_destruct = function(pos)
banners.banner_on_destruct(pos)
end,
on_dig = function(pos, n, p)
if minetest.is_protected(pos, p:get_player_name()) then
after_place_node = banners.after_deathbanner_placed,
on_destruct = banners.banner_on_destruct,
-- (pos, node, player)
on_dig = function(pos, _, player)
if core.is_protected(pos, player:get_player_name()) then
return
end
local meta = minetest.get_meta(pos)
local meta = core.get_meta(pos)
local defending_facname = meta:get_string("faction")
local parcelpos = factions.get_parcel_pos(pos)
if defending_facname then
@ -202,34 +189,37 @@ minetest.register_node("banners:death_banner", {
faction:stop_attack(parcelpos)
end
end
minetest.remove_node(pos)
core.remove_node(pos)
end,
on_movenode = banners.banner_on_movenode,
})
banners.after_powerbanner_placed = function(pos, player, itemstack, pointed_thing)
minetest.get_node(pos).param2 = banners.determine_flag_direction(pos, pointed_thing)
-- (pos, player, itemstack, pointed_thing)
banners.after_powerbanner_placed = function(pos, player, _, pointed_thing)
core.get_node(pos).param2 = banners.determine_flag_direction(pos, pointed_thing)
local faction = factions.players[player:get_player_name()]
if not faction then
minetest.get_meta(pos):set_string("banner", "bg_white.png")
core.get_meta(pos):set_string("banner", "bg_white.png")
else
local banner_string = factions.factions[faction].banner
minetest.get_meta(pos):set_string("banner", banner_string)
minetest.get_meta(pos):set_string("faction", faction)
core.get_meta(pos):set_string("banner", banner_string)
core.get_meta(pos):set_string("faction", faction)
factions.factions[faction]:increase_maxpower(banners.power_per_banner)
end
minetest.add_entity(pos, "banners:banner_ent")
core.add_entity(pos, "banners:banner_ent")
end
banners.after_deathbanner_placed = function(pos, player, itemstack, pointed_thing)
minetest.get_node(pos).param2 = banners.determine_flag_direction(pos, pointed_thing)
-- (pos, player, itemstack, pointed_thing)
banners.after_deathbanner_placed = function(pos, player, _, pointed_thing)
core.get_node(pos).param2 = banners.determine_flag_direction(pos, pointed_thing)
local attacking_faction = factions.players[player:get_player_name()]
if attacking_faction then
local parcelpos = factions.get_parcel_pos(pos)
attacking_faction = factions.factions[attacking_faction]
attacking_faction:attack_parcel(parcelpos)
minetest.get_meta(pos):set_string("faction", attacking_faction.name)
core.get_meta(pos):set_string("faction", attacking_faction.name)
end
minetest.get_meta(pos):set_string("banner", "death_uv.png")
minetest.add_entity(pos, "banners:banner_ent")
core.get_meta(pos):set_string("banner", "death_uv.png")
core.add_entity(pos, "banners:banner_ent")
end

352
init.lua
View File

@ -1,6 +1,9 @@
dofile(minetest.get_modpath("banners").."/smartfs.lua")
local MP = core.get_modpath("banners") .. "/"
dofile(MP .. "smartfs.lua")
banners = {}
banners = {
version = 20241130.1920
}
banners.masks = {
"bend_left", "bend_left_outline",
@ -28,6 +31,15 @@ banners.masks = {
"star_chevron", "checkered_8_4", "checkered_16_8"
}
-- It is now unlikely for the server to crash from too long
-- history since we now trim out garbage when converting to
-- metadata. This limit is now just to avoid run-time
-- memory bloat.
banners.max_undo_levels = 256
-- cache of player histories
local histories = {}
banners.colors = {
"black", "cyan", "green", "white",
"blue", "darkblue", "red", "yellow",
@ -35,58 +47,91 @@ banners.colors = {
"brown", "darkbrown"
}
banners.base_transform = ({texture = "bg_white.png",
mask="mask_background.png"})
local valid_masks = {}
local valid_colors = {}
do
local i, s
i = #banners.masks
repeat
s = banners.masks[i]
valid_masks[s .. ".png"] = true
i = i - 1
until i == 0
banners.creation_form_func = function(state)
i = #banners.colors
repeat
s = banners.colors[i]
valid_colors["bg_" .. s .. ".png"] = true
i = i - 1
until i == 0
end
banners.base_transform = {
texture = "bg_white.png",
mask = "mask_background.png"
}
function banners.creation_form_func(state)
-- helper functions
state.update_player_inv = function(self)
local player = minetest.get_player_by_name(self.player)
function state:update_player_inv(transform_string)
local player = core.get_player_by_name(self.player)
local newbanner = player:get_wielded_item()
newbanner:set_metadata(state.banner:get_transform_string())
newbanner:get_meta():set_string("", transform_string)
player:set_wielded_item(newbanner)
end
state.update_preview = function(self)
self:get("banner_preview"):setImage(self.banner:get_transform_string())
function state:update_preview(transform_string)
self:get("banner_preview"):setImage(transform_string)
self:get("color_indicator"):setImage(self.current_color)
end
state.update_all = function(self)
self:update_preview()
self:update_player_inv()
function state:update_preview_inv()
local transform_string = self.banner:get_transform_string()
self:update_preview(transform_string)
self:update_player_inv(transform_string)
end
-- initialize with empty banner
state.banner = banners.Banner:new(nil)
state.banner:push_transform(banners.base_transform)
state.current_color = "bg_white.png"
state:size(20,10)
state:image(3, 0.4, 4, 2, "banner_preview", nil)
state:image(2.4, 0.8, 0.7, 0.7, "color_indicator", state.current_color)
state:update_all()
if histories[state.player] then
-- initialize with saved history
state.banner = histories[state.player]
else
-- initialize with empty banner
state.banner = banners.Banner:new(nil)
state.banner:push_transform(banners.base_transform)
histories[state.player] = state.banner
end
state.banner:read_item(state.player)
state.current_color = state.banner.color
state:size(20, 10)
state:image(3.4, 0.4, 4, 2, "banner_preview", nil)
state:image(2.55, 0.95, 0.7, 0.7, "color_indicator", state.current_color)
state:update_preview_inv()
-- color indicator
-- undo button
state:button(0.5, 0.3, 2, 1, "undo", "Undo"):click(function(self, state)
if #state.banner.transforms > 1 then
state.banner:pop_transform()
state:update_all()
end
end)
state:button(0.5, 0.3, 2, 1, "undo", "Undo"):click(function(_, state2)
if #state2.banner.transforms > 1 then
state2.banner:pop_transform()
state2:update_preview_inv()
end
end)
-- delete button
state:button(0.5, 1.3, 2, 1, "delete", "Delete"):click(function(self, state)
state.banner.transforms = {banners.base_transform}
state:update_all()
end)
state:button(0.5, 1.3, 2, 1, "delete", "Delete"):click(function(_, state2)
state2.banner.transforms = { banners.base_transform }
state2:update_preview_inv()
end)
-- add banners colors
local x = 7
local y = .3
for i in ipairs(banners.colors) do
local b = state:button(x, y, 1, 1, banners.colors[i], "")
b:setImage("bg_"..banners.colors[i]..".png")
b:click(function(self, state)
state.current_color = "bg_"..self.name..".png"
state:update_preview()
-- todo: update masks or something
end
)
for _, color in ipairs(banners.colors) do
local b = state:button(x, y, 1, 1, color, "")
b:setImage("bg_" .. color .. ".png")
b:click(function(self, state2)
state2.current_color = "bg_" .. self.name .. ".png"
state2:get("color_indicator"):setImage(state2.current_color)
state2.banner.color = state2.current_color
-- update masks
for _, mask in ipairs(banners.masks) do
state2:get(mask):setImage("(" .. state2.current_color
.. "^[mask:" .. mask .. ".png^[makealpha:0,0,0)")
end
end)
x = x + 1
if x > 19 then
y = y + 1
@ -94,16 +139,19 @@ banners.creation_form_func = function(state)
end
end
-- add banners buttons
local x = 1
local y = 3
for i in ipairs(banners.masks) do
local b = state:button(x, y, 2, 1, banners.masks[i], "")
b:setImage(banners.masks[i]..".png")
b:click(function(self, state)
state.banner:push_transform({texture=state.current_color, mask=self.name..".png"})
state:update_all()
end
)
x = 1
y = 3
for _, mask in ipairs(banners.masks) do
local b = state:button(x, y, 2, 1, mask, "")
b:setImage("(" .. state.current_color
.. "^[mask:" .. mask .. ".png^[makealpha:0,0,0)")
b:click(function(self, state2)
state2.banner:push_transform({
texture = state2.current_color,
mask = self.name .. ".png"
})
state2:update_preview_inv()
end)
x = x + 2
if x > 17.5 then
y = y + 1
@ -114,62 +162,133 @@ banners.creation_form_func = function(state)
end
banners.creation_form = smartfs.create("banners:banner_creation",
banners.creation_form_func);
banners.creation_form_func)
function banners.transform_string_to_table(transform_string)
local mask, parts, texture
local transforms = {}
for part in transform_string:gmatch("%(([^%)]+)%)") do
parts = part:split("^[")
if 3 == #parts then
texture = parts[1]
mask = parts[2]:sub(6)
if valid_masks[mask] and valid_colors[texture] then
table.insert(transforms, {
texture = texture,
mask = mask
})
end
end
end
return transforms
end
function banners.transform_table_to_string(transforms)
local i = #transforms
if 0 == i then return "" end
local final = {}
local used = {}
local transform
-- work backwards to keep resulting data small
repeat
transform = transforms[i]
-- duplicate mask can be trimmed out only use most recent
if not used[transform.mask] then
used[transform.mask] = true
table.insert(final, 1, "(" .. transform.texture
.. "^[mask:" .. transform.mask .. "^[makealpha:0,0,0)")
-- anything before a background is fully covered
if "mask_background.png" == transform.mask then
break
end
end
i = i - 1
until i == 0
return table.concat(final, "^")
end
-- banner definition
banners.Banner = {
transforms = {}
}
banners.Banner = {}
function banners.Banner:new(banner)
banner = banner or {}
banner = banner or { color = "bg_black.png", transforms = {} }
setmetatable(banner, self)
self.__index = self
return banner
end
function banners.Banner.push_transform(self, transform)
function banners.Banner:push_transform(transform)
table.insert(self.transforms, transform)
if #self.transforms > banners.max_undo_levels then
table.remove(self.transforms, 1)
end
end
function banners.Banner.pop_transform(self)
function banners.Banner:pop_transform()
table.remove(self.transforms)
end
function banners.Banner.get_transform_string(self)
local final = {}
for i in ipairs(self.transforms) do
table.insert(final, "("..self.transforms[i].texture.."^[mask:"..self.transforms[i].mask.."^[makealpha:0,0,0)")
end
local ret = table.concat(final, "^")
return ret
function banners.Banner:get_transform_string()
return banners.transform_table_to_string(self.transforms)
end
function banners.Banner:read_item(player_name)
local player = core.get_player_by_name(player_name)
local item = player:get_wielded_item()
if "banners:" ~= item:get_name():sub(1, 8) then return end
local transforms = banners.transform_string_to_table(
item:get_meta():get_string(""))
local total = #transforms
if 0 == total then return end
local i = 1
repeat
self:push_transform(transforms[i])
i = i + 1
until i > total
end
-- helper function for determining the flag's direction
banners.determine_flag_direction = function(pos, pointed_thing)
-- (pos, pointed_thing)
function banners.determine_flag_direction(_, pointed_thing)
local above = pointed_thing.above
local under = pointed_thing.under
local dir = {x = under.x - above.x,
y = under.y - above.y,
z = under.z - above.z}
return minetest.dir_to_wallmounted(dir)
local dir = {
x = under.x - above.x,
y = under.y - above.y,
z = under.z - above.z
}
return core.dir_to_wallmounted(dir)
end
banners.banner_on_use = function(itemstack, player, pointed_thing)
-- (itemstack, player, pointed_thing)
function banners.banner_on_use(_, player)
if player.is_player then
banners.creation_form:show(player:get_player_name())
end
end
banners.banner_on_dig = function(pos, node, player)
local meta = minetest.get_meta(pos)
if player then
local inventory = player:get_inventory()
inventory:add_item("main", {name=node.name, count=1, wear=0, metadata=meta:get_string("banner")})
end
minetest.remove_node(pos)
function banners.banner_on_dig(pos, node, player)
if not player or core.is_protected(pos, player:get_player_name()) then
return
end
local meta = core.get_meta(pos)
local inventory = player:get_inventory()
inventory:add_item("main", {
name = node.name,
count = 1,
wear = 0,
metadata = meta:get_string("banner")
})
core.remove_node(pos)
end
banners.banner_on_destruct = function(pos, node, player)
local objects = minetest.get_objects_inside_radius(pos, 0.5)
for _,v in ipairs(objects) do
-- (pos, node, player)
function banners.banner_on_destruct(pos)
local objects = core.get_objects_inside_radius(pos, 0.5)
for _, v in ipairs(objects) do
local e = v:get_luaentity()
if e and e.name == "banners:banner_ent" then
v:remove()
@ -177,23 +296,35 @@ banners.banner_on_destruct = function(pos, node, player)
end
end
banners.banner_after_place = function (pos, player, itemstack, pointed_thing)
minetest.get_node(pos).param2 = banners.determine_flag_direction(pos, pointed_thing)
minetest.get_meta(pos):set_string("banner", itemstack:get_metadata())
minetest.add_entity(pos, "banners:banner_ent")
-- (pos, player, itemstack, pointed_thing)
function banners.banner_after_place(pos, _, itemstack, pointed_thing)
core.get_node(pos).param2 = banners.determine_flag_direction(pos, pointed_thing)
local meta = core.get_meta(pos)
meta:set_string("banner", itemstack:get_meta():get_string(""))
meta:set_float("version", banners.version)
core.add_entity(pos, "banners:banner_ent")
end
-- [jumpdrive] compat
-- (from_pos, to_pos, additional_info)
function banners.banner_on_movenode(_, to_pos)
core.add_entity(to_pos, "banners:banner_ent")
end
-- banner entity
local set_banner_texture
set_banner_texture = function (obj, texture)
obj:set_properties({textures={"banner_uv_text.png^"..texture}})
end
banners.banner_on_activate = function(self)
local pos = self.object:getpos()
local banner = minetest.get_meta(pos):get_string("banner")
local banner_face = minetest.get_node(pos).param2
function banners:banner_on_activate()
local pos = self.object:get_pos()
local meta = core.get_meta(pos)
local banner = meta:get_string("banner")
-- cleanup meta of old banners
if meta:get_float("version") < 20241122 then
meta:set_float("version", banners.version)
banner = banners.transform_table_to_string(
banners.transform_string_to_table(banner))
meta:set_string("banner", banner)
end
local banner_face = core.get_node(pos).param2
local yaw = 0.
if banner_face == 2 then
yaw = 0.
@ -204,27 +335,28 @@ banners.banner_on_activate = function(self)
elseif banner_face == 3 then
yaw = 4.71238898038469 -- 3 * pi / 2
end
self.object:setyaw(yaw)
if banner then
set_banner_texture(self.object, banner)
end
self.object:set_yaw(yaw)
self.object:set_properties({
textures = { "banner_uv_text.png^" .. banner }
})
end
minetest.register_entity("banners:banner_ent",
{
collisionbox = {0,0,0,0,0,0},
core.register_entity("banners:banner_ent", {
initial_properties = {
collisionbox = { 0, 0, 0, 0, 0, 0 },
visual = "mesh",
textures = {"banner_uv_text"},
mesh = "banner_pole.x",
on_activate = banners.banner_on_activate,
}
)
textures = { "banner_uv_text" },
mesh = "banner_pole.obj",
},
on_activate = banners.banner_on_activate,
})
if minetest.get_modpath("factions") then
dofile(minetest.get_modpath("banners").."/factions.lua")
if core.get_modpath("factions") then
dofile(MP .. "factions.lua")
end
dofile(minetest.get_modpath("banners").."/items.lua")
dofile(minetest.get_modpath("banners").."/nodes.lua")
dofile(minetest.get_modpath("banners").."/crafts.lua")
dofile(MP .. "items.lua")
dofile(MP .. "nodes.lua")
dofile(MP .. "crafts.lua")
dofile(MP .. "chatcommands.lua")

View File

@ -2,44 +2,35 @@
-- items
minetest.register_craftitem("banners:banner_sheet",
{
groups = {},
description = "Banner sheet",
inventory_image = "banner_sheet.png",
stack_max = 1,
metadata = "",
}
)
core.register_craftitem("banners:banner_sheet", {
groups = {},
description = "Banner sheet",
inventory_image = "banner_sheet.png",
stack_max = 1,
metadata = "",
})
minetest.register_craftitem("banners:wooden_pole",
{
groups = {},
description = "Wooden pole",
inventory_image = "wooden_pole.png"
}
)
core.register_craftitem("banners:wooden_pole", {
groups = {},
description = "Wooden pole",
inventory_image = "wooden_pole.png"
})
minetest.register_craftitem("banners:wooden_base",
{
groups = {},
description = "Wooden base",
inventory_image = "wooden_base.png"
}
)
core.register_craftitem("banners:wooden_base", {
groups = {},
description = "Wooden base",
inventory_image = "wooden_base.png"
})
minetest.register_craftitem("banners:steel_pole",
{
groups = {},
description = "Steel pole",
inventory_image = "steel_pole.png"
}
)
core.register_craftitem("banners:steel_pole", {
groups = {},
description = "Steel pole",
inventory_image = "steel_pole.png"
})
core.register_craftitem("banners:steel_base", {
groups = {},
description = "Steel base",
inventory_image = "steel_base.png"
})
minetest.register_craftitem("banners:steel_base",
{
groups = {},
description = "Steel base",
inventory_image = "steel_base.png"
}
)

4
mod.conf Normal file
View File

@ -0,0 +1,4 @@
name = banners
description = Adds customisable banners.
depends = default, farming
optional_depends = factions, inventory_plus, unified_inventory

425
models/banner_pole.obj Normal file
View File

@ -0,0 +1,425 @@
# Blender 4.4.3
# www.blender.org
mtllib banner.mtl
o flag
v -0.543572 -5.241243 -0.533402
v -0.543572 44.039852 -0.533402
v -0.543572 -5.241243 0.535398
v -0.543572 44.039852 0.535398
v 0.458428 -5.241243 -0.533402
v 0.458428 44.039852 -0.533402
v 0.458428 -5.241243 0.535398
v 0.458428 44.039852 0.535398
v -19.753599 31.074223 -0.462508
v -19.753599 41.649487 -0.462508
v -18.855709 31.074223 -0.975180
v -18.855709 41.649487 -0.975179
v -18.229603 31.074223 -1.332998
v -18.229603 41.649487 -1.332998
v -17.550665 31.074223 -1.601055
v -17.550665 41.649483 -1.601056
v -16.821354 31.074223 -1.796366
v -16.821354 41.649483 -1.796365
v -16.005564 31.074223 -1.856682
v -16.005564 41.649483 -1.856682
v -15.163716 31.074223 -1.887776
v -15.163716 41.649483 -1.887777
v -14.255428 31.074223 -1.796628
v -14.255428 41.649487 -1.796628
v -13.328875 31.074223 -1.675647
v -13.328875 41.649483 -1.675646
v -12.373619 31.074223 -1.496117
v -12.373619 41.649483 -1.496117
v -11.394333 31.074223 -1.277657
v -11.394333 41.649487 -1.277656
v -10.402903 31.074223 -1.038762
v -10.402903 41.649483 -1.038762
v -9.378026 31.074223 -0.778455
v -9.378026 41.649483 -0.778455
v -8.341211 31.074223 -0.518895
v -8.341211 41.649483 -0.518895
v -7.269663 31.074223 -0.267102
v -7.269663 41.649483 -0.267102
v -6.166732 31.074223 -0.039093
v -6.166732 41.649487 -0.039093
v -5.032305 31.074223 0.162840
v -5.032305 41.649483 0.162840
v -3.830252 31.074223 0.282162
v -3.830252 41.649487 0.282162
v -2.602708 31.074223 0.356084
v -2.602708 41.649483 0.356084
v -1.284628 31.074223 0.236404
v -1.284628 41.649487 0.236403
v 0.038545 31.074223 -0.015804
v 0.038545 41.649483 -0.015804
v -19.754112 31.074223 -0.375066
v -19.754112 41.649487 -0.375066
v -18.856224 31.074223 -0.887738
v -18.856224 41.649487 -0.887738
v -18.230114 31.074223 -1.245556
v -18.230114 41.649487 -1.245556
v -17.551180 31.074223 -1.513614
v -17.551180 41.649483 -1.513615
v -16.821869 31.074223 -1.708924
v -16.821869 41.649483 -1.708924
v -16.006077 31.074223 -1.769240
v -16.006077 41.649483 -1.769240
v -15.164232 31.074223 -1.800334
v -15.164232 41.649483 -1.800334
v -14.255943 31.074223 -1.709186
v -14.255943 41.649487 -1.709186
v -13.329390 31.074223 -1.588204
v -13.329390 41.649483 -1.588204
v -12.374133 31.074223 -1.408675
v -12.374133 41.649483 -1.408675
v -11.394847 31.074223 -1.190215
v -11.394847 41.649487 -1.190214
v -10.403419 31.074223 -0.951321
v -10.403419 41.649483 -0.951321
v -9.378540 31.074223 -0.691013
v -9.378540 41.649483 -0.691014
v -8.341725 31.074223 -0.431453
v -8.341725 41.649483 -0.431453
v -7.270178 31.074223 -0.179660
v -7.270178 41.649483 -0.179660
v -6.167245 31.074223 0.048348
v -6.167245 41.649487 0.048349
v -5.032819 31.074223 0.250282
v -5.032819 41.649483 0.250282
v -3.830766 31.074223 0.369604
v -3.830766 41.649487 0.369604
v -2.603222 31.074223 0.443526
v -2.603222 41.649483 0.443526
v -1.285142 31.074223 0.323846
v -1.285142 41.649487 0.323846
v 0.038031 31.074223 0.071638
v 0.038031 41.649483 0.071638
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn -0.0000 1.0000 -0.0000
vn -0.0000 -1.0000 -0.0000
vn -0.4962 -0.0000 -0.8682
vn -0.4958 -0.0000 -0.8684
vn -0.3672 -0.0000 -0.9301
vn -0.0737 -0.0000 -0.9973
vn -0.2587 -0.0000 -0.9660
vn -0.0369 -0.0000 -0.9993
vn 0.1295 -0.0000 -0.9916
vn 0.0998 -0.0000 -0.9950
vn 0.1847 -0.0000 -0.9828
vn 0.2343 -0.0000 -0.9722
vn 0.2177 -0.0000 -0.9760
vn 0.2428 -0.0000 -0.9701
vn 0.2462 -0.0000 -0.9692
vn 0.2288 -0.0000 -0.9735
vn 0.1752 -0.0000 -0.9845
vn 0.2024 -0.0000 -0.9793
vn 0.0988 -0.0000 -0.9951
vn -0.0904 -0.0000 -0.9959
vn 0.0601 -0.0000 -0.9982
vn -0.1872 -0.0000 -0.9823
vn 0.4962 -0.0000 0.8682
vn 0.4958 -0.0000 0.8684
vn 0.3672 -0.0000 0.9301
vn 0.0737 -0.0000 0.9973
vn 0.2587 -0.0000 0.9660
vn 0.0369 -0.0000 0.9993
vn -0.1295 -0.0000 0.9916
vn -0.0998 -0.0000 0.9950
vn -0.1847 -0.0000 0.9828
vn -0.2343 -0.0000 0.9722
vn -0.2177 -0.0000 0.9760
vn -0.2428 -0.0000 0.9701
vn -0.2462 -0.0000 0.9692
vn -0.2288 -0.0000 0.9735
vn -0.1752 -0.0000 0.9845
vn -0.2024 -0.0000 0.9793
vn -0.0988 -0.0000 0.9951
vn 0.0904 -0.0000 0.9959
vn -0.0601 -0.0000 0.9982
vn 0.1872 -0.0000 0.9823
vn -1.0000 -0.0000 -0.0059
vn 1.0000 -0.0000 0.0059
vt 0.502372 0.344045
vt 0.502372 0.325948
vt 0.993251 0.325948
vt 0.993251 0.344045
vt 0.997751 0.312205
vt 0.997751 0.325777
vt 0.506885 0.325779
vt 0.506885 0.312205
vt 0.488799 0.325948
vt 0.488799 0.344045
vt -0.002080 0.344045
vt -0.002080 0.325948
vt -0.002080 0.325779
vt -0.002080 0.312207
vt 0.488786 0.312205
vt 0.488786 0.325779
vt 0.943902 0.997273
vt 0.908697 0.997273
vt 0.908696 0.497389
vt 0.943901 0.497389
vt 0.994376 0.497389
vt 0.994377 0.997273
vt 0.873062 0.997273
vt 0.873062 0.497389
vt 0.836204 0.997273
vt 0.796270 0.997273
vt 0.796270 0.497389
vt 0.836203 0.497389
vt 0.755145 0.997273
vt 0.755144 0.497389
vt 0.710581 0.997273
vt 0.664964 0.997273
vt 0.664964 0.497389
vt 0.710580 0.497389
vt 0.617514 0.997273
vt 0.617513 0.497389
vt 0.568531 0.997273
vt 0.518746 0.997273
vt 0.518746 0.497389
vt 0.568531 0.497389
vt 0.467125 0.997273
vt 0.414948 0.997273
vt 0.414948 0.497389
vt 0.467125 0.497389
vt 0.361211 0.997273
vt 0.361212 0.497389
vt 0.306230 0.997273
vt 0.249978 0.997273
vt 0.249979 0.497389
vt 0.306230 0.497389
vt 0.191008 0.997273
vt 0.191008 0.497389
vt 0.130973 0.997273
vt 0.066362 0.997273
vt 0.066362 0.497389
vt 0.130973 0.497389
vt 0.000604 0.997273
vt 0.000604 0.497389
vt 0.941264 0.998578
vt 0.941265 0.492496
vt 0.906167 0.492496
vt 0.906167 0.998578
vt 0.991585 0.998578
vt 0.991585 0.492496
vt 0.870642 0.492496
vt 0.870642 0.998578
vt 0.833896 0.998578
vt 0.833896 0.492496
vt 0.794084 0.492496
vt 0.794084 0.998578
vt 0.753084 0.492496
vt 0.753085 0.998578
vt 0.708657 0.998578
vt 0.708657 0.492496
vt 0.663180 0.492496
vt 0.663180 0.998578
vt 0.615874 0.492496
vt 0.615874 0.998578
vt 0.567042 0.998578
vt 0.567042 0.492496
vt 0.517409 0.492496
vt 0.517409 0.998578
vt 0.465946 0.998578
vt 0.465945 0.492496
vt 0.413927 0.492496
vt 0.413928 0.998578
vt 0.360356 0.492496
vt 0.360356 0.998578
vt 0.305542 0.998578
vt 0.305542 0.492496
vt 0.249463 0.492496
vt 0.249463 0.998578
vt 0.190673 0.492496
vt 0.190673 0.998578
vt 0.130821 0.998578
vt 0.130821 0.492496
vt 0.066407 0.492496
vt 0.066407 0.998578
vt 0.000850 0.492496
vt 0.000850 0.998578
vt 0.819613 0.067723
vt 0.721014 0.067723
vt 0.721002 0.066003
vt 0.819602 0.066002
vt 0.594108 0.172586
vt 0.581155 0.174942
vt 0.581155 0.173757
vt 0.594108 0.171402
vt 0.726607 0.148275
vt 0.709973 0.149179
vt 0.709973 0.147994
vt 0.726607 0.147091
vt 0.533037 0.180145
vt 0.544035 0.178802
vt 0.544085 0.179986
vt 0.533086 0.181329
vt 0.648599 0.191953
vt 0.663260 0.194668
vt 0.663310 0.195852
vt 0.648648 0.193137
vt 0.544883 0.177181
vt 0.533838 0.176299
vt 0.533838 0.175114
vt 0.544883 0.175996
vt 0.663341 0.156345
vt 0.648807 0.159670
vt 0.648807 0.158486
vt 0.663341 0.155161
vt 0.506347 0.165013
vt 0.494225 0.157997
vt 0.494225 0.156813
vt 0.506347 0.163829
vt 0.607391 0.169705
vt 0.607391 0.168521
vt 0.726809 0.200087
vt 0.744566 0.197616
vt 0.744616 0.198800
vt 0.726858 0.201270
vt 0.494225 0.200086
vt 0.506043 0.192570
vt 0.506092 0.193753
vt 0.494274 0.201269
vt 0.593408 0.181335
vt 0.606799 0.183659
vt 0.606849 0.184842
vt 0.593458 0.182519
vt 0.744451 0.150001
vt 0.744451 0.148817
vt 0.555405 0.177838
vt 0.555455 0.179021
vt 0.678331 0.197041
vt 0.678380 0.198225
vt 0.721002 0.067892
vt 0.819602 0.067892
vt 0.819613 0.069613
vt 0.721014 0.069613
vt 0.556284 0.177669
vt 0.556284 0.176485
vt 0.678299 0.153344
vt 0.678299 0.152160
vt 0.514283 0.187324
vt 0.514332 0.188507
vt 0.620368 0.186251
vt 0.620417 0.187434
vt 0.762307 0.193349
vt 0.762356 0.194533
vt 0.514799 0.169910
vt 0.514799 0.168725
vt 0.620839 0.166548
vt 0.620839 0.165364
vt 0.762354 0.153523
vt 0.762354 0.152338
vt 0.567753 0.178485
vt 0.567803 0.179668
vt 0.693811 0.199041
vt 0.693860 0.200224
vt 0.568595 0.176507
vt 0.568595 0.175322
vt 0.693681 0.150699
vt 0.693681 0.149515
vt 0.523295 0.183259
vt 0.523345 0.184442
vt 0.634403 0.189111
vt 0.634452 0.190295
vt 0.523974 0.173595
vt 0.523974 0.172411
vt 0.634742 0.163104
vt 0.634742 0.161919
vt 0.580368 0.179523
vt 0.580417 0.180707
vt 0.710152 0.199879
vt 0.710202 0.201063
s 0
f 2/1/1 4/2/1 3/3/1 1/4/1
f 4/5/2 8/6/2 7/7/2 3/8/2
f 8/9/3 6/10/3 5/11/3 7/12/3
f 6/13/4 2/14/4 1/15/4 5/16/4
f 1/15/5 3/8/5 7/7/5 5/16/5
f 6/10/6 8/9/6 4/2/6 2/1/6
f 12/17/7 14/18/7 13/19/7 11/20/7
f 12/17/8 11/20/8 9/21/8 10/22/8
f 14/18/9 16/23/9 15/24/9 13/19/9
f 18/25/10 20/26/10 19/27/10 17/28/10
f 16/23/11 18/25/11 17/28/11 15/24/11
f 20/26/12 22/29/12 21/30/12 19/27/12
f 24/31/13 26/32/13 25/33/13 23/34/13
f 22/29/14 24/31/14 23/34/14 21/30/14
f 26/32/15 28/35/15 27/36/15 25/33/15
f 30/37/16 32/38/16 31/39/16 29/40/16
f 28/35/17 30/37/17 29/40/17 27/36/17
f 34/41/18 36/42/18 35/43/18 33/44/18
f 32/38/19 34/41/19 33/44/19 31/39/19
f 36/42/20 38/45/20 37/46/20 35/43/20
f 40/47/21 42/48/21 41/49/21 39/50/21
f 38/45/22 40/47/22 39/50/22 37/46/22
f 42/48/23 44/51/23 43/52/23 41/49/23
f 46/53/24 48/54/24 47/55/24 45/56/24
f 44/51/25 46/53/25 45/56/25 43/52/25
f 48/54/26 50/57/26 49/58/26 47/55/26
f 54/59/27 53/60/27 55/61/27 56/62/27
f 54/59/28 52/63/28 51/64/28 53/60/28
f 56/62/29 55/61/29 57/65/29 58/66/29
f 60/67/30 59/68/30 61/69/30 62/70/30
f 58/66/31 57/65/31 59/68/31 60/67/31
f 62/70/32 61/69/32 63/71/32 64/72/32
f 66/73/33 65/74/33 67/75/33 68/76/33
f 64/72/34 63/71/34 65/74/34 66/73/34
f 68/76/35 67/75/35 69/77/35 70/78/35
f 72/79/36 71/80/36 73/81/36 74/82/36
f 70/78/37 69/77/37 71/80/37 72/79/37
f 76/83/38 75/84/38 77/85/38 78/86/38
f 74/82/39 73/81/39 75/84/39 76/83/39
f 78/86/40 77/85/40 79/87/40 80/88/40
f 82/89/41 81/90/41 83/91/41 84/92/41
f 80/88/42 79/87/42 81/90/42 82/89/42
f 84/92/43 83/91/43 85/93/43 86/94/43
f 88/95/44 87/96/44 89/97/44 90/98/44
f 86/94/45 85/93/45 87/96/45 88/95/45
f 90/98/46 89/97/46 91/99/46 92/100/46
f 10/101/47 9/102/47 51/103/47 52/104/47
f 28/105/5 26/106/5 68/107/5 70/108/5
f 46/109/5 44/110/5 86/111/5 88/112/5
f 17/113/6 19/114/6 61/115/6 59/116/6
f 35/117/6 37/118/6 79/119/6 77/120/6
f 20/121/5 18/122/5 60/123/5 62/124/5
f 38/125/5 36/126/5 78/127/5 80/128/5
f 12/129/5 10/130/5 52/131/5 54/132/5
f 30/133/5 28/105/5 70/108/5 72/134/5
f 45/135/6 47/136/6 89/137/6 87/138/6
f 9/139/6 11/140/6 53/141/6 51/142/6
f 27/143/6 29/144/6 71/145/6 69/146/6
f 48/147/5 46/109/5 88/112/5 90/148/5
f 19/114/6 21/149/6 63/150/6 61/115/6
f 37/118/6 39/151/6 81/152/6 79/119/6
f 49/153/48 50/154/48 92/155/48 91/156/48
f 22/157/5 20/121/5 62/124/5 64/158/5
f 40/159/5 38/125/5 80/128/5 82/160/5
f 11/140/6 13/161/6 55/162/6 53/141/6
f 29/144/6 31/163/6 73/164/6 71/145/6
f 47/136/6 49/165/6 91/166/6 89/137/6
f 14/167/5 12/129/5 54/132/5 56/168/5
f 32/169/5 30/133/5 72/134/5 74/170/5
f 50/171/5 48/147/5 90/148/5 92/172/5
f 21/149/6 23/173/6 65/174/6 63/150/6
f 39/151/6 41/175/6 83/176/6 81/152/6
f 24/177/5 22/157/5 64/158/5 66/178/5
f 42/179/5 40/159/5 82/160/5 84/180/5
f 13/161/6 15/181/6 57/182/6 55/162/6
f 31/163/6 33/183/6 75/184/6 73/164/6
f 16/185/5 14/167/5 56/168/5 58/186/5
f 34/187/5 32/169/5 74/170/5 76/188/5
f 23/173/6 25/189/6 67/190/6 65/174/6
f 41/175/6 43/191/6 85/192/6 83/176/6
f 26/106/5 24/177/5 66/178/5 68/107/5
f 44/110/5 42/179/5 84/180/5 86/111/5
f 15/181/6 17/113/6 59/116/6 57/182/6
f 33/183/6 35/117/6 77/120/6 75/184/6
f 18/122/5 16/185/5 58/186/5 60/123/5
f 36/126/5 34/187/5 76/188/5 78/127/5
f 25/189/6 27/143/6 69/146/6 67/190/6
f 43/191/6 45/135/6 87/138/6 85/192/6

View File

@ -1,997 +0,0 @@
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame flag {
FrameTransformMatrix {
16.700001, 0.000000, 0.000000, 0.000000,
0.000000,16.700001, 0.000000, 0.000000,
0.000000, 0.000000,16.700001, 0.000000,
-9.000000, 0.000000,12.000000, 1.000000;;
}
Mesh { // flag mesh
352;
0.506373; 0.031940; 1.261682;,
0.506373;-0.032060; 1.261682;,
0.506373;-0.032060;-1.689282;,
0.506373; 0.031940;-1.689282;,
0.506373;-0.032060; 1.261682;,
0.566373;-0.032060; 1.261682;,
0.566373;-0.032060;-1.689282;,
0.506373;-0.032060;-1.689282;,
0.566373;-0.032060; 1.261682;,
0.566373; 0.031940; 1.261682;,
0.566373; 0.031940;-1.689282;,
0.566373;-0.032060;-1.689282;,
0.566373; 0.031940; 1.261682;,
0.506373; 0.031940; 1.261682;,
0.506373; 0.031940;-1.689282;,
0.566373; 0.031940;-1.689282;,
0.506373; 0.031940;-1.689282;,
0.506373;-0.032060;-1.689282;,
0.566373;-0.032060;-1.689282;,
0.566373; 0.031940;-1.689282;,
0.566373; 0.031940; 1.261682;,
0.566373;-0.032060; 1.261682;,
0.506373;-0.032060; 1.261682;,
0.506373; 0.031940; 1.261682;,
-0.590162; 0.058394; 1.118546;,
-0.552671; 0.079820; 1.118546;,
-0.552671; 0.079820; 0.485297;,
-0.590162; 0.058394; 0.485297;,
-0.590162; 0.058394; 1.118546;,
-0.590162; 0.058394; 0.485297;,
-0.643928; 0.027695; 0.485297;,
-0.643928; 0.027695; 1.118546;,
-0.552671; 0.079820; 1.118546;,
-0.512016; 0.095872; 1.118546;,
-0.512016; 0.095872; 0.485297;,
-0.552671; 0.079820; 0.485297;,
-0.468345; 0.107567; 1.118546;,
-0.419495; 0.111179; 1.118546;,
-0.419495; 0.111179; 0.485297;,
-0.468345; 0.107567; 0.485297;,
-0.512016; 0.095872; 1.118546;,
-0.468345; 0.107567; 1.118546;,
-0.468345; 0.107567; 0.485297;,
-0.512016; 0.095872; 0.485297;,
-0.419495; 0.111179; 1.118546;,
-0.369085; 0.113041; 1.118546;,
-0.369085; 0.113040; 0.485297;,
-0.419495; 0.111179; 0.485297;,
-0.314696; 0.107583; 1.118546;,
-0.259214; 0.100338; 1.118546;,
-0.259214; 0.100338; 0.485297;,
-0.314696; 0.107583; 0.485297;,
-0.369085; 0.113041; 1.118546;,
-0.314696; 0.107583; 1.118546;,
-0.314696; 0.107583; 0.485297;,
-0.369085; 0.113040; 0.485297;,
-0.259214; 0.100338; 1.118546;,
-0.202013; 0.089588; 1.118546;,
-0.202013; 0.089588; 0.485297;,
-0.259214; 0.100338; 0.485297;,
-0.143373; 0.076506; 1.118546;,
-0.084006; 0.062201; 1.118546;,
-0.084006; 0.062201; 0.485297;,
-0.143373; 0.076506; 0.485297;,
-0.202013; 0.089588; 1.118546;,
-0.143373; 0.076506; 1.118546;,
-0.143373; 0.076506; 0.485297;,
-0.202013; 0.089588; 0.485297;,
-0.022636; 0.046614; 1.118546;,
0.039448; 0.031072; 1.118546;,
0.039448; 0.031072; 0.485297;,
-0.022636; 0.046614; 0.485297;,
-0.084006; 0.062201; 1.118546;,
-0.022636; 0.046614; 1.118546;,
-0.022636; 0.046614; 0.485297;,
-0.084006; 0.062201; 0.485297;,
0.039448; 0.031072; 1.118546;,
0.103613; 0.015994; 1.118546;,
0.103613; 0.015994; 0.485297;,
0.039448; 0.031072; 0.485297;,
0.169657; 0.002341; 1.118546;,
0.237587;-0.009751; 1.118546;,
0.237587;-0.009751; 0.485297;,
0.169657; 0.002341; 0.485297;,
0.103613; 0.015994; 1.118546;,
0.169657; 0.002341; 1.118546;,
0.169657; 0.002341; 0.485297;,
0.103613; 0.015994; 0.485297;,
0.237587;-0.009751; 1.118546;,
0.309566;-0.016896; 1.118546;,
0.309566;-0.016896; 0.485297;,
0.237587;-0.009751; 0.485297;,
0.383071;-0.021322; 1.118546;,
0.461998;-0.014156; 1.118546;,
0.461998;-0.014156; 0.485297;,
0.383071;-0.021322; 0.485297;,
0.309566;-0.016896; 1.118546;,
0.383071;-0.021322; 1.118546;,
0.383071;-0.021322; 0.485297;,
0.309566;-0.016896; 0.485297;,
0.461998;-0.014156; 1.118546;,
0.541230; 0.000946; 1.118546;,
0.541230; 0.000946; 0.485297;,
0.461998;-0.014156; 0.485297;,
-0.590193; 0.053158; 1.118546;,
-0.590193; 0.053158; 0.485297;,
-0.552701; 0.074584; 0.485297;,
-0.552701; 0.074584; 1.118546;,
-0.590193; 0.053158; 1.118546;,
-0.643959; 0.022459; 1.118546;,
-0.643959; 0.022459; 0.485297;,
-0.590193; 0.053158; 0.485297;,
-0.552701; 0.074584; 1.118546;,
-0.552701; 0.074584; 0.485297;,
-0.512047; 0.090636; 0.485297;,
-0.512047; 0.090636; 1.118546;,
-0.468375; 0.102331; 1.118546;,
-0.468375; 0.102331; 0.485297;,
-0.419526; 0.105943; 0.485297;,
-0.419526; 0.105943; 1.118546;,
-0.512047; 0.090636; 1.118546;,
-0.512047; 0.090636; 0.485297;,
-0.468375; 0.102331; 0.485297;,
-0.468375; 0.102331; 1.118546;,
-0.419526; 0.105943; 1.118546;,
-0.419526; 0.105943; 0.485297;,
-0.369116; 0.107804; 0.485297;,
-0.369116; 0.107804; 1.118546;,
-0.314727; 0.102346; 1.118546;,
-0.314727; 0.102346; 0.485297;,
-0.259245; 0.095102; 0.485297;,
-0.259245; 0.095102; 1.118546;,
-0.369116; 0.107804; 1.118546;,
-0.369116; 0.107804; 0.485297;,
-0.314727; 0.102346; 0.485297;,
-0.314727; 0.102346; 1.118546;,
-0.259245; 0.095102; 1.118546;,
-0.259245; 0.095102; 0.485297;,
-0.202044; 0.084352; 0.485297;,
-0.202044; 0.084352; 1.118546;,
-0.143404; 0.071270; 1.118546;,
-0.143404; 0.071270; 0.485297;,
-0.084037; 0.056965; 0.485297;,
-0.084037; 0.056965; 1.118546;,
-0.202044; 0.084352; 1.118546;,
-0.202044; 0.084352; 0.485297;,
-0.143404; 0.071270; 0.485297;,
-0.143404; 0.071270; 1.118546;,
-0.022667; 0.041378; 1.118546;,
-0.022667; 0.041378; 0.485297;,
0.039418; 0.025836; 0.485297;,
0.039418; 0.025836; 1.118546;,
-0.084037; 0.056965; 1.118546;,
-0.084037; 0.056965; 0.485297;,
-0.022667; 0.041378; 0.485297;,
-0.022667; 0.041378; 1.118546;,
0.039418; 0.025836; 1.118546;,
0.039418; 0.025836; 0.485297;,
0.103582; 0.010758; 0.485297;,
0.103582; 0.010758; 1.118546;,
0.169626;-0.002895; 1.118546;,
0.169626;-0.002895; 0.485297;,
0.237556;-0.014987; 0.485297;,
0.237556;-0.014987; 1.118546;,
0.103582; 0.010758; 1.118546;,
0.103582; 0.010758; 0.485297;,
0.169626;-0.002895; 0.485297;,
0.169626;-0.002895; 1.118546;,
0.237556;-0.014987; 1.118546;,
0.237556;-0.014987; 0.485297;,
0.309535;-0.022132; 0.485297;,
0.309535;-0.022132; 1.118546;,
0.383041;-0.026558; 1.118546;,
0.383041;-0.026558; 0.485297;,
0.461967;-0.019392; 0.485297;,
0.461967;-0.019392; 1.118546;,
0.309535;-0.022132; 1.118546;,
0.309535;-0.022132; 0.485297;,
0.383041;-0.026558; 0.485297;,
0.383041;-0.026558; 1.118546;,
0.461967;-0.019392; 1.118546;,
0.461967;-0.019392; 0.485297;,
0.541199;-0.004290; 0.485297;,
0.541199;-0.004290; 1.118546;,
-0.643928; 0.027695; 1.118546;,
-0.643928; 0.027695; 0.485297;,
-0.643959; 0.022459; 0.485297;,
-0.643959; 0.022459; 1.118546;,
-0.202013; 0.089588; 1.118546;,
-0.259214; 0.100338; 1.118546;,
-0.259245; 0.095102; 1.118546;,
-0.202044; 0.084352; 1.118546;,
0.383071;-0.021322; 1.118546;,
0.309566;-0.016896; 1.118546;,
0.309535;-0.022132; 1.118546;,
0.383041;-0.026558; 1.118546;,
-0.468345; 0.107567; 0.485297;,
-0.419495; 0.111179; 0.485297;,
-0.419526; 0.105943; 0.485297;,
-0.468375; 0.102331; 0.485297;,
0.039448; 0.031072; 0.485297;,
0.103613; 0.015994; 0.485297;,
0.103582; 0.010758; 0.485297;,
0.039418; 0.025836; 0.485297;,
-0.419495; 0.111179; 1.118546;,
-0.468345; 0.107567; 1.118546;,
-0.468375; 0.102331; 1.118546;,
-0.419526; 0.105943; 1.118546;,
0.103613; 0.015994; 1.118546;,
0.039448; 0.031072; 1.118546;,
0.039418; 0.025836; 1.118546;,
0.103582; 0.010758; 1.118546;,
-0.590162; 0.058394; 1.118546;,
-0.643928; 0.027695; 1.118546;,
-0.643959; 0.022459; 1.118546;,
-0.590193; 0.053158; 1.118546;,
-0.143373; 0.076506; 1.118546;,
-0.202013; 0.089588; 1.118546;,
-0.202044; 0.084352; 1.118546;,
-0.143404; 0.071270; 1.118546;,
0.383071;-0.021322; 0.485297;,
0.461998;-0.014156; 0.485297;,
0.461967;-0.019392; 0.485297;,
0.383041;-0.026558; 0.485297;,
-0.643928; 0.027695; 0.485297;,
-0.590162; 0.058394; 0.485297;,
-0.590193; 0.053158; 0.485297;,
-0.643959; 0.022459; 0.485297;,
-0.202013; 0.089588; 0.485297;,
-0.143373; 0.076506; 0.485297;,
-0.143404; 0.071270; 0.485297;,
-0.202044; 0.084352; 0.485297;,
0.461998;-0.014156; 1.118546;,
0.383071;-0.021322; 1.118546;,
0.383041;-0.026558; 1.118546;,
0.461967;-0.019392; 1.118546;,
-0.419495; 0.111179; 0.485297;,
-0.369085; 0.113040; 0.485297;,
-0.369116; 0.107804; 0.485297;,
-0.419526; 0.105943; 0.485297;,
0.103613; 0.015994; 0.485297;,
0.169657; 0.002341; 0.485297;,
0.169626;-0.002895; 0.485297;,
0.103582; 0.010758; 0.485297;,
0.541230; 0.000946; 0.485297;,
0.541230; 0.000946; 1.118546;,
0.541199;-0.004290; 1.118546;,
0.541199;-0.004290; 0.485297;,
-0.369085; 0.113041; 1.118546;,
-0.419495; 0.111179; 1.118546;,
-0.419526; 0.105943; 1.118546;,
-0.369116; 0.107804; 1.118546;,
0.169657; 0.002341; 1.118546;,
0.103613; 0.015994; 1.118546;,
0.103582; 0.010758; 1.118546;,
0.169626;-0.002895; 1.118546;,
-0.590162; 0.058394; 0.485297;,
-0.552671; 0.079820; 0.485297;,
-0.552701; 0.074584; 0.485297;,
-0.590193; 0.053158; 0.485297;,
-0.143373; 0.076506; 0.485297;,
-0.084006; 0.062201; 0.485297;,
-0.084037; 0.056965; 0.485297;,
-0.143404; 0.071270; 0.485297;,
0.461998;-0.014156; 0.485297;,
0.541230; 0.000946; 0.485297;,
0.541199;-0.004290; 0.485297;,
0.461967;-0.019392; 0.485297;,
-0.552671; 0.079820; 1.118546;,
-0.590162; 0.058394; 1.118546;,
-0.590193; 0.053158; 1.118546;,
-0.552701; 0.074584; 1.118546;,
-0.084006; 0.062201; 1.118546;,
-0.143373; 0.076506; 1.118546;,
-0.143404; 0.071270; 1.118546;,
-0.084037; 0.056965; 1.118546;,
0.541230; 0.000946; 1.118546;,
0.461998;-0.014156; 1.118546;,
0.461967;-0.019392; 1.118546;,
0.541199;-0.004290; 1.118546;,
-0.369085; 0.113040; 0.485297;,
-0.314696; 0.107583; 0.485297;,
-0.314727; 0.102346; 0.485297;,
-0.369116; 0.107804; 0.485297;,
0.169657; 0.002341; 0.485297;,
0.237587;-0.009751; 0.485297;,
0.237556;-0.014987; 0.485297;,
0.169626;-0.002895; 0.485297;,
-0.314696; 0.107583; 1.118546;,
-0.369085; 0.113041; 1.118546;,
-0.369116; 0.107804; 1.118546;,
-0.314727; 0.102346; 1.118546;,
0.237587;-0.009751; 1.118546;,
0.169657; 0.002341; 1.118546;,
0.169626;-0.002895; 1.118546;,
0.237556;-0.014987; 1.118546;,
-0.552671; 0.079820; 0.485297;,
-0.512016; 0.095872; 0.485297;,
-0.512047; 0.090636; 0.485297;,
-0.552701; 0.074584; 0.485297;,
-0.084006; 0.062201; 0.485297;,
-0.022636; 0.046614; 0.485297;,
-0.022667; 0.041378; 0.485297;,
-0.084037; 0.056965; 0.485297;,
-0.512016; 0.095872; 1.118546;,
-0.552671; 0.079820; 1.118546;,
-0.552701; 0.074584; 1.118546;,
-0.512047; 0.090636; 1.118546;,
-0.022636; 0.046614; 1.118546;,
-0.084006; 0.062201; 1.118546;,
-0.084037; 0.056965; 1.118546;,
-0.022667; 0.041378; 1.118546;,
-0.314696; 0.107583; 0.485297;,
-0.259214; 0.100338; 0.485297;,
-0.259245; 0.095102; 0.485297;,
-0.314727; 0.102346; 0.485297;,
0.237587;-0.009751; 0.485297;,
0.309566;-0.016896; 0.485297;,
0.309535;-0.022132; 0.485297;,
0.237556;-0.014987; 0.485297;,
-0.259214; 0.100338; 1.118546;,
-0.314696; 0.107583; 1.118546;,
-0.314727; 0.102346; 1.118546;,
-0.259245; 0.095102; 1.118546;,
0.309566;-0.016896; 1.118546;,
0.237587;-0.009751; 1.118546;,
0.237556;-0.014987; 1.118546;,
0.309535;-0.022132; 1.118546;,
-0.512016; 0.095872; 0.485297;,
-0.468345; 0.107567; 0.485297;,
-0.468375; 0.102331; 0.485297;,
-0.512047; 0.090636; 0.485297;,
-0.022636; 0.046614; 0.485297;,
0.039448; 0.031072; 0.485297;,
0.039418; 0.025836; 0.485297;,
-0.022667; 0.041378; 0.485297;,
-0.468345; 0.107567; 1.118546;,
-0.512016; 0.095872; 1.118546;,
-0.512047; 0.090636; 1.118546;,
-0.468375; 0.102331; 1.118546;,
0.039448; 0.031072; 1.118546;,
-0.022636; 0.046614; 1.118546;,
-0.022667; 0.041378; 1.118546;,
0.039418; 0.025836; 1.118546;,
-0.259214; 0.100338; 0.485297;,
-0.202013; 0.089588; 0.485297;,
-0.202044; 0.084352; 0.485297;,
-0.259245; 0.095102; 0.485297;,
0.309566;-0.016896; 0.485297;,
0.383071;-0.021322; 0.485297;,
0.383041;-0.026558; 0.485297;,
0.309535;-0.022132; 0.485297;;
88;
4;3,2,1,0;,
4;7,6,5,4;,
4;11,10,9,8;,
4;15,14,13,12;,
4;19,18,17,16;,
4;23,22,21,20;,
4;27,26,25,24;,
4;31,30,29,28;,
4;35,34,33,32;,
4;39,38,37,36;,
4;43,42,41,40;,
4;47,46,45,44;,
4;51,50,49,48;,
4;55,54,53,52;,
4;59,58,57,56;,
4;63,62,61,60;,
4;67,66,65,64;,
4;71,70,69,68;,
4;75,74,73,72;,
4;79,78,77,76;,
4;83,82,81,80;,
4;87,86,85,84;,
4;91,90,89,88;,
4;95,94,93,92;,
4;99,98,97,96;,
4;103,102,101,100;,
4;107,106,105,104;,
4;111,110,109,108;,
4;115,114,113,112;,
4;119,118,117,116;,
4;123,122,121,120;,
4;127,126,125,124;,
4;131,130,129,128;,
4;135,134,133,132;,
4;139,138,137,136;,
4;143,142,141,140;,
4;147,146,145,144;,
4;151,150,149,148;,
4;155,154,153,152;,
4;159,158,157,156;,
4;163,162,161,160;,
4;167,166,165,164;,
4;171,170,169,168;,
4;175,174,173,172;,
4;179,178,177,176;,
4;183,182,181,180;,
4;187,186,185,184;,
4;191,190,189,188;,
4;195,194,193,192;,
4;199,198,197,196;,
4;203,202,201,200;,
4;207,206,205,204;,
4;211,210,209,208;,
4;215,214,213,212;,
4;219,218,217,216;,
4;223,222,221,220;,
4;227,226,225,224;,
4;231,230,229,228;,
4;235,234,233,232;,
4;239,238,237,236;,
4;243,242,241,240;,
4;247,246,245,244;,
4;251,250,249,248;,
4;255,254,253,252;,
4;259,258,257,256;,
4;263,262,261,260;,
4;267,266,265,264;,
4;271,270,269,268;,
4;275,274,273,272;,
4;279,278,277,276;,
4;283,282,281,280;,
4;287,286,285,284;,
4;291,290,289,288;,
4;295,294,293,292;,
4;299,298,297,296;,
4;303,302,301,300;,
4;307,306,305,304;,
4;311,310,309,308;,
4;315,314,313,312;,
4;319,318,317,316;,
4;323,322,321,320;,
4;327,326,325,324;,
4;331,330,329,328;,
4;335,334,333,332;,
4;339,338,337,336;,
4;343,342,341,340;,
4;347,346,345,344;,
4;351,350,349,348;;
MeshNormals { // flag normals
88;
1.000000; 0.000000;-0.000000;,
0.000000; 1.000000;-0.000000;,
-1.000000; 0.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
-0.496183; 0.868218; 0.000000;,
-0.495842; 0.868413; 0.000000;,
-0.367234; 0.930129;-0.000000;,
-0.073735; 0.997278; 0.000000;,
-0.258685; 0.965962;-0.000000;,
-0.036910; 0.999319;-0.000000;,
0.129473; 0.991583; 0.000000;,
0.099850; 0.995003;-0.000000;,
0.184705; 0.982794; 0.000000;,
0.234254; 0.972175; 0.000000;,
0.217729; 0.976009; 0.000000;,
0.242850; 0.970064;-0.000000;,
0.246172; 0.969226;-0.000000;,
0.228750; 0.973485; 0.000000;,
0.175250; 0.984524; 0.000000;,
0.202449; 0.979293; 0.000000;,
0.098780; 0.995109; 0.000000;,
-0.090427; 0.995903;-0.000000;,
0.060111; 0.998192; 0.000000;,
-0.187237; 0.982315;-0.000000;,
0.496183;-0.868218;-0.000000;,
0.495842;-0.868413;-0.000000;,
0.367235;-0.930128; 0.000000;,
0.073735;-0.997278; 0.000000;,
0.258684;-0.965962; 0.000000;,
0.036910;-0.999319; 0.000000;,
-0.129473;-0.991583; 0.000000;,
-0.099849;-0.995003; 0.000000;,
-0.184705;-0.982794; 0.000000;,
-0.234255;-0.972175;-0.000000;,
-0.217730;-0.976009;-0.000000;,
-0.242849;-0.970064; 0.000000;,
-0.246172;-0.969226; 0.000000;,
-0.228750;-0.973485;-0.000000;,
-0.175250;-0.984524;-0.000000;,
-0.202449;-0.979293;-0.000000;,
-0.098780;-0.995109; 0.000000;,
0.090427;-0.995903; 0.000000;,
-0.060111;-0.998192; 0.000000;,
0.187237;-0.982315; 0.000000;,
-0.999983; 0.005874; 0.000000;,
-0.000000;-0.000000; 1.000000;,
0.000003;-0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000;-0.000000; 1.000000;,
-0.000000;-0.000000; 1.000000;,
0.000000;-0.000000; 1.000000;,
-0.000004; 0.000000; 1.000000;,
-0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000003; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
0.999983;-0.005885; 0.000000;,
0.000000;-0.000000; 1.000000;,
-0.000004; 0.000000; 1.000000;,
-0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000000; 0.000000;-1.000000;,
0.000000;-0.000000; 1.000000;,
0.000004;-0.000000; 1.000000;,
0.000003;-0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
-0.000004; 0.000000; 1.000000;,
0.000004;-0.000000; 1.000000;,
-0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
0.000006;-0.000000; 1.000000;,
-0.000000;-0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
0.000004;-0.000000; 1.000000;,
-0.000003; 0.000000; 1.000000;,
-0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000;-0.000000; 1.000000;,
-0.000000;-0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
0.000000; 0.000000;-1.000000;;
88;
4;0,0,0,0;,
4;1,1,1,1;,
4;2,2,2,2;,
4;3,3,3,3;,
4;4,4,4,4;,
4;5,5,5,5;,
4;6,6,6,6;,
4;7,7,7,7;,
4;8,8,8,8;,
4;9,9,9,9;,
4;10,10,10,10;,
4;11,11,11,11;,
4;12,12,12,12;,
4;13,13,13,13;,
4;14,14,14,14;,
4;15,15,15,15;,
4;16,16,16,16;,
4;17,17,17,17;,
4;18,18,18,18;,
4;19,19,19,19;,
4;20,20,20,20;,
4;21,21,21,21;,
4;22,22,22,22;,
4;23,23,23,23;,
4;24,24,24,24;,
4;25,25,25,25;,
4;26,26,26,26;,
4;27,27,27,27;,
4;28,28,28,28;,
4;29,29,29,29;,
4;30,30,30,30;,
4;31,31,31,31;,
4;32,32,32,32;,
4;33,33,33,33;,
4;34,34,34,34;,
4;35,35,35,35;,
4;36,36,36,36;,
4;37,37,37,37;,
4;38,38,38,38;,
4;39,39,39,39;,
4;40,40,40,40;,
4;41,41,41,41;,
4;42,42,42,42;,
4;43,43,43,43;,
4;44,44,44,44;,
4;45,45,45,45;,
4;46,46,46,46;,
4;47,47,47,47;,
4;48,48,48,48;,
4;49,49,49,49;,
4;50,50,50,50;,
4;51,51,51,51;,
4;52,52,52,52;,
4;53,53,53,53;,
4;54,54,54,54;,
4;55,55,55,55;,
4;56,56,56,56;,
4;57,57,57,57;,
4;58,58,58,58;,
4;59,59,59,59;,
4;60,60,60,60;,
4;61,61,61,61;,
4;62,62,62,62;,
4;63,63,63,63;,
4;64,64,64,64;,
4;65,65,65,65;,
4;66,66,66,66;,
4;67,67,67,67;,
4;68,68,68,68;,
4;69,69,69,69;,
4;70,70,70,70;,
4;71,71,71,71;,
4;72,72,72,72;,
4;73,73,73,73;,
4;74,74,74,74;,
4;75,75,75,75;,
4;76,76,76,76;,
4;77,77,77,77;,
4;78,78,78,78;,
4;79,79,79,79;,
4;80,80,80,80;,
4;81,81,81,81;,
4;82,82,82,82;,
4;83,83,83,83;,
4;84,84,84,84;,
4;85,85,85,85;,
4;86,86,86,86;,
4;87,87,87,87;;
} // End of flag normals
MeshTextureCoords { // flag UV coordinates
352;
0.502372; 0.655955;,
0.502372; 0.674052;,
0.993251; 0.674052;,
0.993251; 0.655955;,
0.997751; 0.687795;,
0.997751; 0.674223;,
0.506885; 0.674221;,
0.506885; 0.687795;,
0.488799; 0.674052;,
0.488799; 0.655955;,
-0.002080; 0.655955;,
-0.002080; 0.674052;,
-0.002080; 0.674221;,
-0.002080; 0.687793;,
0.488786; 0.687795;,
0.488786; 0.674221;,
0.488786; 0.687795;,
0.506885; 0.687795;,
0.506885; 0.674221;,
0.488786; 0.674221;,
0.488799; 0.655955;,
0.488799; 0.674052;,
0.502372; 0.674052;,
0.502372; 0.655955;,
0.943902; 0.002727;,
0.908697; 0.002727;,
0.908696; 0.502611;,
0.943901; 0.502611;,
0.943902; 0.002727;,
0.943901; 0.502611;,
0.994376; 0.502611;,
0.994377; 0.002727;,
0.908697; 0.002727;,
0.873062; 0.002727;,
0.873062; 0.502611;,
0.908696; 0.502611;,
0.836204; 0.002727;,
0.796270; 0.002727;,
0.796270; 0.502611;,
0.836203; 0.502611;,
0.873062; 0.002727;,
0.836204; 0.002727;,
0.836203; 0.502611;,
0.873062; 0.502611;,
0.796270; 0.002727;,
0.755145; 0.002727;,
0.755144; 0.502611;,
0.796270; 0.502611;,
0.710581; 0.002727;,
0.664964; 0.002727;,
0.664964; 0.502611;,
0.710580; 0.502611;,
0.755145; 0.002727;,
0.710581; 0.002727;,
0.710580; 0.502611;,
0.755144; 0.502611;,
0.664964; 0.002727;,
0.617514; 0.002727;,
0.617513; 0.502611;,
0.664964; 0.502611;,
0.568531; 0.002727;,
0.518746; 0.002727;,
0.518746; 0.502611;,
0.568531; 0.502611;,
0.617514; 0.002727;,
0.568531; 0.002727;,
0.568531; 0.502611;,
0.617513; 0.502611;,
0.467125; 0.002727;,
0.414948; 0.002727;,
0.414948; 0.502611;,
0.467125; 0.502611;,
0.518746; 0.002727;,
0.467125; 0.002727;,
0.467125; 0.502611;,
0.518746; 0.502611;,
0.414948; 0.002727;,
0.361211; 0.002727;,
0.361212; 0.502611;,
0.414948; 0.502611;,
0.306230; 0.002727;,
0.249978; 0.002727;,
0.249979; 0.502611;,
0.306230; 0.502611;,
0.361211; 0.002727;,
0.306230; 0.002727;,
0.306230; 0.502611;,
0.361212; 0.502611;,
0.249978; 0.002727;,
0.191008; 0.002727;,
0.191008; 0.502611;,
0.249979; 0.502611;,
0.130973; 0.002727;,
0.066362; 0.002727;,
0.066362; 0.502611;,
0.130973; 0.502611;,
0.191008; 0.002727;,
0.130973; 0.002727;,
0.130973; 0.502611;,
0.191008; 0.502611;,
0.066362; 0.002727;,
0.000604; 0.002727;,
0.000604; 0.502611;,
0.066362; 0.502611;,
0.941264; 0.001422;,
0.941265; 0.507504;,
0.906167; 0.507504;,
0.906167; 0.001422;,
0.941264; 0.001422;,
0.991585; 0.001422;,
0.991585; 0.507504;,
0.941265; 0.507504;,
0.906167; 0.001422;,
0.906167; 0.507504;,
0.870642; 0.507504;,
0.870642; 0.001422;,
0.833896; 0.001422;,
0.833896; 0.507504;,
0.794084; 0.507504;,
0.794084; 0.001422;,
0.870642; 0.001422;,
0.870642; 0.507504;,
0.833896; 0.507504;,
0.833896; 0.001422;,
0.794084; 0.001422;,
0.794084; 0.507504;,
0.753084; 0.507504;,
0.753085; 0.001422;,
0.708657; 0.001422;,
0.708657; 0.507504;,
0.663180; 0.507504;,
0.663180; 0.001422;,
0.753085; 0.001422;,
0.753084; 0.507504;,
0.708657; 0.507504;,
0.708657; 0.001422;,
0.663180; 0.001422;,
0.663180; 0.507504;,
0.615874; 0.507504;,
0.615874; 0.001422;,
0.567042; 0.001422;,
0.567042; 0.507504;,
0.517409; 0.507504;,
0.517409; 0.001422;,
0.615874; 0.001422;,
0.615874; 0.507504;,
0.567042; 0.507504;,
0.567042; 0.001422;,
0.465946; 0.001422;,
0.465945; 0.507504;,
0.413927; 0.507504;,
0.413928; 0.001422;,
0.517409; 0.001422;,
0.517409; 0.507504;,
0.465945; 0.507504;,
0.465946; 0.001422;,
0.413928; 0.001422;,
0.413927; 0.507504;,
0.360356; 0.507504;,
0.360356; 0.001422;,
0.305542; 0.001422;,
0.305542; 0.507504;,
0.249463; 0.507504;,
0.249463; 0.001422;,
0.360356; 0.001422;,
0.360356; 0.507504;,
0.305542; 0.507504;,
0.305542; 0.001422;,
0.249463; 0.001422;,
0.249463; 0.507504;,
0.190673; 0.507504;,
0.190673; 0.001422;,
0.130821; 0.001422;,
0.130821; 0.507504;,
0.066407; 0.507504;,
0.066407; 0.001422;,
0.190673; 0.001422;,
0.190673; 0.507504;,
0.130821; 0.507504;,
0.130821; 0.001422;,
0.066407; 0.001422;,
0.066407; 0.507504;,
0.000850; 0.507504;,
0.000850; 0.001422;,
0.819613; 0.932277;,
0.721014; 0.932277;,
0.721002; 0.933997;,
0.819602; 0.933998;,
0.594108; 0.827414;,
0.581155; 0.825058;,
0.581155; 0.826243;,
0.594108; 0.828598;,
0.726607; 0.851725;,
0.709973; 0.850821;,
0.709973; 0.852006;,
0.726607; 0.852909;,
0.533037; 0.819855;,
0.544035; 0.821198;,
0.544085; 0.820014;,
0.533086; 0.818671;,
0.648599; 0.808047;,
0.663260; 0.805332;,
0.663310; 0.804148;,
0.648648; 0.806863;,
0.544883; 0.822819;,
0.533838; 0.823701;,
0.533838; 0.824886;,
0.544883; 0.824004;,
0.663341; 0.843655;,
0.648807; 0.840330;,
0.648807; 0.841514;,
0.663341; 0.844839;,
0.506347; 0.834987;,
0.494225; 0.842003;,
0.494225; 0.843187;,
0.506347; 0.836171;,
0.607391; 0.830295;,
0.594108; 0.827414;,
0.594108; 0.828598;,
0.607391; 0.831479;,
0.726809; 0.799913;,
0.744566; 0.802384;,
0.744616; 0.801200;,
0.726858; 0.798730;,
0.494225; 0.799914;,
0.506043; 0.807430;,
0.506092; 0.806247;,
0.494274; 0.798731;,
0.593408; 0.818665;,
0.606799; 0.816341;,
0.606849; 0.815158;,
0.593458; 0.817481;,
0.744451; 0.849999;,
0.726607; 0.851725;,
0.726607; 0.852909;,
0.744451; 0.851183;,
0.544035; 0.821198;,
0.555405; 0.822162;,
0.555455; 0.820979;,
0.544085; 0.820014;,
0.663260; 0.805332;,
0.678331; 0.802959;,
0.678380; 0.801775;,
0.663310; 0.804148;,
0.721002; 0.932108;,
0.819602; 0.932108;,
0.819613; 0.930387;,
0.721014; 0.930387;,
0.556284; 0.822331;,
0.544883; 0.822819;,
0.544883; 0.824004;,
0.556284; 0.823515;,
0.678299; 0.846656;,
0.663341; 0.843655;,
0.663341; 0.844839;,
0.678299; 0.847840;,
0.506043; 0.807430;,
0.514283; 0.812676;,
0.514332; 0.811493;,
0.506092; 0.806247;,
0.606799; 0.816341;,
0.620368; 0.813749;,
0.620417; 0.812566;,
0.606849; 0.815158;,
0.744566; 0.802384;,
0.762307; 0.806651;,
0.762356; 0.805467;,
0.744616; 0.801200;,
0.514799; 0.830090;,
0.506347; 0.834987;,
0.506347; 0.836171;,
0.514799; 0.831275;,
0.620839; 0.833452;,
0.607391; 0.830295;,
0.607391; 0.831479;,
0.620839; 0.834636;,
0.762354; 0.846477;,
0.744451; 0.849999;,
0.744451; 0.851183;,
0.762354; 0.847662;,
0.555405; 0.822162;,
0.567753; 0.821515;,
0.567803; 0.820332;,
0.555455; 0.820979;,
0.678331; 0.802959;,
0.693811; 0.800959;,
0.693860; 0.799776;,
0.678380; 0.801775;,
0.568595; 0.823493;,
0.556284; 0.822331;,
0.556284; 0.823515;,
0.568595; 0.824678;,
0.693681; 0.849301;,
0.678299; 0.846656;,
0.678299; 0.847840;,
0.693681; 0.850485;,
0.514283; 0.812676;,
0.523295; 0.816741;,
0.523345; 0.815558;,
0.514332; 0.811493;,
0.620368; 0.813749;,
0.634403; 0.810889;,
0.634452; 0.809705;,
0.620417; 0.812566;,
0.523974; 0.826405;,
0.514799; 0.830090;,
0.514799; 0.831275;,
0.523974; 0.827589;,
0.634742; 0.836896;,
0.620839; 0.833452;,
0.620839; 0.834636;,
0.634742; 0.838081;,
0.567753; 0.821515;,
0.580368; 0.820477;,
0.580417; 0.819293;,
0.567803; 0.820332;,
0.693811; 0.800959;,
0.710152; 0.800121;,
0.710202; 0.798937;,
0.693860; 0.799776;,
0.581155; 0.825058;,
0.568595; 0.823493;,
0.568595; 0.824678;,
0.581155; 0.826243;,
0.709973; 0.850821;,
0.693681; 0.849301;,
0.693681; 0.850485;,
0.709973; 0.852006;,
0.523295; 0.816741;,
0.533037; 0.819855;,
0.533086; 0.818671;,
0.523345; 0.815558;,
0.634403; 0.810889;,
0.648599; 0.808047;,
0.648648; 0.806863;,
0.634452; 0.809705;,
0.533838; 0.823701;,
0.523974; 0.826405;,
0.523974; 0.827589;,
0.533838; 0.824886;,
0.648807; 0.840330;,
0.634742; 0.836896;,
0.634742; 0.838081;,
0.648807; 0.841514;,
0.580368; 0.820477;,
0.593408; 0.818665;,
0.593458; 0.817481;,
0.580417; 0.819293;,
0.710152; 0.800121;,
0.726809; 0.799913;,
0.726858; 0.798730;,
0.710202; 0.798937;;
} // End of flag UV coordinates
} // End of flag mesh
} // End of flag
} // End of Root

222
models/banner_support.obj Normal file
View File

@ -0,0 +1,222 @@
# Blender 4.4.3
# www.blender.org
mtllib flag_support.mtl
o Plane
v -0.510405 -0.503108 -0.514181
v -0.510405 -0.503108 0.512251
v 0.516028 -0.503108 -0.514180
v 0.516027 -0.503108 0.512252
v -0.504090 -0.492843 -0.464318
v -0.070070 0.051166 -0.030298
v -0.460542 -0.492843 -0.507866
v -0.026523 0.051166 -0.073846
v -0.460542 -0.492843 -0.420770
v -0.067580 -0.000156 -0.027808
v -0.416994 -0.492843 -0.464318
v -0.024032 -0.000156 -0.071356
v 0.466165 -0.492844 -0.507866
v 0.032146 0.051166 -0.073846
v 0.509713 -0.492844 -0.464318
v 0.075693 0.051166 -0.030298
v 0.422617 -0.492843 -0.464318
v 0.029655 -0.000156 -0.071356
v 0.466165 -0.492843 -0.420770
v 0.073203 -0.000156 -0.027808
v 0.466165 -0.492844 0.505937
v 0.032146 0.051166 0.071917
v 0.509713 -0.492844 0.462389
v 0.075693 0.051166 0.028370
v 0.422617 -0.492844 0.462389
v 0.029655 -0.000156 0.069427
v 0.466165 -0.492844 0.418841
v 0.073203 -0.000156 0.025879
v -0.504090 -0.492844 0.462389
v -0.070070 0.051166 0.028370
v -0.460542 -0.492844 0.505937
v -0.026523 0.051166 0.071917
v -0.460542 -0.492844 0.418841
v -0.067580 -0.000156 0.025879
v -0.416994 -0.492844 0.462389
v -0.024032 -0.000156 0.069427
v -0.510405 -0.489509 -0.514181
v -0.510405 -0.489509 0.512251
v 0.516028 -0.489509 -0.514180
v 0.516027 -0.489510 0.512252
v -0.076859 -0.049034 -0.080635
v -0.076859 0.110308 -0.080635
v 0.082482 -0.049034 -0.080635
v 0.082482 0.110308 -0.080635
v -0.076859 -0.049034 0.078706
v -0.076859 0.110308 0.078706
v 0.082482 -0.049034 0.078706
v 0.082482 0.110308 0.078706
v 0.049677 0.077502 0.045901
v 0.049677 -0.016228 0.045901
v -0.044054 0.077502 0.045901
v -0.044054 -0.016228 0.045901
v 0.049677 0.077502 -0.047830
v 0.049677 -0.016228 -0.047830
v -0.044054 0.077502 -0.047830
v -0.044054 -0.016228 -0.047830
vn -0.0000 -1.0000 -0.0000
vn -0.4690 0.7484 -0.4690
vn 0.7071 -0.0000 -0.7071
vn 0.4691 -0.7483 0.4691
vn -0.7071 -0.0000 0.7071
vn -0.0000 1.0000 -0.0000
vn 0.4690 0.7484 -0.4690
vn 0.7071 -0.0000 0.7071
vn -0.4691 -0.7483 0.4691
vn -0.7071 -0.0000 -0.7071
vn -0.7054 -0.0685 0.7054
vn -0.7054 0.0685 0.7054
vn -0.4690 -0.7484 -0.4690
vn 0.4691 0.7483 0.4691
vn 0.4690 -0.7484 -0.4690
vn -0.4691 0.7483 0.4691
vn 0.7054 -0.0685 0.7054
vn 0.7054 0.0685 0.7054
vn -0.0000 -0.0000 1.0000
vn -0.0000 -0.0000 -1.0000
vn 1.0000 -0.0000 -0.0000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 0.7071 -0.7071
vn 0.7071 -0.7071 -0.0000
vn 0.7071 0.7071 -0.0000
vn -0.0000 -0.7071 0.7071
vn -0.0000 0.7071 0.7071
vn -0.7071 -0.7071 -0.0000
vn -0.7071 0.7071 -0.0000
vn -0.0000 -0.7071 -0.7071
vt 0.000222 0.512504
vt 0.502631 0.512769
vt 0.502631 0.000487
vt 0.000222 0.000222
vt 0.702700 0.891477
vt 0.672991 0.891474
vt 0.673030 0.495818
vt 0.702740 0.495821
vt 0.653338 0.876322
vt 0.653323 0.518049
vt 0.623629 0.876323
vt 0.623614 0.518051
vt 0.603976 0.891476
vt 0.603904 0.495820
vt 0.901297 0.495821
vt 0.881587 0.518051
vt 0.851878 0.518050
vt 0.832170 0.495818
vt 0.573751 0.495818
vt 0.554044 0.518049
vt 0.524335 0.518051
vt 0.504625 0.495820
vt 0.603422 0.891477
vt 0.573712 0.891474
vt 0.603461 0.495821
vt 0.554059 0.876322
vt 0.524350 0.876323
vt 0.504698 0.891477
vt 0.832209 0.891475
vt 0.851862 0.876323
vt 0.881572 0.876325
vt 0.901224 0.891478
vt 0.732932 0.891475
vt 0.703222 0.891478
vt 0.703183 0.495821
vt 0.732893 0.495818
vt 0.801946 0.891478
vt 0.782294 0.876324
vt 0.782309 0.518051
vt 0.802019 0.495821
vt 0.752585 0.876323
vt 0.752600 0.518049
vt 0.802499 0.891478
vt 0.802462 0.495821
vt 0.504625 0.495375
vt 0.504625 0.000222
vt 0.999778 0.000222
vt 0.999778 0.495375
vt 0.491425 0.502422
vt 0.493275 0.010540
vt 0.011428 0.010569
vt 0.009578 0.502451
vt 0.385267 0.676942
vt 0.386630 0.634786
vt 0.407898 0.611579
vt 0.408626 0.698179
vt 0.097215 0.567693
vt 0.121209 0.606692
vt 0.107780 0.622610
vt 0.069514 0.565919
vt 0.344547 0.632816
vt 0.321185 0.611578
vt 0.203667 0.606458
vt 0.235584 0.565919
vt 0.270917 0.571097
vt 0.215623 0.628725
vt 0.343185 0.674971
vt 0.321920 0.698178
vt 0.160922 0.618835
vt 0.158674 0.640991
vt 0.320742 0.641329
vt 0.250510 0.691154
vt 0.164187 0.714990
vt 0.074379 0.693986
vt 0.000222 0.631238
vt 0.366401 0.565919
vt 0.366401 0.611135
vt 0.321185 0.611135
vt 0.321185 0.565919
vt 0.411617 0.565919
vt 0.411617 0.611135
vt 0.456832 0.565919
vt 0.456832 0.611135
vt 0.502048 0.565919
vt 0.502048 0.611135
s 0
f 3/1/1 4/2/1 2/3/1 1/4/1
f 6/5/2 8/6/2 7/7/2 5/8/2
f 8/6/3 12/9/3 11/10/3 7/7/3
f 12/9/4 10/11/4 9/12/4 11/10/4
f 10/11/5 6/13/5 5/14/5 9/12/5
f 31/15/6 35/16/6 33/17/6 29/18/6
f 15/19/1 19/20/1 17/21/1 13/22/1
f 14/23/7 16/24/7 15/19/7 13/25/7
f 16/24/8 20/26/8 19/20/8 15/19/8
f 20/26/9 18/27/9 17/21/9 19/20/9
f 18/27/10 14/28/10 13/22/10 17/21/10
f 30/29/11 34/30/11 36/31/11 32/32/11
f 14/28/12 18/27/12 20/26/12 16/24/12
f 22/33/13 24/34/13 23/35/13 21/36/13
f 24/37/5 28/38/5 27/39/5 23/40/5
f 28/38/14 26/41/14 25/42/14 27/39/14
f 26/41/3 22/33/3 21/36/3 25/42/3
f 23/40/6 27/39/6 25/42/6 21/36/6
f 7/7/1 11/10/1 9/12/1 5/14/1
f 30/29/15 32/43/15 31/44/15 29/18/15
f 32/32/10 36/31/10 35/16/10 31/15/10
f 36/31/16 34/30/16 33/17/16 35/16/16
f 34/30/8 30/29/8 29/18/8 33/17/8
f 22/33/17 26/41/17 28/38/17 24/37/17
f 6/13/18 10/11/18 12/9/18 8/6/18
f 37/45/6 38/46/6 40/47/6 39/48/6
f 2/3/19 4/2/19 40/49/19 38/50/19
f 3/1/20 1/4/20 37/51/20 39/52/20
f 4/2/21 3/1/21 39/52/21 40/49/21
f 1/4/22 2/3/22 38/50/22 37/51/22
f 49/53/23 51/54/23 46/55/23 48/56/23
f 56/57/24 52/58/24 45/59/24 41/60/24
f 51/54/25 55/61/25 42/62/25 46/55/25
f 54/63/26 56/64/26 41/65/26 43/66/26
f 55/61/27 53/67/27 44/68/27 42/62/27
f 50/69/28 54/63/28 43/66/28 47/70/28
f 53/67/29 49/53/29 48/56/29 44/68/29
f 52/58/30 50/69/30 47/70/30 45/59/30
f 42/71/20 44/72/20 43/66/20 41/65/20
f 44/72/21 48/73/21 47/70/21 43/66/21
f 48/73/19 46/74/19 45/59/19 47/70/19
f 46/74/22 42/75/22 41/60/22 45/59/22
f 51/76/21 52/77/21 56/78/21 55/79/21
f 49/80/20 50/81/20 52/77/20 51/76/20
f 53/82/22 54/83/22 50/81/22 49/80/22
f 55/84/19 56/85/19 54/83/19 53/82/19

View File

@ -1,535 +0,0 @@
xof 0303txt 0032
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Plane {
FrameTransformMatrix {
5.000000, 0.000000, 0.000000, 0.000000,
0.000000, 5.000000, 0.000000, 0.000000,
0.000000, 0.000000, 5.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Mesh { // Plane mesh
184;
0.516028;-0.503108;-0.514180;,
0.516027;-0.503108; 0.512252;,
-0.510405;-0.503108; 0.512251;,
-0.510405;-0.503108;-0.514181;,
-0.070070; 0.051166;-0.030298;,
-0.026523; 0.051166;-0.073846;,
-0.460542;-0.492843;-0.507866;,
-0.504090;-0.492843;-0.464318;,
-0.026523; 0.051166;-0.073846;,
-0.024032;-0.000156;-0.071356;,
-0.416994;-0.492843;-0.464318;,
-0.460542;-0.492843;-0.507866;,
-0.024032;-0.000156;-0.071356;,
-0.067580;-0.000156;-0.027808;,
-0.460542;-0.492843;-0.420770;,
-0.416994;-0.492843;-0.464318;,
-0.067580;-0.000156;-0.027808;,
-0.070070; 0.051166;-0.030298;,
-0.504090;-0.492843;-0.464318;,
-0.460542;-0.492843;-0.420770;,
-0.460542;-0.492844; 0.505937;,
-0.416994;-0.492844; 0.462389;,
-0.460542;-0.492844; 0.418841;,
-0.504090;-0.492844; 0.462389;,
0.509713;-0.492844;-0.464318;,
0.466165;-0.492843;-0.420770;,
0.422617;-0.492843;-0.464318;,
0.466165;-0.492844;-0.507866;,
0.032146; 0.051166;-0.073846;,
0.075693; 0.051166;-0.030298;,
0.509713;-0.492844;-0.464318;,
0.466165;-0.492844;-0.507866;,
0.075693; 0.051166;-0.030298;,
0.073203;-0.000156;-0.027808;,
0.466165;-0.492843;-0.420770;,
0.509713;-0.492844;-0.464318;,
0.073203;-0.000156;-0.027808;,
0.029655;-0.000156;-0.071356;,
0.422617;-0.492843;-0.464318;,
0.466165;-0.492843;-0.420770;,
0.029655;-0.000156;-0.071356;,
0.032146; 0.051166;-0.073846;,
0.466165;-0.492844;-0.507866;,
0.422617;-0.492843;-0.464318;,
-0.070070; 0.051166; 0.028370;,
-0.067580;-0.000156; 0.025879;,
-0.024032;-0.000156; 0.069427;,
-0.026523; 0.051166; 0.071917;,
0.032146; 0.051166;-0.073846;,
0.029655;-0.000156;-0.071356;,
0.073203;-0.000156;-0.027808;,
0.075693; 0.051166;-0.030298;,
0.032146; 0.051166; 0.071917;,
0.075693; 0.051166; 0.028370;,
0.509713;-0.492844; 0.462389;,
0.466165;-0.492844; 0.505937;,
0.075693; 0.051166; 0.028370;,
0.073203;-0.000156; 0.025879;,
0.466165;-0.492844; 0.418841;,
0.509713;-0.492844; 0.462389;,
0.073203;-0.000156; 0.025879;,
0.029655;-0.000156; 0.069427;,
0.422617;-0.492844; 0.462389;,
0.466165;-0.492844; 0.418841;,
0.029655;-0.000156; 0.069427;,
0.032146; 0.051166; 0.071917;,
0.466165;-0.492844; 0.505937;,
0.422617;-0.492844; 0.462389;,
0.509713;-0.492844; 0.462389;,
0.466165;-0.492844; 0.418841;,
0.422617;-0.492844; 0.462389;,
0.466165;-0.492844; 0.505937;,
-0.460542;-0.492843;-0.507866;,
-0.416994;-0.492843;-0.464318;,
-0.460542;-0.492843;-0.420770;,
-0.504090;-0.492843;-0.464318;,
-0.070070; 0.051166; 0.028370;,
-0.026523; 0.051166; 0.071917;,
-0.460542;-0.492844; 0.505937;,
-0.504090;-0.492844; 0.462389;,
-0.026523; 0.051166; 0.071917;,
-0.024032;-0.000156; 0.069427;,
-0.416994;-0.492844; 0.462389;,
-0.460542;-0.492844; 0.505937;,
-0.024032;-0.000156; 0.069427;,
-0.067580;-0.000156; 0.025879;,
-0.460542;-0.492844; 0.418841;,
-0.416994;-0.492844; 0.462389;,
-0.067580;-0.000156; 0.025879;,
-0.070070; 0.051166; 0.028370;,
-0.504090;-0.492844; 0.462389;,
-0.460542;-0.492844; 0.418841;,
0.032146; 0.051166; 0.071917;,
0.029655;-0.000156; 0.069427;,
0.073203;-0.000156; 0.025879;,
0.075693; 0.051166; 0.028370;,
-0.070070; 0.051166;-0.030298;,
-0.067580;-0.000156;-0.027808;,
-0.024032;-0.000156;-0.071356;,
-0.026523; 0.051166;-0.073846;,
-0.510405;-0.489509;-0.514181;,
-0.510405;-0.489509; 0.512251;,
0.516027;-0.489510; 0.512252;,
0.516028;-0.489509;-0.514180;,
-0.510405;-0.503108; 0.512251;,
0.516027;-0.503108; 0.512252;,
0.516027;-0.489510; 0.512252;,
-0.510405;-0.489509; 0.512251;,
0.516028;-0.503108;-0.514180;,
-0.510405;-0.503108;-0.514181;,
-0.510405;-0.489509;-0.514181;,
0.516028;-0.489509;-0.514180;,
0.516027;-0.503108; 0.512252;,
0.516028;-0.503108;-0.514180;,
0.516028;-0.489509;-0.514180;,
0.516027;-0.489510; 0.512252;,
-0.510405;-0.503108;-0.514181;,
-0.510405;-0.503108; 0.512251;,
-0.510405;-0.489509; 0.512251;,
-0.510405;-0.489509;-0.514181;,
0.049677; 0.077502; 0.045901;,
-0.044054; 0.077502; 0.045901;,
-0.076859; 0.110308; 0.078706;,
0.082482; 0.110308; 0.078706;,
-0.044054;-0.016228;-0.047830;,
-0.044054;-0.016228; 0.045901;,
-0.076859;-0.049034; 0.078706;,
-0.076859;-0.049034;-0.080635;,
-0.044054; 0.077502; 0.045901;,
-0.044054; 0.077502;-0.047830;,
-0.076859; 0.110308;-0.080635;,
-0.076859; 0.110308; 0.078706;,
0.049677;-0.016228;-0.047830;,
-0.044054;-0.016228;-0.047830;,
-0.076859;-0.049034;-0.080635;,
0.082482;-0.049034;-0.080635;,
-0.044054; 0.077502;-0.047830;,
0.049677; 0.077502;-0.047830;,
0.082482; 0.110308;-0.080635;,
-0.076859; 0.110308;-0.080635;,
0.049677;-0.016228; 0.045901;,
0.049677;-0.016228;-0.047830;,
0.082482;-0.049034;-0.080635;,
0.082482;-0.049034; 0.078706;,
0.049677; 0.077502;-0.047830;,
0.049677; 0.077502; 0.045901;,
0.082482; 0.110308; 0.078706;,
0.082482; 0.110308;-0.080635;,
-0.044054;-0.016228; 0.045901;,
0.049677;-0.016228; 0.045901;,
0.082482;-0.049034; 0.078706;,
-0.076859;-0.049034; 0.078706;,
-0.076859; 0.110308;-0.080635;,
0.082482; 0.110308;-0.080635;,
0.082482;-0.049034;-0.080635;,
-0.076859;-0.049034;-0.080635;,
0.082482; 0.110308;-0.080635;,
0.082482; 0.110308; 0.078706;,
0.082482;-0.049034; 0.078706;,
0.082482;-0.049034;-0.080635;,
0.082482; 0.110308; 0.078706;,
-0.076859; 0.110308; 0.078706;,
-0.076859;-0.049034; 0.078706;,
0.082482;-0.049034; 0.078706;,
-0.076859; 0.110308; 0.078706;,
-0.076859; 0.110308;-0.080635;,
-0.076859;-0.049034;-0.080635;,
-0.076859;-0.049034; 0.078706;,
-0.044054; 0.077502; 0.045901;,
-0.044054;-0.016228; 0.045901;,
-0.044054;-0.016228;-0.047830;,
-0.044054; 0.077502;-0.047830;,
0.049677; 0.077502; 0.045901;,
0.049677;-0.016228; 0.045901;,
-0.044054;-0.016228; 0.045901;,
-0.044054; 0.077502; 0.045901;,
0.049677; 0.077502;-0.047830;,
0.049677;-0.016228;-0.047830;,
0.049677;-0.016228; 0.045901;,
0.049677; 0.077502; 0.045901;,
-0.044054; 0.077502;-0.047830;,
-0.044054;-0.016228;-0.047830;,
0.049677;-0.016228;-0.047830;,
0.049677; 0.077502;-0.047830;;
46;
4;3,2,1,0;,
4;7,6,5,4;,
4;11,10,9,8;,
4;15,14,13,12;,
4;19,18,17,16;,
4;23,22,21,20;,
4;27,26,25,24;,
4;31,30,29,28;,
4;35,34,33,32;,
4;39,38,37,36;,
4;43,42,41,40;,
4;47,46,45,44;,
4;51,50,49,48;,
4;55,54,53,52;,
4;59,58,57,56;,
4;63,62,61,60;,
4;67,66,65,64;,
4;71,70,69,68;,
4;75,74,73,72;,
4;79,78,77,76;,
4;83,82,81,80;,
4;87,86,85,84;,
4;91,90,89,88;,
4;95,94,93,92;,
4;99,98,97,96;,
4;103,102,101,100;,
4;107,106,105,104;,
4;111,110,109,108;,
4;115,114,113,112;,
4;119,118,117,116;,
4;123,122,121,120;,
4;127,126,125,124;,
4;131,130,129,128;,
4;135,134,133,132;,
4;139,138,137,136;,
4;143,142,141,140;,
4;147,146,145,144;,
4;151,150,149,148;,
4;155,154,153,152;,
4;159,158,157,156;,
4;163,162,161,160;,
4;167,166,165,164;,
4;171,170,169,168;,
4;175,174,173,172;,
4;179,178,177,176;,
4;183,182,181,180;;
MeshNormals { // Plane normals
46;
-0.000000;-1.000000;-0.000000;,
-0.469011; 0.748370;-0.469012;,
0.707107; 0.000000;-0.707107;,
0.469086;-0.748276; 0.469086;,
-0.707107;-0.000000; 0.707107;,
0.000000; 1.000000; 0.000000;,
-0.000001;-1.000000; 0.000001;,
0.469011; 0.748370;-0.469011;,
0.707107;-0.000000; 0.707107;,
-0.469086;-0.748276; 0.469086;,
-0.707107;-0.000001;-0.707106;,
-0.705447;-0.068468; 0.705448;,
-0.705448; 0.068468; 0.705447;,
-0.469011;-0.748369;-0.469011;,
-0.707106; 0.000001; 0.707107;,
0.469086; 0.748276; 0.469086;,
0.707107; 0.000001;-0.707106;,
-0.000000; 1.000000; 0.000000;,
0.000000;-1.000000; 0.000000;,
0.469011;-0.748370;-0.469012;,
-0.707107;-0.000000;-0.707107;,
-0.469086; 0.748276; 0.469086;,
0.707106; 0.000001; 0.707107;,
0.705448;-0.068468; 0.705447;,
0.705447; 0.068468; 0.705448;,
0.000000; 1.000000; 0.000000;,
-0.000000; 0.000000; 1.000000;,
0.000000; 0.000000;-1.000000;,
1.000000; 0.000000; 0.000000;,
-1.000000; 0.000000;-0.000000;,
0.000000; 0.707106;-0.707108;,
0.707107;-0.707106; 0.000000;,
0.707108; 0.707106; 0.000000;,
-0.000000;-0.707106; 0.707107;,
-0.000000; 0.707106; 0.707108;,
-0.707107;-0.707106;-0.000000;,
-0.707108; 0.707105;-0.000000;,
0.000000;-0.707106;-0.707107;,
0.000000; 0.000000;-1.000000;,
1.000000; 0.000000; 0.000000;,
0.000000;-0.000000; 1.000000;,
-1.000000; 0.000000;-0.000000;,
1.000000;-0.000000; 0.000000;,
0.000000; 0.000000;-1.000000;,
-1.000000; 0.000000;-0.000000;,
-0.000000; 0.000000; 1.000000;;
46;
4;0,0,0,0;,
4;1,1,1,1;,
4;2,2,2,2;,
4;3,3,3,3;,
4;4,4,4,4;,
4;5,5,5,5;,
4;6,6,6,6;,
4;7,7,7,7;,
4;8,8,8,8;,
4;9,9,9,9;,
4;10,10,10,10;,
4;11,11,11,11;,
4;12,12,12,12;,
4;13,13,13,13;,
4;14,14,14,14;,
4;15,15,15,15;,
4;16,16,16,16;,
4;17,17,17,17;,
4;18,18,18,18;,
4;19,19,19,19;,
4;20,20,20,20;,
4;21,21,21,21;,
4;22,22,22,22;,
4;23,23,23,23;,
4;24,24,24,24;,
4;25,25,25,25;,
4;26,26,26,26;,
4;27,27,27,27;,
4;28,28,28,28;,
4;29,29,29,29;,
4;30,30,30,30;,
4;31,31,31,31;,
4;32,32,32,32;,
4;33,33,33,33;,
4;34,34,34,34;,
4;35,35,35,35;,
4;36,36,36,36;,
4;37,37,37,37;,
4;38,38,38,38;,
4;39,39,39,39;,
4;40,40,40,40;,
4;41,41,41,41;,
4;42,42,42,42;,
4;43,43,43,43;,
4;44,44,44,44;,
4;45,45,45,45;;
} // End of Plane normals
MeshTextureCoords { // Plane UV coordinates
184;
0.000222; 0.487496;,
0.502631; 0.487231;,
0.502631; 0.999513;,
0.000222; 0.999778;,
0.702700; 0.108523;,
0.672991; 0.108526;,
0.673030; 0.504182;,
0.702740; 0.504179;,
0.672991; 0.108526;,
0.653338; 0.123678;,
0.653323; 0.481951;,
0.673030; 0.504182;,
0.653338; 0.123678;,
0.623629; 0.123677;,
0.623614; 0.481949;,
0.653323; 0.481951;,
0.623629; 0.123677;,
0.603976; 0.108524;,
0.603904; 0.504180;,
0.623614; 0.481949;,
0.901297; 0.504179;,
0.881587; 0.481949;,
0.851878; 0.481950;,
0.832170; 0.504182;,
0.573751; 0.504182;,
0.554044; 0.481951;,
0.524335; 0.481949;,
0.504625; 0.504180;,
0.603422; 0.108523;,
0.573712; 0.108526;,
0.573751; 0.504182;,
0.603461; 0.504179;,
0.573712; 0.108526;,
0.554059; 0.123678;,
0.554044; 0.481951;,
0.573751; 0.504182;,
0.554059; 0.123678;,
0.524350; 0.123677;,
0.524335; 0.481949;,
0.554044; 0.481951;,
0.524350; 0.123677;,
0.504698; 0.108523;,
0.504625; 0.504180;,
0.524335; 0.481949;,
0.832209; 0.108525;,
0.851862; 0.123677;,
0.881572; 0.123675;,
0.901224; 0.108522;,
0.504698; 0.108523;,
0.524350; 0.123677;,
0.554059; 0.123678;,
0.573712; 0.108526;,
0.732932; 0.108525;,
0.703222; 0.108522;,
0.703183; 0.504179;,
0.732893; 0.504182;,
0.801946; 0.108522;,
0.782294; 0.123676;,
0.782309; 0.481949;,
0.802019; 0.504179;,
0.782294; 0.123676;,
0.752585; 0.123677;,
0.752600; 0.481951;,
0.782309; 0.481949;,
0.752585; 0.123677;,
0.732932; 0.108525;,
0.732893; 0.504182;,
0.752600; 0.481951;,
0.802019; 0.504179;,
0.782309; 0.481949;,
0.752600; 0.481951;,
0.732893; 0.504182;,
0.673030; 0.504182;,
0.653323; 0.481951;,
0.623614; 0.481949;,
0.603904; 0.504180;,
0.832209; 0.108525;,
0.802499; 0.108522;,
0.802462; 0.504179;,
0.832170; 0.504182;,
0.901224; 0.108522;,
0.881572; 0.123675;,
0.881587; 0.481949;,
0.901297; 0.504179;,
0.881572; 0.123675;,
0.851862; 0.123677;,
0.851878; 0.481950;,
0.881587; 0.481949;,
0.851862; 0.123677;,
0.832209; 0.108525;,
0.832170; 0.504182;,
0.851878; 0.481950;,
0.732932; 0.108525;,
0.752585; 0.123677;,
0.782294; 0.123676;,
0.801946; 0.108522;,
0.603976; 0.108524;,
0.623629; 0.123677;,
0.653338; 0.123678;,
0.672991; 0.108526;,
0.504625; 0.504625;,
0.504625; 0.999778;,
0.999778; 0.999778;,
0.999778; 0.504625;,
0.502631; 0.999513;,
0.502631; 0.487231;,
0.491425; 0.497578;,
0.493275; 0.989460;,
0.000222; 0.487496;,
0.000222; 0.999778;,
0.011428; 0.989431;,
0.009578; 0.497549;,
0.502631; 0.487231;,
0.000222; 0.487496;,
0.009578; 0.497549;,
0.491425; 0.497578;,
0.000222; 0.999778;,
0.502631; 0.999513;,
0.493275; 0.989460;,
0.011428; 0.989431;,
0.385267; 0.323058;,
0.386630; 0.365214;,
0.407898; 0.388421;,
0.408626; 0.301821;,
0.097215; 0.432307;,
0.121209; 0.393308;,
0.107780; 0.377390;,
0.069514; 0.434081;,
0.386630; 0.365214;,
0.344547; 0.367184;,
0.321185; 0.388422;,
0.407898; 0.388421;,
0.203667; 0.393542;,
0.235584; 0.434081;,
0.270917; 0.428903;,
0.215623; 0.371275;,
0.344547; 0.367184;,
0.343185; 0.325029;,
0.321920; 0.301822;,
0.321185; 0.388422;,
0.160922; 0.381165;,
0.203667; 0.393542;,
0.215623; 0.371275;,
0.158674; 0.359009;,
0.343185; 0.325029;,
0.385267; 0.323058;,
0.408626; 0.301821;,
0.321920; 0.301822;,
0.121209; 0.393308;,
0.160922; 0.381165;,
0.158674; 0.359009;,
0.107780; 0.377390;,
0.320742; 0.358671;,
0.250510; 0.308846;,
0.215623; 0.371275;,
0.270917; 0.428903;,
0.250510; 0.308846;,
0.164187; 0.285010;,
0.158674; 0.359009;,
0.215623; 0.371275;,
0.164187; 0.285010;,
0.074379; 0.306014;,
0.107780; 0.377390;,
0.158674; 0.359009;,
0.074379; 0.306014;,
0.000222; 0.368762;,
0.069514; 0.434081;,
0.107780; 0.377390;,
0.366401; 0.434081;,
0.366401; 0.388865;,
0.321185; 0.388865;,
0.321185; 0.434081;,
0.411617; 0.434081;,
0.411617; 0.388865;,
0.366401; 0.388865;,
0.366401; 0.434081;,
0.456832; 0.434081;,
0.456832; 0.388865;,
0.411617; 0.388865;,
0.411617; 0.434081;,
0.502048; 0.434081;,
0.502048; 0.388865;,
0.456832; 0.388865;,
0.456832; 0.434081;;
} // End of Plane UV coordinates
} // End of Plane mesh
} // End of Plane
} // End of Root

View File

@ -1,55 +1,38 @@
-- da wooden banner
minetest.register_node("banners:wooden_banner",
{
drawtype = "mesh",
mesh = "banner_support.x",
tiles = {"banner_support.png"},
description = "Wooden banner",
groups = {choppy=2, dig_immediate=2},
diggable = true,
stack_max = 1,
paramtype="light",
paramtype2="facedir",
after_place_node = function (pos, player, itemstack, pointed_thing)
banners.banner_after_place(pos, player, itemstack, pointed_thing)
end,
on_destruct = function(pos)
banners.banner_on_destruct(pos)
end,
on_use = function(i, p, pt)
banners.banner_on_use(i, p, pt)
end,
on_dig = function(pos, n, p)
banners.banner_on_dig(pos, n, p)
end
}
)
core.register_node("banners:wooden_banner", {
drawtype = "mesh",
mesh = "banner_support.obj",
tiles = { "banner_support.png" },
description = "Wooden banner",
groups = { choppy = 2, dig_immediate = 2 },
is_ground_content = false,
diggable = true,
stack_max = 1,
paramtype = "light",
paramtype2 = "facedir",
after_place_node = banners.banner_after_place,
on_destruct = banners.banner_on_destruct,
on_use = banners.banner_on_use,
on_dig = banners.banner_on_dig,
on_movenode = banners.banner_on_movenode,
})
-- steel banner
minetest.register_node("banners:steel_banner",
{
drawtype = "mesh",
mesh = "banner_support.x",
tiles = {"steel_support.png"},
description = "Steel banner",
groups = {cracky=2},
diggable = true,
stack_max = 1,
paramtype = "light",
paramtype2 = "facedir",
after_place_node = function (pos, player, itemstack, pointed_thing)
banners.banner_after_place(pos, player, itemstack, pointed_thing)
end,
on_destruct = function(pos)
banners.banner_on_destruct(pos)
end,
on_use = function(i, p, pt)
banners.banner_on_use(i, p, pt)
end,
on_dig = function(pos, n, p)
banners.banner_on_dig(pos, n, p)
end
}
)
core.register_node("banners:steel_banner", {
drawtype = "mesh",
mesh = "banner_support.obj",
tiles = { "steel_support.png" },
description = "Steel banner",
groups = { cracky = 2 },
is_ground_content = false,
diggable = true,
stack_max = 1,
paramtype = "light",
paramtype2 = "facedir",
after_place_node = banners.banner_after_place,
on_destruct = banners.banner_on_destruct,
on_use = banners.banner_on_use,
on_dig = banners.banner_on_dig,
on_movenode = banners.banner_on_movenode,
})

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 B

After

Width:  |  Height:  |  Size: 281 B