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.
4.2 kB · 199 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199#include "stdafx.h"#include "net.minecraft.world.effect.h"
void MobEffectInstance::_init(int id, int duration, int amplifier){ this->id = id; this->duration = duration; this->amplifier = amplifier; splash = false; ambient = false; noCounter = false;}
MobEffectInstance::MobEffectInstance(int id){ _init(id, 0, 0);}
MobEffectInstance::MobEffectInstance(int id, int duration){ _init(id, duration, 0);}
MobEffectInstance::MobEffectInstance(int id, int duration, int amplifier){ _init(id,duration,amplifier);}
MobEffectInstance::MobEffectInstance(int id, int duration, int amplifier, bool ambient){ _init(id,duration,amplifier); this->ambient = ambient;}
MobEffectInstance::MobEffectInstance(MobEffectInstance *copy){ this->id = copy->id; this->duration = copy->duration; this->amplifier = copy->amplifier; this->splash = copy->splash; this->ambient = copy->ambient; this->noCounter = copy->noCounter;}
void MobEffectInstance::update(MobEffectInstance *takeOver){ if (id != takeOver->id) { app.DebugPrintf("This method should only be called for matching effects!"); } if (takeOver->amplifier > amplifier) { amplifier = takeOver->amplifier; duration = takeOver->duration; } else if (takeOver->amplifier == amplifier && duration < takeOver->duration) { duration = takeOver->duration; } else if (!takeOver->ambient && ambient) { ambient = takeOver->ambient; }}
int MobEffectInstance::getId(){ return id;}
int MobEffectInstance::getDuration(){ return duration;}
int MobEffectInstance::getAmplifier(){ return amplifier;}
bool MobEffectInstance::isSplash(){ return splash;}
void MobEffectInstance::setSplash(bool splash){ this->splash = splash;}
bool MobEffectInstance::isAmbient(){ return ambient;}
/*** Runs the effect on a Mob target.* * @param target* @return True if the effect is still active.*/bool MobEffectInstance::tick(shared_ptr<LivingEntity> target){ if (duration > 0) { if (MobEffect::effects[id]->isDurationEffectTick(duration, amplifier)) { applyEffect(target); } tickDownDuration(); } return duration > 0;}
int MobEffectInstance::tickDownDuration(){ return --duration;}
void MobEffectInstance::applyEffect(shared_ptr<LivingEntity> mob){ if (duration > 0) { MobEffect::effects[id]->applyEffectTick(mob, amplifier); }}
int MobEffectInstance::getDescriptionId(){ return MobEffect::effects[id]->getDescriptionId();}
// 4J Addedint MobEffectInstance::getPostfixDescriptionId(){ return MobEffect::effects[id]->getPostfixDescriptionId();}
int MobEffectInstance::hashCode(){ //return id;
// 4J Stu - Changed this to return a value that represents id, amp and duration return (id & 0xff) | ( (amplifier & 0xff) << 8) | ( (duration & 0xffff) << 16);}
wstring MobEffectInstance::toString(){ wstring result = L"MobEffectInstance::toString - NON IMPLEMENTED OR LOCALISED FUNCTION"; //wstring result = ""; //if (getAmplifier() > 0) //{ // result = getDescriptionId() + " x " + (getAmplifier() + 1) + ", Duration: " + getDuration(); //} //else //{ // result = getDescriptionId() + ", Duration: " + getDuration(); //} //if (MobEffect.effects[id].isDisabled()) //{ // return "(" + result + ")"; //} return result;}
// Was bool equals(Object obj)bool MobEffectInstance::equals(MobEffectInstance *instance){ return id == instance->id && amplifier == instance->amplifier && duration == instance->duration && splash == instance->splash && ambient == instance->ambient;}
CompoundTag *MobEffectInstance::save(CompoundTag *tag){ tag->putByte(L"Id", (byte) getId()); tag->putByte(L"Amplifier", (byte) getAmplifier()); tag->putInt(L"Duration", getDuration()); tag->putBoolean(L"Ambient", isAmbient()); return tag;}
MobEffectInstance *MobEffectInstance::load(CompoundTag *tag){ int id = tag->getByte(L"Id"); int amplifier = tag->getByte(L"Amplifier"); int duration = tag->getInt(L"Duration"); boolean ambient = tag->getBoolean(L"Ambient"); return new MobEffectInstance(id, duration, amplifier, ambient);}
void MobEffectInstance::setNoCounter(bool noCounter){ this->noCounter = noCounter;}
bool MobEffectInstance::isNoCounter(){ return noCounter;}