Code:
public static boolean useTabTeleport(final Player player, final int itemId) {
if (itemId < 8007 || itemId > 8007 + TABS.length - 1)
return false;
if (useTeleTab(player, TABS_TILE[itemId - 8007]))
player.getInventory().deleteItem(itemId, 1);
return true;
}
Code:
public static boolean useTeleTab(final Player player, final WorldTile tile) {
if (!player.getControllerManager().processItemTeleport(tile))
return false;
player.lock();
player.setNextAnimation(new Animation(9597));
player.setNextGraphics(new Graphics(1680));
WorldTasksManager.schedule(new WorldTask() {
int stage;
@Override
public void run() {
if (stage == 0) {
player.setNextAnimation(new Animation(4731));
stage = 1;
} else if (stage == 1) {
WorldTile teleTile = tile;
for (int trycount = 0; trycount < 10; trycount++) {
teleTile = new WorldTile(tile, 2);
if (World.isTileFree(tile.getPlane(), teleTile.getX(), teleTile.getY(), player.getSize()))
break;
teleTile = tile;
}
player.setNextWorldTile(teleTile);
player.getControllerManager().magicTeleported(ITEM_TELEPORT);
if (player.getControllerManager().getController() == null)
teleControlersCheck(player, teleTile);
player.setNextFaceWorldTile(new WorldTile(teleTile.getX(), teleTile.getY() - 1, teleTile.getPlane()));
player.setDirection(6);
player.setNextAnimation(new Animation(-1));
stage = 2;
} else if (stage == 2) {
player.resetReceivedHits();
player.unlock();
stop();
}
}
}, 2, 1);
return true;
}
Code:
private final static WorldTile[] TABS_TILE = { new WorldTile(3217, 3426, 0), new WorldTile(3222, 3218, 0), new WorldTile(2965, 3379, 0), new WorldTile(2758, 3478, 0), new WorldTile(2660, 3306, 0) };