Can drop pets and all that good stuff, but they simply don't follow! I'm still new to this type of thing, so would someone please give a hand?

Here's my Pethandler.java
Code:
package ab.model.npcs;

import ab.Server;
import ab.clip.region.Region;
import ab.model.players.Player;
import ab.model.players.PlayerSave;

/**
 *
 * @author DF
 *
 **/

public class PetHandler {

	public static final int RATS_NEEDED_TO_GROW = 25;

	private static enum Pets {

		/*
		 * KITTEN_A(1555, 761), KITTEN_B(1556, 762), KITTEN_C(1557, 763),
		 * KITTEN_D(1558, 764), KITTEN_E(1559, 765), KITTEN_F(1560, 766),
		 * CAT_A(1561, 768), CAT_B(1562, 769), CAT_C(1563, 770), CAT_D(1564,
		 * 771), CAT_E(1565, 772), CAT_F(1566, 773),
		 */
		GRAARDOR(12650, 6632), KREE(12649, 6631), ZILLY(12651, 6633), TSUT(12652, 4449), BARRELCHEST(15567, 4442), PRIME(12644, 4436), REX(12645,
				6641), SUPREME(12643, 6626), CHAOS(15568, 2055), KBD(12653, 4446), KRAKEN(12655, 6640), ABYSSAL_SIRE(13262, 5883), CALLISTO(15572,
						5558), MOLE(15571, 6635), ZULRAH_GREEN(12921, 2127), ZULRAH_RED(12939,
								2128), ZULRAH_BLUE(12940, 2129), JAD(13209, 5892), VETION(15573, 5536), VENENATIS(8135, 5557), HELLPUPPY(13247, 3099);
		private int itemId, npcId;

		private Pets(int itemId, int npcId) {
			this.itemId = itemId;
			this.npcId = npcId;
		}
	}

	public static Pets forItem(int id) {
		for (Pets t : Pets.values()) {
			if (t.itemId == id) {
				return t;
			}
		}
		return null;
	}

	public static Pets forNpc(int id) {
		for (Pets t : Pets.values()) {
			if (t.npcId == id) {
				return t;
			}
		}
		return null;
	}

	public static int getItemIdForNpcId(int npcId) {
		return forNpc(npcId).itemId;
	}

	public static boolean spawnPet(Player c, int itemId, int slot, boolean ignore) {
		Pets pets = forItem(itemId);
		if (pets != null) {
			int npcId = pets.npcId;
			if (c.hasNpc && !ignore) {
				c.sendMessage("You already have a follower!");
				return true;
			}
			int offsetX = 0;
			int offsetY = 0;
			if (Region.getClipping(c.getX() - 1, c.getY(), c.heightLevel, -1, 0)) {
				offsetX = -1;
			} else if (Region.getClipping(c.getX() + 1, c.getY(), c.heightLevel, 1, 0)) {
				offsetX = 1;
			} else if (Region.getClipping(c.getX(), c.getY() - 1, c.heightLevel, 0, -1)) {
				offsetY = -1;
			} else if (Region.getClipping(c.getX(), c.getY() + 1, c.heightLevel, 0, 1)) {
				offsetY = 1;
			}
			Server.npcHandler.spawnNpc3(c, npcId, c.absX + offsetX, c.absY + offsetY, c.heightLevel, 0, 120, 25, 200, 200, true, false, true);

			// ADD FOLLOWING HERE
			if (!ignore) {
				c.getItems().deleteItem(itemId, slot, c.playerItemsN[slot]);
				c.hasNpc = true;
				c.summonId = itemId;
				PlayerSave.saveGame(c);
			}
			return true;
		} else {
			return false;
		}
	}

	public static boolean pickupPet(Player c, int npcId) {
		Pets pets = forNpc(npcId);
		if (pets != null) {
			if (Server.npcHandler.npcs[c.rememberNpcIndex].spawnedBy == c.playerId) {
				int itemId = pets.itemId;
				if (c.getItems().freeSlots() > 0) {
					Server.npcHandler.npcs[c.rememberNpcIndex].absX = 0;
					Server.npcHandler.npcs[c.rememberNpcIndex].absY = 0;
					Server.npcHandler.npcs[c.rememberNpcIndex] = null;
					c.startAnimation(827);
					c.getItems().addItem(itemId, 1);
					c.summonId = -1;
					c.hasNpc = false;
					c.sendMessage("You pick up your pet.");
				} else {
					c.sendMessage("You do not have enough inventory space to do this.");
				}
			} else {
				c.sendMessage("This is not your pet.");
			}
			return true;
		} else {
			return false;
		}
	}

	public static boolean talktoPet(Player c, int npcId) {
		Pets pets = forNpc(npcId);
		if (pets != null) {
			if (NPCHandler.npcs[c.rememberNpcIndex].spawnedBy == c.playerId) {
				switch (npcId) {
				case 4441:
					c.getDH().sendDialogues(14000, 3200);
					break;
				case 4439:
					c.getDH().sendDialogues(14003, 3200);
					break;
				case 4440:
					c.getDH().sendDialogues(14006, 3200);
					break;
				case 4446:
					c.getDH().sendDialogues(14009, 3200);
					break;
				case 4442:
					c.getDH().sendDialogues(14011, 3200);
					break;
				case 4438:
					c.getDH().sendDialogues(14014, 3200);
					break;
				case 4435:
					c.getDH().sendDialogues(14017, 4435);
					break;
				}
			} else {
				c.sendMessage("This is not your pet.");
			}
			return true;
		} else {
			return false;
		}
	}

}
bump?