SHHook(void*, Level$$playSound, Level* self, Entity* entity, void* string, float a, float b) {
	if(inArrowTick)
		arrowHit = true;
	
	return _Level$$playSound(self, entity, string, a, b);
}

SHHook(Entity*, LocalPlayer$$LocalPlayer, Entity* self, Minecraft* minecraft, Level* newLevel, User* user, int a, bool b) {
	level = newLevel;
	return _LocalPlayer$$LocalPlayer(self, minecraft, newLevel, user, a, b);
}

SHConstructor {
	SHAppVersion("0.6.1.0") {
		SHStub(SHAddr(0xa2e58), Entity$$remove);
		SHStub(SHAddr(0xdf8a0), Level$$explode);
		SHStub(SHAddr(0xb8e3c), Arrow$$tick);
		SHStub(SHAddr(0xddae8), Level$$playSound);
		SHStub(SHAddr(0x52ca0), LocalPlayer$$LocalPlayer);
	}
	SHAppVersion("0.7.1.0") {
		SHStub(SHAddr(0xb1a64), Entity$$remove);
		SHStub(SHAddr(0xf0e48), Level$$explode);
		SHStub(SHAddr(0xc87e0), Arrow$$tick);
		SHStub(SHAddr(0xeec88), Level$$playSound);
		SHStub(SHAddr(0x5abc0), LocalPlayer$$LocalPlayer);
	}
	SHOtherVersion {
		return;
	}
SHHook(void*, Level$$playSound, Level* self, Entity* entity, void* string, float a, float b) {
	if(inArrowTick)
		arrowHit = true;
	
	return _Level$$playSound(self, entity, string, a, b);
}

SHHook(Entity*, LocalPlayer$$LocalPlayer, Entity* self, Minecraft* minecraft, Level* newLevel, User* user, int a, bool b) {
	level = newLevel;
	return _LocalPlayer$$LocalPlayer(self, minecraft, newLevel, user, a, b);
}

SHConstructor {
	SHAppVersion("0.7.3.0") {
		SHStub(SHAddr(0xb51d8), Entity$$remove);
		SHStub(SHAddr(0xf4828), Level$$explode);
		SHStub(SHAddr(0xcbfbc), Arrow$$tick);
		SHStub(SHAddr(0xf2668), Level$$playSound);
		SHStub(SHAddr(0x5de5c), LocalPlayer$$LocalPlayer);
	}
	SHAppVersion("0.7.2.0") {
		SHStub(SHAddr(0xb51d8), Entity$$remove);
		SHStub(SHAddr(0xf4828), Level$$explode);
		SHStub(SHAddr(0xcbfbc), Arrow$$tick);
		SHStub(SHAddr(0xf2668), Level$$playSound);
		SHStub(SHAddr(0x5de5c), LocalPlayer$$LocalPlayer);
	}
	SHAppVersion("0.7.1.0") {
		SHStub(SHAddr(0xb1a64), Entity$$remove);
		SHStub(SHAddr(0xf0e48), Level$$explode);
#include <stubhook.h>

/* Zombies move twice as fast. Scary. */
SHHook(float, Zombie$$getWalkingSpeedModifier, void* self) {
	return 2 * _Zombie$$getWalkingSpeedModifier(self);
}

/* One does not simply harm the undead. */
SHHook(int, Zombie$$getDamageAfterArmorAbsorb, void* self, int amount) {
	return 0;
}

SHConstructor {
	SHAppVersion("0.7.1.0") {
		SHPtrHook(SHAddr(0x2045bc), Zombie$$getWalkingSpeedModifier);
		SHPtrHook(SHAddr(0x2045c0), Zombie$$getDamageAfterArmorAbsorb);
	}
	SHOtherVersion {
		return;
	}
}
return _LocalPlayer$$LocalPlayer(self,mcpe,newLevel,user,a,b);

}

//to make all blocks explode and not just some
SHHook(float, Tile$$getExplosionResistance, void *self, void *entity) {
    
    return 0.0f;
    
}

SHConstructor {

SHAppVersion("0.7.1.0") {

    SHStub(SHAddr(0xF0E48), Level$$explode);
    SHStub(SHAddr(0x5abc0), LocalPlayer$$LocalPlayer);
    SHStub(SHAddr(0x186B4C), SurvivalMode$$continueDestroyBlock);
    SHStub(SHAddr(0x10CFF0), Tile$$getExplosionResistance);

}

SHOtherVersion {

    return;

}
    
    SHApplyHook(SurvivalMode$$continueDestroyBlock);
    SHApplyHook(LocalPlayer$$LocalPlayer);
    SHApplyHook(Tile$$getExplosionResistance);