private Geometry createFace(Direction dir){
		Geometry geo = new Geometry(dir.name(), quad);
		geo.setMaterial(blockType.getMaterial());
		if(isTransparent()){
			geo.setQueueBucket(Bucket.Transparent);
		}
		geometries[dir.ordinal()] = geo;
		
		switch (dir) {
		case NORTH:
			geo.setLocalTranslation(centerX+SIZE, centerY-SIZE, centerZ-SIZE);
			geo.rotate(0, 180*FastMath.DEG_TO_RAD, 0);
			break;
		case SOUTH:
			geo.setLocalTranslation(centerX, centerY-SIZE, centerZ);
			//South is already correct rotated
			break;
		case EAST:
			geo.setLocalTranslation(centerX+SIZE, centerY-SIZE, centerZ);
			geo.rotate(0, 90*FastMath.DEG_TO_RAD, 0);
			break;
		case WEST:
			geo.setLocalTranslation(centerX, centerY-SIZE, centerZ-SIZE);
			geo.rotate(0, -90*FastMath.DEG_TO_RAD, 0);
			break;
		case UP:
			geo.setLocalTranslation(centerX, centerY, centerZ);
			geo.rotate(-90*FastMath.DEG_TO_RAD, 0, 0);
			break;
		case DOWN:
			geo.setLocalTranslation(centerX, centerY-SIZE, centerZ-SIZE);
			geo.rotate(90*FastMath.DEG_TO_RAD, 0, 0);
			break;
		}

		//Add physics to the geometry
		RigidBodyControl physics = new RigidBodyControl(0.0f);
		geo.addControl(physics);
		physicsSpace.add(physics);
		
		geo.setUserData("x", x);
		geo.setUserData("y", y);
		geo.setUserData("z", z);
		geo.setUserData("body", physics);
		
		return geo;
	}