Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
2.7 kB · 136 lines
C++
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136#include "stdafx.h"#include <iostream>#include "InputOutputStream.h"#include "net.minecraft.world.level.h"#include "PacketListener.h"#include "ExplodePacket.h"
ExplodePacket::ExplodePacket() { x = 0; y = 0; z = 0; r = 0.0f; m_bKnockbackOnly = false; knockbackX = 0.0f; knockbackY = 0.0f; knockbackZ = 0.0f;}
ExplodePacket::ExplodePacket(double x, double y, double z, float r, unordered_set<TilePos, TilePosKeyHash, TilePosKeyEq> *toBlow, Vec3 *knockback, bool knockBackOnly){ this->x = x; this->y = y; this->z = z; this->r = r; m_bKnockbackOnly = knockBackOnly;
if(toBlow != NULL) { this->toBlow.assign(toBlow->begin(),toBlow->end()); //for( AUTO_VAR(it, toBlow->begin()); it != toBlow->end(); it++ ) //{ // this->toBlow.push_back(*it); //} }
if (knockback != NULL) { knockbackX = (float) knockback->x; knockbackY = (float) knockback->y; knockbackZ = (float) knockback->z; }}
void ExplodePacket::read(DataInputStream *dis) //throws IOException { m_bKnockbackOnly = dis->readBoolean();
if(!m_bKnockbackOnly) { x = dis->readDouble(); y = dis->readDouble(); z = dis->readDouble(); r = dis->readFloat(); int count = dis->readInt();
int xp = (int)x; int yp = (int)y; int zp = (int)z; for (int i=0; i<count; i++) { int xx = ((signed char)dis->readByte())+xp; int yy = ((signed char)dis->readByte())+yp; int zz = ((signed char)dis->readByte())+zp; toBlow.push_back( TilePos(xx, yy, zz) ); } }
knockbackX = dis->readFloat(); knockbackY = dis->readFloat(); knockbackZ = dis->readFloat();}
void ExplodePacket::write(DataOutputStream *dos) //throws IOException { dos->writeBoolean(m_bKnockbackOnly);
if(!m_bKnockbackOnly) { dos->writeDouble(x); dos->writeDouble(y); dos->writeDouble(z); dos->writeFloat(r); dos->writeInt((int)toBlow.size());
int xp = (int)x; int yp = (int)y; int zp = (int)z;
//(Myset::const_iterator it = c1.begin(); //it != c1.end(); ++it) for( AUTO_VAR(it, toBlow.begin()); it != toBlow.end(); it++ ) { TilePos tp = *it;
int xx = tp.x-xp; int yy = tp.y-yp; int zz = tp.z-zp; dos->writeByte(xx); dos->writeByte(yy); dos->writeByte(zz); } }
dos->writeFloat(knockbackX); dos->writeFloat(knockbackY); dos->writeFloat(knockbackZ);}
void ExplodePacket::handle(PacketListener *listener){ listener->handleExplosion(shared_from_this());}
int ExplodePacket::getEstimatedSize() { return 8*3+4+4+(int)toBlow.size()*3+12;}
float ExplodePacket::getKnockbackX(){ return knockbackX;}
float ExplodePacket::getKnockbackY(){ return knockbackY;}
float ExplodePacket::getKnockbackZ(){ return knockbackZ;}