allow facedir nodes to also propogate light

This commit is contained in:
darkrose 2013-11-17 17:18:45 +10:00
parent 9e239fe2b2
commit 656b8e53f5
4 changed files with 259 additions and 81 deletions

View File

@ -1493,9 +1493,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE; i = CONTENT_GLASS_PANE;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Glass Pane"); f->description = std::string("Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1520,9 +1521,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_BLUE; i = CONTENT_GLASS_PANE_BLUE;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Blue Glass Pane"); f->description = std::string("Blue Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1547,9 +1549,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_GREEN; i = CONTENT_GLASS_PANE_GREEN;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Green Glass Pane"); f->description = std::string("Green Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1574,9 +1577,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_ORANGE; i = CONTENT_GLASS_PANE_ORANGE;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Orange Glass Pane"); f->description = std::string("Orange Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1601,9 +1605,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_PURPLE; i = CONTENT_GLASS_PANE_PURPLE;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Purple Glass Pane"); f->description = std::string("Purple Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1628,9 +1633,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_RED; i = CONTENT_GLASS_PANE_RED;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Red Glass Pane"); f->description = std::string("Red Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1655,9 +1661,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_YELLOW; i = CONTENT_GLASS_PANE_YELLOW;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Yellow Glass Pane"); f->description = std::string("Yellow Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -1682,9 +1689,10 @@ void content_mapnode_init()
i = CONTENT_GLASS_PANE_BLACK; i = CONTENT_GLASS_PANE_BLACK;
f = &content_features(i); f = &content_features(i);
f->description = std::string("Black Glass Pane"); f->description = std::string("Black Glass Pane");
//f->light_propagates = true; f->param2_type = CPT_FACEDIR_SIMPLE;
//f->sunlight_propagates = true; f->param_type = CPT_LIGHT;
f->param_type = CPT_FACEDIR_SIMPLE; f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
@ -2409,7 +2417,10 @@ void content_mapnode_init()
f->setAllTextures("sign.png"); f->setAllTextures("sign.png");
f->setTexture(4, "sign_back.png"); f->setTexture(4, "sign_back.png");
f->setTexture(5, "sign_front.png"); // Z- f->setTexture(5, "sign_front.png"); // Z-
f->param_type = CPT_FACEDIR_SIMPLE; f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->flammable = 1; // can be replaced by fire if the node under it is set on fire f->flammable = 1; // can be replaced by fire if the node under it is set on fire
@ -2441,7 +2452,10 @@ void content_mapnode_init()
f->setAllTextures("sign.png"); f->setAllTextures("sign.png");
f->setTexture(4, "sign_back_ud.png"); f->setTexture(4, "sign_back_ud.png");
f->setTexture(5, "sign_front_ud.png"); // Z- f->setTexture(5, "sign_front_ud.png"); // Z-
f->param_type = CPT_FACEDIR_SIMPLE; f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->flammable = 1; // can be replaced by fire if the node under it is set on fire f->flammable = 1; // can be replaced by fire if the node under it is set on fire
@ -3425,7 +3439,7 @@ void content_mapnode_init()
// doors // doors
i = CONTENT_WOOD_DOOR_LB; i = CONTENT_WOOD_DOOR_LB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Door"); f->description = std::string("Wood Door");
f->setAllTextures("door_wood_b.png"); f->setAllTextures("door_wood_b.png");
f->setTexture(2,"door_wood_b.png^^[transformFX"); f->setTexture(2,"door_wood_b.png^^[transformFX");
@ -3433,6 +3447,8 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_b.png^^[transformFX"); f->setTexture(4,"door_wood_b.png^^[transformFX");
f->setInventoryTexture("door_wood_inv.png"); f->setInventoryTexture("door_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3442,7 +3458,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_DOOR_LT; i = CONTENT_WOOD_DOOR_LT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Door"); f->description = std::string("Wood Door");
f->setAllTextures("door_wood_t.png"); f->setAllTextures("door_wood_t.png");
f->setTexture(2,"door_wood_t.png^^[transformFX"); f->setTexture(2,"door_wood_t.png^^[transformFX");
@ -3450,6 +3466,8 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_t.png^^[transformFX"); f->setTexture(4,"door_wood_t.png^^[transformFX");
f->setInventoryTexture("door_wood_inv.png"); f->setInventoryTexture("door_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3460,7 +3478,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_DOOR_LB; i = CONTENT_STEEL_DOOR_LB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Door"); f->description = std::string("Steel Door");
f->setAllTextures("door_steel_b.png"); f->setAllTextures("door_steel_b.png");
f->setTexture(2,"door_steel_b.png^^[transformFX"); f->setTexture(2,"door_steel_b.png^^[transformFX");
@ -3468,6 +3486,8 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_b.png^^[transformFX"); f->setTexture(4,"door_steel_b.png^^[transformFX");
f->setInventoryTexture("door_steel_inv.png"); f->setInventoryTexture("door_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3478,7 +3498,7 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_DOOR_LT; i = CONTENT_STEEL_DOOR_LT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Door"); f->description = std::string("Steel Door");
f->setAllTextures("door_steel_t.png"); f->setAllTextures("door_steel_t.png");
f->setTexture(2,"door_steel_t.png^^[transformFX"); f->setTexture(2,"door_steel_t.png^^[transformFX");
@ -3486,6 +3506,8 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_t.png^^[transformFX"); f->setTexture(4,"door_steel_t.png^^[transformFX");
f->setInventoryTexture("door_steel_inv.png"); f->setInventoryTexture("door_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3497,7 +3519,7 @@ void content_mapnode_init()
i = CONTENT_GLASS_DOOR_LB; i = CONTENT_GLASS_DOOR_LB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Glass Door"); f->description = std::string("Glass Door");
f->setAllTextures("door_glass_b.png"); f->setAllTextures("door_glass_b.png");
f->setTexture(2,"door_glass_b.png^^[transformFX"); f->setTexture(2,"door_glass_b.png^^[transformFX");
@ -3505,6 +3527,9 @@ void content_mapnode_init()
f->setTexture(4,"door_glass_b.png^^[transformFX"); f->setTexture(4,"door_glass_b.png^^[transformFX");
f->setInventoryTexture("door_glass_inv.png"); f->setInventoryTexture("door_glass_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3514,7 +3539,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.15); setWoodLikeDiggingProperties(f->digging_properties, 0.15);
i = CONTENT_GLASS_DOOR_LT; i = CONTENT_GLASS_DOOR_LT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Glass Door"); f->description = std::string("Glass Door");
f->setAllTextures("door_glass_t.png"); f->setAllTextures("door_glass_t.png");
f->setTexture(2,"door_glass_t.png^^[transformFX"); f->setTexture(2,"door_glass_t.png^^[transformFX");
@ -3522,6 +3547,9 @@ void content_mapnode_init()
f->setTexture(4,"door_glass_t.png^^[transformFX"); f->setTexture(4,"door_glass_t.png^^[transformFX");
f->setInventoryTexture("door_glass_inv.png"); f->setInventoryTexture("door_glass_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3532,7 +3560,7 @@ void content_mapnode_init()
i = CONTENT_WOOD_W_DOOR_LB; i = CONTENT_WOOD_W_DOOR_LB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Windowed Door"); f->description = std::string("Wood Windowed Door");
f->setAllTextures("door_wood_wb.png"); f->setAllTextures("door_wood_wb.png");
f->setTexture(2,"door_wood_wb.png^[transformFX"); f->setTexture(2,"door_wood_wb.png^[transformFX");
@ -3540,6 +3568,9 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_wb.png^[transformFX"); f->setTexture(4,"door_wood_wb.png^[transformFX");
f->setInventoryTexture("door_wood_w_inv.png"); f->setInventoryTexture("door_wood_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3549,7 +3580,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_W_DOOR_LT; i = CONTENT_WOOD_W_DOOR_LT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Windowed Door"); f->description = std::string("Wood Windowed Door");
f->setAllTextures("door_wood_wt.png"); f->setAllTextures("door_wood_wt.png");
f->setTexture(2,"door_wood_wt.png^[transformFX"); f->setTexture(2,"door_wood_wt.png^[transformFX");
@ -3557,6 +3588,9 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_wt.png^[transformFX"); f->setTexture(4,"door_wood_wt.png^[transformFX");
f->setInventoryTexture("door_wood_w_inv.png"); f->setInventoryTexture("door_wood_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3567,7 +3601,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_W_DOOR_LB; i = CONTENT_STEEL_W_DOOR_LB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Windowed Door"); f->description = std::string("Steel Windowed Door");
f->setAllTextures("door_steel_wb.png"); f->setAllTextures("door_steel_wb.png");
f->setTexture(2,"door_steel_wb.png^[transformFX"); f->setTexture(2,"door_steel_wb.png^[transformFX");
@ -3575,6 +3609,9 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_wb.png^[transformFX"); f->setTexture(4,"door_steel_wb.png^[transformFX");
f->setInventoryTexture("door_steel_w_inv.png"); f->setInventoryTexture("door_steel_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3585,7 +3622,7 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_W_DOOR_LT; i = CONTENT_STEEL_W_DOOR_LT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Windowed Door"); f->description = std::string("Steel Windowed Door");
f->setAllTextures("door_steel_wt.png"); f->setAllTextures("door_steel_wt.png");
f->setTexture(2,"door_steel_wt.png^[transformFX"); f->setTexture(2,"door_steel_wt.png^[transformFX");
@ -3593,6 +3630,9 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_wt.png^[transformFX"); f->setTexture(4,"door_steel_wt.png^[transformFX");
f->setInventoryTexture("door_steel_w_inv.png"); f->setInventoryTexture("door_steel_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3605,7 +3645,7 @@ void content_mapnode_init()
// right doors // right doors
i = CONTENT_WOOD_DOOR_RB; i = CONTENT_WOOD_DOOR_RB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Door"); f->description = std::string("Right Hanging Wood Door");
f->setAllTextures("door_wood_b.png^[transformFX"); f->setAllTextures("door_wood_b.png^[transformFX");
f->setTexture(2,"door_wood_b.png"); f->setTexture(2,"door_wood_b.png");
@ -3613,6 +3653,8 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_b.png"); f->setTexture(4,"door_wood_b.png");
f->setInventoryTexture("door_wood_inv.png^[transformFX"); f->setInventoryTexture("door_wood_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3622,7 +3664,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_DOOR_RT; i = CONTENT_WOOD_DOOR_RT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Door"); f->description = std::string("Right Hanging Wood Door");
f->setAllTextures("door_wood_t.png^[transformFX"); f->setAllTextures("door_wood_t.png^[transformFX");
f->setTexture(2,"door_wood_t.png"); f->setTexture(2,"door_wood_t.png");
@ -3630,6 +3672,8 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_t.png"); f->setTexture(4,"door_wood_t.png");
f->setInventoryTexture("door_wood_inv.png^[transformFX"); f->setInventoryTexture("door_wood_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3640,7 +3684,7 @@ void content_mapnode_init()
i = CONTENT_GLASS_DOOR_RB; i = CONTENT_GLASS_DOOR_RB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Glass Door"); f->description = std::string("Right Hanging Glass Door");
f->setAllTextures("door_glass_b.png^[transformFX"); f->setAllTextures("door_glass_b.png^[transformFX");
f->setTexture(2,"door_glass_b.png"); f->setTexture(2,"door_glass_b.png");
@ -3648,6 +3692,9 @@ void content_mapnode_init()
f->setTexture(4,"door_glass_b.png"); f->setTexture(4,"door_glass_b.png");
f->setInventoryTexture("door_glass_inv.png^[transformFX"); f->setInventoryTexture("door_glass_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3657,7 +3704,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.15); setWoodLikeDiggingProperties(f->digging_properties, 0.15);
i = CONTENT_GLASS_DOOR_RT; i = CONTENT_GLASS_DOOR_RT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Glass Door"); f->description = std::string("Right Hanging Glass Door");
f->setAllTextures("door_glass_t.png^[transformFX"); f->setAllTextures("door_glass_t.png^[transformFX");
f->setTexture(2,"door_glass_t.png"); f->setTexture(2,"door_glass_t.png");
@ -3665,6 +3712,9 @@ void content_mapnode_init()
f->setTexture(4,"door_glass_t.png"); f->setTexture(4,"door_glass_t.png");
f->setInventoryTexture("door_glass_inv.png^[transformFX"); f->setInventoryTexture("door_glass_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3675,7 +3725,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_DOOR_RB; i = CONTENT_STEEL_DOOR_RB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Door"); f->description = std::string("Right Hanging Steel Door");
f->setAllTextures("door_steel_b.png^[transformFX"); f->setAllTextures("door_steel_b.png^[transformFX");
f->setTexture(2,"door_steel_b.png"); f->setTexture(2,"door_steel_b.png");
@ -3683,6 +3733,8 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_b.png"); f->setTexture(4,"door_steel_b.png");
f->setInventoryTexture("door_steel_inv.png^[transformFX"); f->setInventoryTexture("door_steel_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3693,7 +3745,7 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_DOOR_RT; i = CONTENT_STEEL_DOOR_RT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Door"); f->description = std::string("Right Hanging Steel Door");
f->setAllTextures("door_steel_t.png^[transformFX"); f->setAllTextures("door_steel_t.png^[transformFX");
f->setTexture(2,"door_steel_t.png"); f->setTexture(2,"door_steel_t.png");
@ -3701,6 +3753,8 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_t.png"); f->setTexture(4,"door_steel_t.png");
f->setInventoryTexture("door_steel_inv.png^[transformFX"); f->setInventoryTexture("door_steel_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3712,7 +3766,7 @@ void content_mapnode_init()
i = CONTENT_WOOD_W_DOOR_RB; i = CONTENT_WOOD_W_DOOR_RB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Windowed Door"); f->description = std::string("Right Hanging Wood Windowed Door");
f->setAllTextures("door_wood_wb.png^[transformFX"); f->setAllTextures("door_wood_wb.png^[transformFX");
f->setTexture(2,"door_wood_wb.png"); f->setTexture(2,"door_wood_wb.png");
@ -3720,6 +3774,9 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_wb.png"); f->setTexture(4,"door_wood_wb.png");
f->setInventoryTexture("door_wood_w_inv.png^[transformFX"); f->setInventoryTexture("door_wood_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3729,7 +3786,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_W_DOOR_RT; i = CONTENT_WOOD_W_DOOR_RT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Windowed Door"); f->description = std::string("Right Hanging Wood Windowed Door");
f->setAllTextures("door_wood_wt.png^[transformFX"); f->setAllTextures("door_wood_wt.png^[transformFX");
f->setTexture(2,"door_wood_wt.png"); f->setTexture(2,"door_wood_wt.png");
@ -3737,6 +3794,9 @@ void content_mapnode_init()
f->setTexture(4,"door_wood_wt.png"); f->setTexture(4,"door_wood_wt.png");
f->setInventoryTexture("door_wood_w_inv.png^[transformFX"); f->setInventoryTexture("door_wood_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3747,7 +3807,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_W_DOOR_RB; i = CONTENT_STEEL_W_DOOR_RB;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Windowed Door"); f->description = std::string("Right Hanging Steel Windowed Door");
f->setAllTextures("door_steel_wb.png^[transformFX"); f->setAllTextures("door_steel_wb.png^[transformFX");
f->setTexture(2,"door_steel_wb.png"); f->setTexture(2,"door_steel_wb.png");
@ -3755,6 +3815,9 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_wb.png"); f->setTexture(4,"door_steel_wb.png");
f->setInventoryTexture("door_steel_w_inv.png^[transformFX"); f->setInventoryTexture("door_steel_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3765,7 +3828,7 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_W_DOOR_RT; i = CONTENT_STEEL_W_DOOR_RT;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Windowed Door"); f->description = std::string("Right Hanging Steel Windowed Door");
f->setAllTextures("door_steel_wt.png^[transformFX"); f->setAllTextures("door_steel_wt.png^[transformFX");
f->setTexture(2,"door_steel_wt.png"); f->setTexture(2,"door_steel_wt.png");
@ -3773,6 +3836,9 @@ void content_mapnode_init()
f->setTexture(4,"door_steel_wt.png"); f->setTexture(4,"door_steel_wt.png");
f->setInventoryTexture("door_steel_w_inv.png^[transformFX"); f->setInventoryTexture("door_steel_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3785,12 +3851,15 @@ void content_mapnode_init()
// open doors // open doors
i = CONTENT_WOOD_DOOR_LB_OPEN; i = CONTENT_WOOD_DOOR_LB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Door"); f->description = std::string("Wood Door");
f->setAllTextures("door_wood_b.png"); f->setAllTextures("door_wood_b.png");
f->setTexture(3,"door_wood_b.png^[transformFX"); f->setTexture(3,"door_wood_b.png^[transformFX");
f->setInventoryTexture("door_wood_inv.png"); f->setInventoryTexture("door_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3800,12 +3869,15 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_DOOR_LT_OPEN; i = CONTENT_WOOD_DOOR_LT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Door"); f->description = std::string("Wood Door");
f->setAllTextures("door_wood_t.png"); f->setAllTextures("door_wood_t.png");
f->setTexture(3,"door_wood_t.png^[transformFX"); f->setTexture(3,"door_wood_t.png^[transformFX");
f->setInventoryTexture("door_wood_inv.png"); f->setInventoryTexture("door_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3816,12 +3888,15 @@ void content_mapnode_init()
i = CONTENT_GLASS_DOOR_LB_OPEN; i = CONTENT_GLASS_DOOR_LB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Glass Door"); f->description = std::string("Glass Door");
f->setAllTextures("door_glass_b.png"); f->setAllTextures("door_glass_b.png");
f->setTexture(3,"door_glass_b.png^[transformFX"); f->setTexture(3,"door_glass_b.png^[transformFX");
f->setInventoryTexture("door_glass_inv.png"); f->setInventoryTexture("door_glass_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3831,12 +3906,15 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.15); setWoodLikeDiggingProperties(f->digging_properties, 0.15);
i = CONTENT_GLASS_DOOR_LT_OPEN; i = CONTENT_GLASS_DOOR_LT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Glass Door"); f->description = std::string("Glass Door");
f->setAllTextures("door_glass_t.png"); f->setAllTextures("door_glass_t.png");
f->setTexture(3,"door_glass_t.png^[transformFX"); f->setTexture(3,"door_glass_t.png^[transformFX");
f->setInventoryTexture("door_glass_inv.png"); f->setInventoryTexture("door_glass_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3847,12 +3925,15 @@ void content_mapnode_init()
i = CONTENT_STEEL_DOOR_LB_OPEN; i = CONTENT_STEEL_DOOR_LB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Door"); f->description = std::string("Steel Door");
f->setAllTextures("door_steel_b.png"); f->setAllTextures("door_steel_b.png");
f->setTexture(3,"door_steel_b.png^[transformFX"); f->setTexture(3,"door_steel_b.png^[transformFX");
f->setInventoryTexture("door_steel_inv.png"); f->setInventoryTexture("door_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3863,12 +3944,15 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_DOOR_LT_OPEN; i = CONTENT_STEEL_DOOR_LT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Door"); f->description = std::string("Steel Door");
f->setAllTextures("door_steel_t.png"); f->setAllTextures("door_steel_t.png");
f->setTexture(3,"door_steel_t.png^[transformFX"); f->setTexture(3,"door_steel_t.png^[transformFX");
f->setInventoryTexture("door_steel_inv.png"); f->setInventoryTexture("door_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3880,12 +3964,15 @@ void content_mapnode_init()
i = CONTENT_WOOD_W_DOOR_LB_OPEN; i = CONTENT_WOOD_W_DOOR_LB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Windowed Door"); f->description = std::string("Wood Windowed Door");
f->setAllTextures("door_wood_wb.png"); f->setAllTextures("door_wood_wb.png");
f->setTexture(3,"door_wood_wb.png^[transformFX"); f->setTexture(3,"door_wood_wb.png^[transformFX");
f->setInventoryTexture("door_wood_w_inv.png"); f->setInventoryTexture("door_wood_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3895,12 +3982,15 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_W_DOOR_LT_OPEN; i = CONTENT_WOOD_W_DOOR_LT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Windowed Door"); f->description = std::string("Wood Windowed Door");
f->setAllTextures("door_wood_wt.png"); f->setAllTextures("door_wood_wt.png");
f->setTexture(3,"door_wood_wt.png^[transformFX"); f->setTexture(3,"door_wood_wt.png^[transformFX");
f->setInventoryTexture("door_wood_w_inv.png"); f->setInventoryTexture("door_wood_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3911,12 +4001,15 @@ void content_mapnode_init()
i = CONTENT_STEEL_W_DOOR_LB_OPEN; i = CONTENT_STEEL_W_DOOR_LB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Windowed Door"); f->description = std::string("Steel Windowed Door");
f->setAllTextures("door_steel_wb.png"); f->setAllTextures("door_steel_wb.png");
f->setTexture(3,"door_steel_wb.png^[transformFX"); f->setTexture(3,"door_steel_wb.png^[transformFX");
f->setInventoryTexture("door_steel_w_inv.png"); f->setInventoryTexture("door_steel_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3927,12 +4020,15 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_W_DOOR_LT_OPEN; i = CONTENT_STEEL_W_DOOR_LT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Windowed Door"); f->description = std::string("Steel Windowed Door");
f->setAllTextures("door_steel_wt.png"); f->setAllTextures("door_steel_wt.png");
f->setTexture(3,"door_steel_wt.png^[transformFX"); f->setTexture(3,"door_steel_wt.png^[transformFX");
f->setInventoryTexture("door_steel_w_inv.png"); f->setInventoryTexture("door_steel_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3945,7 +4041,7 @@ void content_mapnode_init()
// right open doors // right open doors
i = CONTENT_WOOD_DOOR_RB_OPEN; i = CONTENT_WOOD_DOOR_RB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Door"); f->description = std::string("Right Hanging Wood Door");
f->setAllTextures("door_wood_b.png"); f->setAllTextures("door_wood_b.png");
f->setTexture(3,"door_wood_b.png^[transformFX"); f->setTexture(3,"door_wood_b.png^[transformFX");
@ -3953,6 +4049,9 @@ void content_mapnode_init()
f->setTexture(5,"door_wood_b.png^[transformFX"); f->setTexture(5,"door_wood_b.png^[transformFX");
f->setInventoryTexture("door_wood_inv.png^[transformFX"); f->setInventoryTexture("door_wood_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3962,7 +4061,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_DOOR_RT_OPEN; i = CONTENT_WOOD_DOOR_RT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Door"); f->description = std::string("Right Hanging Wood Door");
f->setAllTextures("door_wood_t.png"); f->setAllTextures("door_wood_t.png");
f->setTexture(3,"door_wood_t.png^[transformFX"); f->setTexture(3,"door_wood_t.png^[transformFX");
@ -3970,6 +4069,9 @@ void content_mapnode_init()
f->setTexture(5,"door_wood_t.png^[transformFX"); f->setTexture(5,"door_wood_t.png^[transformFX");
f->setInventoryTexture("door_wood_inv.png^[transformFX"); f->setInventoryTexture("door_wood_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3980,7 +4082,7 @@ void content_mapnode_init()
i = CONTENT_GLASS_DOOR_RB_OPEN; i = CONTENT_GLASS_DOOR_RB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Glass Door"); f->description = std::string("Right Hanging Glass Door");
f->setAllTextures("door_glass_b.png"); f->setAllTextures("door_glass_b.png");
f->setTexture(2,"door_glass_b.png^^[transformFX"); f->setTexture(2,"door_glass_b.png^^[transformFX");
@ -3988,6 +4090,9 @@ void content_mapnode_init()
f->setTexture(4,"door_glass_b.png^^[transformFX"); f->setTexture(4,"door_glass_b.png^^[transformFX");
f->setInventoryTexture("door_glass_inv.png^[transformFX"); f->setInventoryTexture("door_glass_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -3997,7 +4102,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.15); setWoodLikeDiggingProperties(f->digging_properties, 0.15);
i = CONTENT_GLASS_DOOR_RT_OPEN; i = CONTENT_GLASS_DOOR_RT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Glass Door"); f->description = std::string("Right Hanging Glass Door");
f->setAllTextures("door_glass_t.png"); f->setAllTextures("door_glass_t.png");
f->setTexture(2,"door_glass_t.png^^[transformFX"); f->setTexture(2,"door_glass_t.png^^[transformFX");
@ -4005,6 +4110,9 @@ void content_mapnode_init()
f->setTexture(4,"door_glass_t.png^^[transformFX"); f->setTexture(4,"door_glass_t.png^^[transformFX");
f->setInventoryTexture("door_glass_inv.png^[transformFX"); f->setInventoryTexture("door_glass_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4015,7 +4123,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_DOOR_RB_OPEN; i = CONTENT_STEEL_DOOR_RB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Door"); f->description = std::string("Right Hanging Steel Door");
f->setAllTextures("door_steel_b.png"); f->setAllTextures("door_steel_b.png");
f->setTexture(3,"door_steel_b.png^[transformFX"); f->setTexture(3,"door_steel_b.png^[transformFX");
@ -4023,6 +4131,9 @@ void content_mapnode_init()
f->setTexture(5,"door_steel_b.png^[transformFX"); f->setTexture(5,"door_steel_b.png^[transformFX");
f->setInventoryTexture("door_steel_inv.png^[transformFX"); f->setInventoryTexture("door_steel_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4033,7 +4144,7 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_DOOR_RT_OPEN; i = CONTENT_STEEL_DOOR_RT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Door"); f->description = std::string("Right Hanging Steel Door");
f->setAllTextures("door_steel_b.png"); f->setAllTextures("door_steel_b.png");
f->setTexture(3,"door_steel_t.png^[transformFX"); f->setTexture(3,"door_steel_t.png^[transformFX");
@ -4041,6 +4152,9 @@ void content_mapnode_init()
f->setTexture(5,"door_steel_t.png^[transformFX"); f->setTexture(5,"door_steel_t.png^[transformFX");
f->setInventoryTexture("door_steel_inv.png^[transformFX"); f->setInventoryTexture("door_steel_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4052,7 +4166,7 @@ void content_mapnode_init()
i = CONTENT_WOOD_W_DOOR_RB_OPEN; i = CONTENT_WOOD_W_DOOR_RB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Windowed Door"); f->description = std::string("Right Hanging Wood Windowed Door");
f->setAllTextures("door_wood_wb.png"); f->setAllTextures("door_wood_wb.png");
f->setTexture(3,"door_wood_wb.png^[transformFX"); f->setTexture(3,"door_wood_wb.png^[transformFX");
@ -4060,6 +4174,9 @@ void content_mapnode_init()
f->setTexture(5,"door_wood_wb.png^[transformFX"); f->setTexture(5,"door_wood_wb.png^[transformFX");
f->setInventoryTexture("door_wood_w_inv.png^[transformFX"); f->setInventoryTexture("door_wood_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4069,7 +4186,7 @@ void content_mapnode_init()
setWoodLikeDiggingProperties(f->digging_properties, 0.75); setWoodLikeDiggingProperties(f->digging_properties, 0.75);
i = CONTENT_WOOD_W_DOOR_RT_OPEN; i = CONTENT_WOOD_W_DOOR_RT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Wood Windowed Door"); f->description = std::string("Right Hanging Wood Windowed Door");
f->setAllTextures("door_wood_wt.png"); f->setAllTextures("door_wood_wt.png");
f->setTexture(3,"door_wood_wt.png^[transformFX"); f->setTexture(3,"door_wood_wt.png^[transformFX");
@ -4077,6 +4194,9 @@ void content_mapnode_init()
f->setTexture(5,"door_wood_wt.png^[transformFX"); f->setTexture(5,"door_wood_wt.png^[transformFX");
f->setInventoryTexture("door_wood_w_inv.png^[transformFX"); f->setInventoryTexture("door_wood_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4087,7 +4207,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_W_DOOR_RB_OPEN; i = CONTENT_STEEL_W_DOOR_RB_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Windowed Door"); f->description = std::string("Right Hanging Steel Windowed Door");
f->setAllTextures("door_steel_wb.png"); f->setAllTextures("door_steel_wb.png");
f->setTexture(3,"door_steel_wb.png^[transformFX"); f->setTexture(3,"door_steel_wb.png^[transformFX");
@ -4095,6 +4215,9 @@ void content_mapnode_init()
f->setTexture(5,"door_steel_wb.png^[transformFX"); f->setTexture(5,"door_steel_wb.png^[transformFX");
f->setInventoryTexture("door_steel_w_inv.png^[transformFX"); f->setInventoryTexture("door_steel_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4105,7 +4228,7 @@ void content_mapnode_init()
setStoneLikeDiggingProperties(f->digging_properties, 5.0); setStoneLikeDiggingProperties(f->digging_properties, 5.0);
i = CONTENT_STEEL_W_DOOR_RT_OPEN; i = CONTENT_STEEL_W_DOOR_RT_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Right Hanging Steel Windowed Door"); f->description = std::string("Right Hanging Steel Windowed Door");
f->setAllTextures("door_steel_wt.png"); f->setAllTextures("door_steel_wt.png");
f->setTexture(3,"door_steel_wt.png^[transformFX"); f->setTexture(3,"door_steel_wt.png^[transformFX");
@ -4113,6 +4236,9 @@ void content_mapnode_init()
f->setTexture(5,"door_steel_wt.png^[transformFX"); f->setTexture(5,"door_steel_wt.png^[transformFX");
f->setInventoryTexture("door_steel_w_inv.png^[transformFX"); f->setInventoryTexture("door_steel_w_inv.png^[transformFX");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4158,12 +4284,15 @@ void content_mapnode_init()
i = CONTENT_WOOD_W_HATCH; i = CONTENT_WOOD_W_HATCH;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Windowed Hatch"); f->description = std::string("Wood Windowed Hatch");
f->setAllTextures("hatch_wood_w.png"); f->setAllTextures("hatch_wood_w.png");
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("hatch_wood_w_inv.png"); f->setInventoryTexture("hatch_wood_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4174,12 +4303,15 @@ void content_mapnode_init()
i = CONTENT_STEEL_W_HATCH; i = CONTENT_STEEL_W_HATCH;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Windowed Hatch"); f->description = std::string("Steel Windowed Hatch");
f->setAllTextures("hatch_steel_w.png"); f->setAllTextures("hatch_steel_w.png");
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("hatch_steel_w_inv.png"); f->setInventoryTexture("hatch_steel_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4192,12 +4324,15 @@ void content_mapnode_init()
// gates // gates
i = CONTENT_WOOD_GATE; i = CONTENT_WOOD_GATE;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Gate"); f->description = std::string("Wood Gate");
f->setAllTextures("gate_wood.png"); f->setAllTextures("gate_wood.png");
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("gate_wood_inv.png"); f->setInventoryTexture("gate_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4208,12 +4343,15 @@ void content_mapnode_init()
i = CONTENT_STEEL_GATE; i = CONTENT_STEEL_GATE;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Gate"); f->description = std::string("Steel Gate");
f->setAllTextures("gate_steel.png"); f->setAllTextures("gate_steel.png");
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("gate_steel_inv.png"); f->setInventoryTexture("gate_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4226,7 +4364,7 @@ void content_mapnode_init()
// open hatches // open hatches
i = CONTENT_WOOD_HATCH_OPEN; i = CONTENT_WOOD_HATCH_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Hatch"); f->description = std::string("Wood Hatch");
f->setAllTextures("hatch_wood.png"); f->setAllTextures("hatch_wood.png");
f->setTexture(2,"hatch_wood.png^[transformR90"); f->setTexture(2,"hatch_wood.png^[transformR90");
@ -4234,6 +4372,9 @@ void content_mapnode_init()
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("hatch_wood_inv.png"); f->setInventoryTexture("hatch_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->climbable = true; f->climbable = true;
@ -4244,7 +4385,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_HATCH_OPEN; i = CONTENT_STEEL_HATCH_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Hatch"); f->description = std::string("Steel Hatch");
f->setAllTextures("hatch_steel.png"); f->setAllTextures("hatch_steel.png");
f->setTexture(2,"hatch_steel.png^[transformR90"); f->setTexture(2,"hatch_steel.png^[transformR90");
@ -4252,6 +4393,9 @@ void content_mapnode_init()
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("hatch_steel_inv.png"); f->setInventoryTexture("hatch_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->climbable = true; f->climbable = true;
@ -4263,7 +4407,7 @@ void content_mapnode_init()
i = CONTENT_WOOD_W_HATCH_OPEN; i = CONTENT_WOOD_W_HATCH_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Hatch"); f->description = std::string("Wood Hatch");
f->setAllTextures("hatch_wood_w.png"); f->setAllTextures("hatch_wood_w.png");
f->setTexture(2,"hatch_wood.png^[transformR90"); f->setTexture(2,"hatch_wood.png^[transformR90");
@ -4271,6 +4415,9 @@ void content_mapnode_init()
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("hatch_wood_w_inv.png"); f->setInventoryTexture("hatch_wood_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->climbable = true; f->climbable = true;
@ -4281,7 +4428,7 @@ void content_mapnode_init()
i = CONTENT_STEEL_W_HATCH_OPEN; i = CONTENT_STEEL_W_HATCH_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Hatch"); f->description = std::string("Steel Hatch");
f->setAllTextures("hatch_steel_w.png"); f->setAllTextures("hatch_steel_w.png");
f->setTexture(2,"hatch_steel.png^[transformR90"); f->setTexture(2,"hatch_steel.png^[transformR90");
@ -4289,6 +4436,9 @@ void content_mapnode_init()
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("hatch_steel_w_inv.png"); f->setInventoryTexture("hatch_steel_w_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->climbable = true; f->climbable = true;
@ -4301,12 +4451,15 @@ void content_mapnode_init()
// open gates // open gates
i = CONTENT_WOOD_GATE_OPEN; i = CONTENT_WOOD_GATE_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Wood Gate"); f->description = std::string("Wood Gate");
f->setAllTextures("gate_wood.png"); f->setAllTextures("gate_wood.png");
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("gate_wood_inv.png"); f->setInventoryTexture("gate_wood_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;
@ -4317,12 +4470,15 @@ void content_mapnode_init()
i = CONTENT_STEEL_GATE_OPEN; i = CONTENT_STEEL_GATE_OPEN;
f = &content_features(i); f = &content_features(i);
f->param_type = CPT_FACEDIR_SIMPLE; f->param2_type = CPT_FACEDIR_SIMPLE;
f->description = std::string("Steel Gate"); f->description = std::string("Steel Gate");
f->setAllTextures("gate_steel.png"); f->setAllTextures("gate_steel.png");
f->rotate_tile_with_nodebox = true; f->rotate_tile_with_nodebox = true;
f->setInventoryTexture("gate_steel_inv.png"); f->setInventoryTexture("gate_steel_inv.png");
f->wield_nodebox = false; f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->light_propagates = true;
f->sunlight_propagates = true;
f->draw_type = CDT_NODEBOX; f->draw_type = CDT_NODEBOX;
f->solidness = 0; // drawn separately, makes no faces f->solidness = 0; // drawn separately, makes no faces
f->is_ground_content = true; f->is_ground_content = true;

View File

@ -44,8 +44,8 @@ static std::vector<aabb3f> transformNodeBox(MapNode &n,
{ {
std::vector<aabb3f> boxes; std::vector<aabb3f> boxes;
int facedir = 0; int facedir = 0;
if (content_features(n).param_type == CPT_FACEDIR_SIMPLE) if (content_features(n).param2_type == CPT_FACEDIR_SIMPLE)
facedir = n.param1; facedir = n.param2&0x0F;
for(std::vector<aabb3f>::const_iterator for(std::vector<aabb3f>::const_iterator
i = nodebox.begin(); i = nodebox.begin();
i != nodebox.end(); i++) i != nodebox.end(); i++)
@ -314,8 +314,11 @@ TileSpec MapNode::getTile(v3s16 dir)
TileSpec spec; TileSpec spec;
s32 dir_i = 0; s32 dir_i = 0;
if(content_features(*this).param_type == CPT_FACEDIR_SIMPLE) if (content_features(*this).param2_type == CPT_FACEDIR_SIMPLE) {
dir = facedir_rotate(param2&0x0F, dir);
}else if (content_features(*this).param_type == CPT_FACEDIR_SIMPLE) {
dir = facedir_rotate(param1, dir); dir = facedir_rotate(param1, dir);
}
if(dir == v3s16(0,-1,0)) if(dir == v3s16(0,-1,0))
dir_i = 1; dir_i = 1;

View File

@ -158,6 +158,7 @@ struct ContentFeatures
// Type of MapNode::param1 // Type of MapNode::param1
ContentParamType param_type; ContentParamType param_type;
ContentParamType param2_type;
// drawtype // drawtype
ContentDrawType draw_type; ContentDrawType draw_type;
// True for all ground-like things like stone and mud, false for eg. trees // True for all ground-like things like stone and mud, false for eg. trees
@ -253,6 +254,7 @@ struct ContentFeatures
0.5*BS 0.5*BS
)); ));
param_type = CPT_NONE; param_type = CPT_NONE;
param2_type = CPT_NONE;
draw_type = CDT_AIRLIKE; draw_type = CDT_AIRLIKE;
is_ground_content = false; is_ground_content = false;
light_propagates = false; light_propagates = false;

View File

@ -3176,8 +3176,23 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
n.param2 = packDir(p_under - p_over); n.param2 = packDir(p_under - p_over);
// Calculate the direction for furnaces and chests and stuff // Calculate the direction for furnaces and chests and stuff
if(content_features(n).param_type == CPT_FACEDIR_SIMPLE) if (content_features(n).param2_type == CPT_FACEDIR_SIMPLE) {
{ v3f playerpos = player->getPosition();
v3f blockpos = intToFloat(p_over, BS) - playerpos;
blockpos = blockpos.normalize();
n.param2 &= 0xF0;
if (fabs(blockpos.X) > fabs(blockpos.Z)) {
if (blockpos.X < 0)
n.param2 |= 0x03;
else
n.param2 |= 0x01;
} else {
if (blockpos.Z < 0)
n.param2 |= 0x02;
else
n.param2 |= 0x00;
}
}else if (content_features(n).param_type == CPT_FACEDIR_SIMPLE) {
v3f playerpos = player->getPosition(); v3f playerpos = player->getPosition();
v3f blockpos = intToFloat(p_over, BS) - playerpos; v3f blockpos = intToFloat(p_over, BS) - playerpos;
blockpos = blockpos.normalize(); blockpos = blockpos.normalize();
@ -3209,6 +3224,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
MapNode m; MapNode m;
m.setContent(n.getContent()|CONTENT_DOOR_SECT_MASK); m.setContent(n.getContent()|CONTENT_DOOR_SECT_MASK);
m.param1 = n.param1; m.param1 = n.param1;
m.param2 |= n.param2&0x0F;
sendAddNode(p_over+v3s16(0,1,0), m, 0, &far_players, 30); sendAddNode(p_over+v3s16(0,1,0), m, 0, &far_players, 30);
{ {
MapEditEventIgnorer ign(&m_ignore_map_edit_events); MapEditEventIgnorer ign(&m_ignore_map_edit_events);
@ -3221,6 +3237,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
MapNode m; MapNode m;
m.setContent(n.getContent()&~CONTENT_DOOR_SECT_MASK); m.setContent(n.getContent()&~CONTENT_DOOR_SECT_MASK);
m.param1 = n.param1; m.param1 = n.param1;
m.param2 |= n.param2&0x0F;
sendAddNode(p_over+v3s16(0,-1,0), m, 0, &far_players, 30); sendAddNode(p_over+v3s16(0,-1,0), m, 0, &far_players, 30);
{ {
MapEditEventIgnorer ign(&m_ignore_map_edit_events); MapEditEventIgnorer ign(&m_ignore_map_edit_events);