var riddenAnimal = null;
var ANIMAL_SPEED = 0.5;
var ANIMAL_VERTICAL_SPEED = 0.5;
function attackHook(player, entity) {
	preventDefault();
	rideAnimal(player, entity);
	if (entity == riddenAnimal) {
		riddenAnimal = null;
	} else {
		riddenAnimal = entity;
	}
}

function useItem(x, y, z, itemId, blockId) {
	if (itemId == 58) {
		riddenAnimal = null;
	}
}

function modTick() {
	if (riddenAnimal == null) return;
	var playerYaw = getYaw();
	var playerPitch = getPitch();
	setRot(riddenAnimal, playerYaw, 0);
	//todo: check if player is still mounted so we don't overwrite memory for lolz
	var itemInHand = getCarriedItem();
	if (itemInHand == 14) { //coal ore
		var velX = -1 * Math.sin(playerYaw / 180 * Math.PI) * ANIMAL_SPEED;
		var velZ = Math.cos(playerYaw / 180 * Math.PI) * ANIMAL_SPEED;
		var velY = Math.sin((playerPitch - 180) / 180 * Math.PI) * ANIMAL_VERTICAL_SPEED;
		setVelX(riddenAnimal, velX);
		setVelY(riddenAnimal, velY);
		setVelZ(riddenAnimal, velZ);
	} else {
		setVelX(riddenAnimal, 0);
		setVelY(riddenAnimal, 0);
		setVelZ(riddenAnimal, 0);
	}
}

function leaveGame() {
	riddenAnimal = null; //BlockLauncher-specific hook, workaround for BlockLauncher not reloading scripts after entering world
}