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 "EnchantmentTableEntity.h"
3#include "net.minecraft.world.entity.player.h"
4#include "net.minecraft.world.level.h"
5
6
7
8EnchantmentTableEntity::EnchantmentTableEntity()
9{
10 random = new Random();
11
12 time = 0;
13 flip = 0.0f;
14 oFlip = 0.0f;
15 flipT = 0.0f;
16 flipA = 0.0f;
17 open = 0.0f;
18 oOpen = 0.0f;
19 rot = 0.0f;
20 oRot = 0.0f;
21 tRot = 0.0f;
22 name = L"";
23}
24
25EnchantmentTableEntity::~EnchantmentTableEntity()
26{
27 delete random;
28}
29
30void EnchantmentTableEntity::save(CompoundTag *base)
31{
32 TileEntity::save(base);
33 if (hasCustomName()) base->putString(L"CustomName", name);
34}
35
36void EnchantmentTableEntity::load(CompoundTag *base)
37{
38 TileEntity::load(base);
39 if (base->contains(L"CustomName")) name = base->getString(L"CustomName");
40}
41
42void EnchantmentTableEntity::tick()
43{
44 TileEntity::tick();
45 oOpen = open;
46 oRot = rot;
47
48 shared_ptr<Player> player = level->getNearestPlayer(x + 0.5f, y + 0.5f, z + 0.5f, 3);
49 if (player != NULL)
50 {
51 double xd = player->x - (x + 0.5f);
52 double zd = player->z - (z + 0.5f);
53
54 tRot = (float) atan2(zd, xd);
55
56 open += 0.1f;
57
58 if (open < 0.5f || random->nextInt(40) == 0)
59 {
60 float old = flipT;
61 do
62 {
63 flipT += random->nextInt(4) - random->nextInt(4);
64 } while (old == flipT);
65 }
66
67 }
68 else
69 {
70 tRot += 0.02f;
71 open -= 0.1f;
72 }
73
74 while (rot >= PI)
75 rot -= PI * 2;
76 while (rot < -PI)
77 rot += PI * 2;
78 while (tRot >= PI)
79 tRot -= PI * 2;
80 while (tRot < -PI)
81 tRot += PI * 2;
82 float rotDir = tRot - rot;
83 while (rotDir >= PI)
84 rotDir -= PI * 2;
85 while (rotDir < -PI)
86 rotDir += PI * 2;
87
88 rot += rotDir * 0.4f;
89
90 if (open < 0) open = 0;
91 if (open > 1) open = 1;
92
93 time++;
94 oFlip = flip;
95
96 float diff = (flipT - flip) * 0.4f;
97 float max = 0.2f;
98 if (diff < -max) diff = -max;
99 if (diff > +max) diff = +max;
100 flipA += (diff - flipA) * 0.9f;
101
102 flip = flip + flipA;
103}
104
105wstring EnchantmentTableEntity::getName()
106{
107 return hasCustomName() ? name : app.GetString(IDS_ENCHANT);
108}
109
110wstring EnchantmentTableEntity::getCustomName()
111{
112 return hasCustomName() ? name : L"";
113}
114
115bool EnchantmentTableEntity::hasCustomName()
116{
117 return !name.empty();
118}
119
120void EnchantmentTableEntity::setCustomName(const wstring &name)
121{
122 this->name = name;
123}
124
125shared_ptr<TileEntity> EnchantmentTableEntity::clone()
126{
127 shared_ptr<EnchantmentTableEntity> result = shared_ptr<EnchantmentTableEntity>( new EnchantmentTableEntity() );
128 TileEntity::clone(result);
129
130 result->time = time;
131 result->flip = flip;
132 result->oFlip = oFlip;
133 result->flipT = flipT;
134 result->flipA = flipA;
135 result->open = open;
136 result->oOpen = oOpen;
137 result->rot = rot;
138 result->oRot = oRot;
139 result->tRot = tRot;
140
141 return result;
142}