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.9 kB · 130 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130#include "stdafx.h"#include "net.minecraft.world.h"#include "net.minecraft.world.damagesource.h"#include "net.minecraft.world.effect.h"#include "net.minecraft.world.entity.h"#include "net.minecraft.world.level.h"#include "net.minecraft.world.level.tile.h"#include "net.minecraft.world.phys.h"#include "WitherSkull.h"
WitherSkull::WitherSkull(Level *level) : Fireball(level){ defineSynchedData();
setSize(5 / 16.0f, 5 / 16.0f);}
WitherSkull::WitherSkull(Level *level, shared_ptr<LivingEntity> mob, double xa, double ya, double za) : Fireball(level, mob, xa, ya, za){ defineSynchedData();
setSize(5 / 16.0f, 5 / 16.0f);}
float WitherSkull::getInertia(){ return isDangerous() ? 0.73f : Fireball::getInertia();}
WitherSkull::WitherSkull(Level *level, double x, double y, double z, double xa, double ya, double za) : Fireball(level, x, y, z, xa, ya, za){ defineSynchedData();
setSize(5 / 16.0f, 5 / 16.0f);}
bool WitherSkull::isOnFire(){ return false;}
float WitherSkull::getTileExplosionResistance(Explosion *explosion, Level *level, int x, int y, int z, Tile *tile){ float result = Fireball::getTileExplosionResistance(explosion, level, x, y, z, tile);
if (isDangerous() && tile != Tile::unbreakable && tile != Tile::endPortalTile && tile != Tile::endPortalFrameTile) { result = min(0.8f, result); }
return result;}
void WitherSkull::onHit(HitResult *res){ if (!level->isClientSide) { if (res->entity != NULL) { if (owner != NULL) { DamageSource *damageSource = DamageSource::mobAttack(owner); if (res->entity->hurt(damageSource, 8)) { if (!res->entity->isAlive()) { owner->heal(5); } } delete damageSource; } else { res->entity->hurt(DamageSource::magic, 5); } if ( res->entity->instanceof(eTYPE_LIVINGENTITY) ) { int witherSeconds = 0; if (level->difficulty <= Difficulty::EASY) { // Nothing } else if (level->difficulty == Difficulty::NORMAL) { witherSeconds = 10; } else if (level->difficulty == Difficulty::HARD) { witherSeconds = 40; } if (witherSeconds > 0) { dynamic_pointer_cast<LivingEntity>( res->entity )->addEffect(new MobEffectInstance(MobEffect::wither->id, SharedConstants::TICKS_PER_SECOND * witherSeconds, 1)); } } } level->explode(shared_from_this(), x, y, z, 1, false, level->getGameRules()->getBoolean(GameRules::RULE_MOBGRIEFING)); remove(); }}
bool WitherSkull::isPickable(){ return false;}
bool WitherSkull::hurt(DamageSource *source, float damage){ return false;}
void WitherSkull::defineSynchedData(){ entityData->define(DATA_DANGEROUS, (byte) 0);}
bool WitherSkull::isDangerous(){ return entityData->getByte(DATA_DANGEROUS) == 1;}
void WitherSkull::setDangerous(bool value){ entityData->set(DATA_DANGEROUS, value ? (byte) 1 : (byte) 0);}
bool WitherSkull::shouldBurn(){ return false;}