the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 142 lines 2.6 kB view raw
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}