]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/server/server_item.c
Implement node breaking
[dragonblocks_alpha.git] / src / server / server_item.c
1 #include "node.h"
2 #include "server/server_item.h"
3 #include "server/server_terrain.h"
4
5 static void use_dig(__attribute__((unused)) ServerPlayer *player, ItemStack *stack, bool pointed, v3s32 pos)
6 {
7         if (!pointed)
8                 return;
9
10         NodeType node = terrain_get_node(server_terrain, pos).type;
11
12         if (node == NODE_UNLOADED)
13                 return;
14
15         if (!(node_defs[node].dig_class & item_defs[stack->type].dig_class))
16                 return;
17
18         terrain_set_node(server_terrain, pos,
19                 terrain_node_create(NODE_AIR, (Blob) {0, NULL}),
20                 false, NULL);
21 }
22
23 ServerItemDef server_item_defs[COUNT_ITEM] = {
24         // unknown
25         {
26                 .use = NULL,
27         },
28         // none
29         {
30                 .use = NULL,
31         },
32         // pickaxe
33         {
34                 .use = &use_dig,
35         },
36         // axe
37         {
38                 .use = &use_dig,
39         },
40 };