Use 2 banner entities

This commit is contained in:
Wuzzy 2017-07-31 03:59:43 +02:00
parent a1b04ebf66
commit 8d0c8965d7
1 changed files with 13 additions and 14 deletions

View File

@ -58,7 +58,7 @@ local on_destruct_hanging_banner = function(pos)
local checkpos = vector.add(pos, hanging_banner_entity_offset) local checkpos = vector.add(pos, hanging_banner_entity_offset)
local objects = minetest.get_objects_inside_radius(checkpos, 0.5) local objects = minetest.get_objects_inside_radius(checkpos, 0.5)
for _, v in ipairs(objects) do for _, v in ipairs(objects) do
if v:get_entity_name() == "mcl_banners:standing_banner" then if v:get_entity_name() == "mcl_banners:hanging_banner" then
v:get_luaentity():_drop() v:get_luaentity():_drop()
end end
end end
@ -242,10 +242,11 @@ for colorid, colortab in pairs(mcl_banners.colors) do
place_pos = vector.add(place_pos, standing_banner_entity_offset) place_pos = vector.add(place_pos, standing_banner_entity_offset)
end end
local banner = minetest.add_entity(place_pos, "mcl_banners:standing_banner") local banner
if hanging then if hanging then
banner:set_properties({mesh="amc_banner_hanging.b3d"}) banner = minetest.add_entity(place_pos, "mcl_banners:hanging_banner")
banner:get_luaentity()._banner_type = "hanging" else
banner = minetest.add_entity(place_pos, "mcl_banners:standing_banner")
end end
local imeta = itemstack:get_meta() local imeta = itemstack:get_meta()
local layers_raw = imeta:get_string("layers") local layers_raw = imeta:get_string("layers")
@ -293,8 +294,8 @@ for colorid, colortab in pairs(mcl_banners.colors) do
end end
end end
-- Banner entity. Used for standing AND hanging banners! -- Banner entities.
minetest.register_entity("mcl_banners:standing_banner", { local entity_standing = {
physical = false, physical = false,
collide_with_objects = false, collide_with_objects = false,
visual = "mesh", visual = "mesh",
@ -308,7 +309,6 @@ minetest.register_entity("mcl_banners:standing_banner", {
-- This is a table of tables with each table having the following fields: -- This is a table of tables with each table having the following fields:
-- color: layer color ID (see colors table above) -- color: layer color ID (see colors table above)
-- pattern: name of pattern (see list above) -- pattern: name of pattern (see list above)
_banner_type = "standing", -- standing or hanging
get_staticdata = function(self) get_staticdata = function(self)
local out = { _base_color = self._base_color, _layers = self._layers } local out = { _base_color = self._base_color, _layers = self._layers }
@ -319,13 +319,7 @@ minetest.register_entity("mcl_banners:standing_banner", {
local inp = minetest.deserialize(staticdata) local inp = minetest.deserialize(staticdata)
self._base_color = inp._base_color self._base_color = inp._base_color
self._layers = inp._layers self._layers = inp._layers
self._banner_type = inp._banner_type
local mesh
if self._banner_type == "hanging" then
mesh = "amc_banner_hanging.b3d"
end
self.object:set_properties({ self.object:set_properties({
mesh = mesh,
textures = make_banner_texture(self._base_color, self._layers), textures = make_banner_texture(self._base_color, self._layers),
}) })
end end
@ -366,7 +360,12 @@ minetest.register_entity("mcl_banners:standing_banner", {
end end
self.object:set_properties({textures = make_banner_texture(self._base_color, self._layers)}) self.object:set_properties({textures = make_banner_texture(self._base_color, self._layers)})
end, end,
}) }
minetest.register_entity("mcl_banners:standing_banner", entity_standing)
local entity_hanging = table.copy(entity_standing)
entity_hanging.mesh = "amc_banner_hanging.b3d"
minetest.register_entity("mcl_banners:hanging_banner", entity_hanging)
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",