the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "net.minecraft.world.phys.h"
3#include "net.minecraft.world.level.h"
4#include "net.minecraft.world.level.tile.h"
5#include "net.minecraft.world.level.material.h"
6#include "net.minecraft.world.entity.player.h"
7#include "WaterLilyTileItem.h"
8
9WaterLilyTileItem::WaterLilyTileItem(int id) : ColoredTileItem(id, false)
10{
11}
12
13bool WaterLilyTileItem::TestUse(shared_ptr<ItemInstance> itemInstance, Level *level, shared_ptr<Player> player)
14{
15 HitResult *hr = getPlayerPOVHitResult(level, player, true);
16 if (hr == NULL) return false;
17
18 if (hr->type == HitResult::TILE)
19 {
20 int xt = hr->x;
21 int yt = hr->y;
22 int zt = hr->z;
23 if (!level->mayInteract(player, xt, yt, zt, 0))
24 {
25 delete hr;
26 return false;
27 }
28 if (!player->mayUseItemAt(xt, yt, zt, hr->f, itemInstance))
29 {
30 delete hr;
31 return false;
32 }
33
34 delete hr;
35 if (level->getMaterial(xt, yt, zt) == Material::water && level->getData(xt, yt, zt) == 0 && level->isEmptyTile(xt, yt + 1, zt))
36 {
37 return true;
38 }
39 }
40 else
41 {
42 delete hr;
43 }
44 return false;
45}
46
47shared_ptr<ItemInstance> WaterLilyTileItem::use(shared_ptr<ItemInstance> itemInstance, Level *level, shared_ptr<Player> player)
48{
49 HitResult *hr = getPlayerPOVHitResult(level, player, true);
50 if (hr == NULL) return itemInstance;
51
52 if (hr->type == HitResult::TILE)
53 {
54 int xt = hr->x;
55 int yt = hr->y;
56 int zt = hr->z;
57 if (!level->mayInteract(player, xt, yt, zt, 0))
58 {
59 delete hr;
60 return itemInstance;
61 }
62 if (!player->mayUseItemAt(xt, yt, zt, hr->f, itemInstance))
63 {
64 delete hr;
65 return itemInstance;
66 }
67
68 delete hr;
69 if (level->getMaterial(xt, yt, zt) == Material::water && level->getData(xt, yt, zt) == 0 && level->isEmptyTile(xt, yt + 1, zt))
70 {
71 level->setTileAndUpdate(xt, yt + 1, zt, Tile::waterLily->id);
72 if (!player->abilities.instabuild)
73 {
74 itemInstance->count--;
75 }
76 }
77 }
78 else
79 {
80 delete hr;
81 }
82 return itemInstance;
83}
84
85int WaterLilyTileItem::getColor(int data, int spriteLayer)
86{
87 return Tile::waterLily->getColor(data);
88}