mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 08:03:45 +01:00
Fixed handling of inventory in creative mode (normal inventory is not trashed anymore), fixed mese pick speed, added some forgotten stuff
This commit is contained in:
parent
4ccc99b291
commit
8e1eacf3a8
BIN
data/cooked_rat.png
Normal file
BIN
data/cooked_rat.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 239 B |
BIN
data/nc_back.png
Normal file
BIN
data/nc_back.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 303 B |
BIN
data/nc_front.png
Normal file
BIN
data/nc_front.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 410 B |
BIN
data/nc_rb.png
Normal file
BIN
data/nc_rb.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 203 B |
BIN
data/nc_side.png
Normal file
BIN
data/nc_side.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 260 B |
BIN
data/scorched_stuff.png
Normal file
BIN
data/scorched_stuff.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 233 B |
@ -474,13 +474,30 @@ void content_mapnode_init()
|
|||||||
f->dug_item = std::string("MaterialItem ")+itos(i)+" 1";
|
f->dug_item = std::string("MaterialItem ")+itos(i)+" 1";
|
||||||
setStoneLikeDiggingProperties(f->digging_properties, 5.0);
|
setStoneLikeDiggingProperties(f->digging_properties, 5.0);
|
||||||
|
|
||||||
|
i = CONTENT_NC;
|
||||||
|
f = &content_features(i);
|
||||||
|
f->param_type = CPT_FACEDIR_SIMPLE;
|
||||||
|
f->setAllTextures("nc_side.png");
|
||||||
|
f->setTexture(5, "nc_front.png"); // Z-
|
||||||
|
f->setTexture(4, "nc_back.png"); // Z+
|
||||||
|
f->setInventoryTexture("nc_front.png");
|
||||||
|
f->dug_item = std::string("MaterialItem ")+itos(i)+" 1";
|
||||||
|
setStoneLikeDiggingProperties(f->digging_properties, 3.0);
|
||||||
|
|
||||||
|
i = CONTENT_NC_RB;
|
||||||
|
f = &content_features(i);
|
||||||
|
f->setAllTextures("nc_rb.png");
|
||||||
|
f->setInventoryTexture("nc_rb.png");
|
||||||
|
f->dug_item = std::string("MaterialItem ")+itos(i)+" 1";
|
||||||
|
setStoneLikeDiggingProperties(f->digging_properties, 3.0);
|
||||||
|
|
||||||
// NOTE: Remember to add frequently used stuff to the texture atlas in tile.cpp
|
// NOTE: Remember to add frequently used stuff to the texture atlas in tile.cpp
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Add MesePick to everything
|
Add MesePick to everything
|
||||||
*/
|
*/
|
||||||
for(u16 i=0; i<256; i++)
|
for(u16 i=0; i<=MAX_CONTENT; i++)
|
||||||
{
|
{
|
||||||
content_features(i).digging_properties.set("MesePick",
|
content_features(i).digging_properties.set("MesePick",
|
||||||
DiggingProperties(true, 0.0, 65535./1337));
|
DiggingProperties(true, 0.0, 65535./1337));
|
||||||
|
@ -70,6 +70,8 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
|
|||||||
#define CONTENT_BOOKSHELF 0x814 //29
|
#define CONTENT_BOOKSHELF 0x814 //29
|
||||||
#define CONTENT_JUNGLETREE 0x815
|
#define CONTENT_JUNGLETREE 0x815
|
||||||
#define CONTENT_JUNGLEGRASS 0x816
|
#define CONTENT_JUNGLEGRASS 0x816
|
||||||
|
#define CONTENT_NC 0x817
|
||||||
|
#define CONTENT_NC_RB 0x818
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -976,6 +976,40 @@ static void make_dungeon1(VoxelManipulator &vmanip, PseudoRandom &random)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void make_nc(VoxelManipulator &vmanip, PseudoRandom &random)
|
||||||
|
{
|
||||||
|
v3s16 dir;
|
||||||
|
u8 facedir_i = 0;
|
||||||
|
s32 r = random.range(0, 3);
|
||||||
|
if(r == 0){
|
||||||
|
dir = v3s16( 1, 0, 0);
|
||||||
|
facedir_i = 3;
|
||||||
|
}
|
||||||
|
if(r == 1){
|
||||||
|
dir = v3s16(-1, 0, 0);
|
||||||
|
facedir_i = 1;
|
||||||
|
}
|
||||||
|
if(r == 2){
|
||||||
|
dir = v3s16( 0, 0, 1);
|
||||||
|
facedir_i = 2;
|
||||||
|
}
|
||||||
|
if(r == 3){
|
||||||
|
dir = v3s16( 0, 0,-1);
|
||||||
|
facedir_i = 0;
|
||||||
|
}
|
||||||
|
v3s16 p = vmanip.m_area.MinEdge + v3s16(
|
||||||
|
16+random.range(0,15),
|
||||||
|
16+random.range(0,15),
|
||||||
|
16+random.range(0,15));
|
||||||
|
vmanip.m_data[vmanip.m_area.index(p)] = MapNode(CONTENT_NC, facedir_i);
|
||||||
|
u32 length = random.range(3,15);
|
||||||
|
for(u32 j=0; j<length; j++)
|
||||||
|
{
|
||||||
|
p -= dir;
|
||||||
|
vmanip.m_data[vmanip.m_area.index(p)] = MapNode(CONTENT_NC_RB);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Noise functions. Make sure seed is mangled differently in each one.
|
Noise functions. Make sure seed is mangled differently in each one.
|
||||||
*/
|
*/
|
||||||
@ -1872,6 +1906,17 @@ void make_block(BlockMakeData *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Add NC
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
PseudoRandom ncrandom(blockseed+9324342);
|
||||||
|
if(ncrandom.range(0, 1000) == 0 && blockpos.Y <= -3)
|
||||||
|
{
|
||||||
|
make_nc(vmanip, ncrandom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Add top and bottom side of water to transforming_liquid queue
|
Add top and bottom side of water to transforming_liquid queue
|
||||||
*/
|
*/
|
||||||
|
@ -391,6 +391,9 @@ inline v3s16 unpackDir(u8 b)
|
|||||||
facedir: CPT_FACEDIR_SIMPLE param1 value
|
facedir: CPT_FACEDIR_SIMPLE param1 value
|
||||||
dir: The face for which stuff is wanted
|
dir: The face for which stuff is wanted
|
||||||
return value: The face from which the stuff is actually found
|
return value: The face from which the stuff is actually found
|
||||||
|
|
||||||
|
NOTE: Currently this uses 2 bits for Z-,X-,Z+,X+, should there be Y+
|
||||||
|
and Y- too?
|
||||||
*/
|
*/
|
||||||
v3s16 facedir_rotate(u8 facedir, v3s16 dir);
|
v3s16 facedir_rotate(u8 facedir, v3s16 dir);
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ Player::Player():
|
|||||||
in_water(false),
|
in_water(false),
|
||||||
in_water_stable(false),
|
in_water_stable(false),
|
||||||
swimming_up(false),
|
swimming_up(false),
|
||||||
|
inventory_backup(NULL),
|
||||||
craftresult_is_preview(true),
|
craftresult_is_preview(true),
|
||||||
hp(20),
|
hp(20),
|
||||||
peer_id(PEER_ID_INEXISTENT),
|
peer_id(PEER_ID_INEXISTENT),
|
||||||
@ -43,6 +44,7 @@ Player::Player():
|
|||||||
|
|
||||||
Player::~Player()
|
Player::~Player()
|
||||||
{
|
{
|
||||||
|
delete inventory_backup;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::resetInventory()
|
void Player::resetInventory()
|
||||||
@ -107,7 +109,12 @@ void Player::serialize(std::ostream &os)
|
|||||||
|
|
||||||
os<<"PlayerArgsEnd\n";
|
os<<"PlayerArgsEnd\n";
|
||||||
|
|
||||||
inventory.serialize(os);
|
// If actual inventory is backed up due to creative mode, save it
|
||||||
|
// instead of the dummy creative mode inventory
|
||||||
|
if(inventory_backup)
|
||||||
|
inventory_backup->serialize(os);
|
||||||
|
else
|
||||||
|
inventory.serialize(os);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::deSerialize(std::istream &is)
|
void Player::deSerialize(std::istream &is)
|
||||||
|
@ -121,6 +121,8 @@ public:
|
|||||||
bool swimming_up;
|
bool swimming_up;
|
||||||
|
|
||||||
Inventory inventory;
|
Inventory inventory;
|
||||||
|
// Actual inventory is backed up here when creative mode is used
|
||||||
|
Inventory *inventory_backup;
|
||||||
|
|
||||||
bool craftresult_is_preview;
|
bool craftresult_is_preview;
|
||||||
|
|
||||||
|
@ -4130,6 +4130,11 @@ Player *Server::emergePlayer(const char *name, const char *password, u16 peer_id
|
|||||||
// Reset inventory to creative if in creative mode
|
// Reset inventory to creative if in creative mode
|
||||||
if(g_settings.getBool("creative_mode"))
|
if(g_settings.getBool("creative_mode"))
|
||||||
{
|
{
|
||||||
|
// Warning: double code below
|
||||||
|
// Backup actual inventory
|
||||||
|
player->inventory_backup = new Inventory();
|
||||||
|
*(player->inventory_backup) = player->inventory;
|
||||||
|
// Set creative inventory
|
||||||
craft_set_creative_inventory(player);
|
craft_set_creative_inventory(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4183,6 +4188,11 @@ Player *Server::emergePlayer(const char *name, const char *password, u16 peer_id
|
|||||||
|
|
||||||
if(g_settings.getBool("creative_mode"))
|
if(g_settings.getBool("creative_mode"))
|
||||||
{
|
{
|
||||||
|
// Warning: double code above
|
||||||
|
// Backup actual inventory
|
||||||
|
player->inventory_backup = new Inventory();
|
||||||
|
*(player->inventory_backup) = player->inventory;
|
||||||
|
// Set creative inventory
|
||||||
craft_set_creative_inventory(player);
|
craft_set_creative_inventory(player);
|
||||||
}
|
}
|
||||||
else if(g_settings.getBool("give_initial_stuff"))
|
else if(g_settings.getBool("give_initial_stuff"))
|
||||||
|
Loading…
Reference in New Issue
Block a user